📢 공지합니다
이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.
서브쿼리
하나의 쿼리안에 존재하는 또 다른 쿼리이다. 바깥에 있는 쿼리를 메인 쿼리 안에 있는 쿼리를 서브쿼리이다.
SELECT, FROM, WHERE, HAVING, ORDER BY, INSERT문의 VALUES절, UPDATE문의 SET 절
스칼라 서브쿼리
- 주로 SELECT절에 위치하지만 컬럼이 올 수 있는 대부분 위치에 사용할 수 있다.
- 컬럼 대신 사용되므로 반드시 하나의 값만을 반환해야 한다.
- UPDATE 문의 SET 절, ORDER BY 절에 올 수 있다.
인라인 뷰
FROM 절 등 테이블명이 올 수 있는 위치에 사용이 가능하다.
중첩 서브쿼리
- WHERE 절과 HAVING 절에 사용할 수 있다.
비연관 서브쿼리: 서브쿼리 내에 메인 쿼리와 관계를 맺지 않음
(주로 메인쿼리에 값을 제공하기 위한 목적으로 사용한다.)
연관 서브쿼리: 서브쿼리 내에 메인 쿼리와 관계를 맺음
- 단일 행 서브쿼리: 서브쿼리가 1건 이하의 데이터를 반환, 단일 행 비교 연산자와 함께 사용
EX) =, <, >, <=, >= <>
- 다중 행 서브쿼리: 서브쿼리가 여러 건의 데이터를 반환, 다중 행 비교 연산자와 함께 사용 (단일행 비교도 가능)
EX) IN, ALL, SOME, EXISTS
- 다중 컬럼 서브쿼리: 서브쿼리가 여러 컬럼의 데이터를 반환
- 다중 컬럼 서브쿼리는 서브쿼리의 결과로 여러개의 컬럼이 반환되어 메인 쿼리의 조건과 동시에 비교되는 것을 의미하는데 SQL은 지원안한다.
뷰
- 특정 SELECT 문에 이름을 붙여서 재사용이 가능하도록 저장해놓은 오브젝트이다. 즉 가상테이블이다.
- 이것은 실제 데이터를 저장하지는 않고 해당 데이터를 조회해오는 SELECT 문만 가지고 있다.
독립성
테이블 스키마가 변경되었을 경우 어플리케이션은 변경하지 않고 관련 뷰만 수정한다.
보안성
보안이 필요한 컬럼을 가진 테이블일 경우 해당 컬럼을 제외한 별도의 뷰를 생성하여 제공함으로써 보안을 유지할 수 있다. 뷰 사용자는 뷰에서 제공하지 않는 테이블의 컬럼을 사용할 수 있다.
편리성
복잡한 쿼리 구문을 뷰명으로 단축시킴으로써 가독성을 높이고 편리하게 사용할 수 있다.
집합연산자
UNION ALL /UNION
- 말그대로 합집합이다.
- 이때 전자는 중복되는 행도 중복으로 출력하지만 후자는 중복되는 행을 제거 후 출력한다.
- 하지만 후자는 DB 내부적으로 중복된 행을 제거하는 과정을 거쳐하므로 성능상 불리하다.
- 헤드의 명칭은 첫 번째 SQL의 컬럼명 혹은 ALIAS를 따르게 된다.
- ORDER BY 절은 마지막 쿼리문에 쓴다.(294P)
INTERSECT
- 교집합이다.
MINUS/EXCEPT
- 여집합이다.
- SELECT * FROM A MINUS(EXCEPT) SELECT * FROM B 있으면 A 중심의 여집합이 된다.
그룹 함수
데이터를 GROUP BY 하여 나타낼 수 있는 데이터를 구하는 함수이다. 이것은 집계함수와 소계함수로 나눌 수 있다.
ROLLUP(185P)
- 소그룹 간의 소계 및 총계를 계산하는 함수이다.
- 함수의 인자로 주어진 컬럼의 순서에따라 결과가 달라진다.
- ROLLUP(A): A로 그룹핑, 총합계
- ROLLUP(A,B): A B로 그룹핑, A로 그룹핑, 총합계
- ROLLUP(A,B,C): A,B,C로 그룹핑, A B로 그룹핑, A로 그룹핑, 총합계
- 인자로 주어진 컬럼의 순서에 따라 결과가 달라진다.
CUBE(194P)
- 소그룹 간의 총계를 다차원적으로 계산할 수 있는 함수이다.
- CUBE(A): A로 그룹핑, 총합계
- CUBE(A,B): A B로 그룹핑, A로 그룹핑,B로 그룹핑, 총합계
- CUBE(A,B,C): A,B,C로 그룹핑, A B로 그룹핑, A C로 그룹핑, B C로 그룹핑, A로 그룹핑,B로 그룹핑, C로 그룹핑 총합계
- 인자로 주어진 컬럼의 순서에 따라 결과가 달라지지 않는다.
GROUPING SETS(203P)
- 특정 항목에 대한 소계를 계산하는 함수이다.
- GROUPING SETS(A,B): A로 그룹핑, B로 그룹핑
- GROUPING SETS(A,B,()): A로 그룹핑, B로 그룹핑, 총합계
- GROUPING SETS(A,ROLLUP(B)): A로 그룹핑, B로 그룹핑, 총합계
- GROUPING SETS(A,ROLLUP(B,C)): A로 그룹핑, BC로 그룹핑, B로 그룹핑, 총합계
- GROUPING SETS(A,B,ROLLUP(C)): A로 그룹핑, B로 그룹핑, C로 그룹핑, 총합계
GROUPING(215P)
- 이것은 위 3가지와 함께 쓰이며 소계를 나타내는 ROW를 구분할 수 있게 해준다.
- 원하는 위치에 원하는 텍스트를 출력할 수 있다.
CH4 관리구문 (1) | 2023.08.28 |
---|---|
CH3 SQL 활용(2) (0) | 2023.08.22 |
CH2 SQL 기본(2) (0) | 2023.08.15 |
CH2 SQL 기본 (0) | 2023.08.15 |
CH1 데이터 모델과 SQL (0) | 2023.08.10 |