Hello World/SQLD

[2-2 SQL 활용]

혼복필 2025. 10. 15. 17:48
728x90
SMALL

제1절 서브쿼리(Subquery)

- 연관 서브쿼리 : 서브쿼리가 메인 쿼리의 칼럼을 포함함  
- 비연관 서브쿼리 : 메인 쿼리에 값을 제공하기 위한 목적  
- 단일 행 서브쿼리 : 실행 결과가 항상 1건 이하이며 단일 행 비교 연산자( = , < , > , <= , >= , <> )와 함께 사용  
- 다중 행 서브쿼리 : 실행 결과가 여러 건이며 다중 행 비교 연산자와 함께 사용  

다중 행 비교 연산자
(연산자 : 설명)
IN : 결과에 값이 포함되는지 확인 (OR 조건) 
ANY : 결과 중 하나라도 조건을 만족하는지 확인 
ALL : 모든 값이 조건을 만족하는지 확인 
EXISTS : 결과가 존재하는지 여부를 확인 


서브쿼리의 형태
- 다중 칼럼 서브쿼리 : 여러 칼럼을 반환하며 메인 쿼리의 조건절에서 여러 칼럼을 동시에 비교 가능  
- 스칼라 서브쿼리 : SELECT 절에서 사용되며 한 행, 한 칼럼만을 반환  
- 인라인 뷰 (동적 뷰) : FROM 절에서 사용되며 서브쿼리를 임시 테이블처럼 사용  
- HAVING절, ORDER BY절 등에서도 사용 가능  

제2절 집합 연산자

- UNION : 중복 제거  
- UNION ALL : 결과 전부 합침 (중복 포함)  
- INTERSECT : 교집합 (중복 제거)  
- EXCEPT : 차집합 (중복 제거)  

제3절 그룹 함수

- NULL 값은 제외하고 집계 수행  
- 결과값이 없는 행은 출력되지 않음  

표현식과 의미
- ROLLUP(1,2) : 1과 2별 소계, 1별 소계, 총합계 (계층 구조로 계산, 순서 바뀌면 결과 달라짐)  
- CUBE(1,2) : 1과 2별 소계, 1별 소계, 2별 소계, 총합계 (순서 무관)  
- GROUPING SETS(1,2) : 1별 소계, 2별 소계 (순서 무관)  

제4절 윈도우 함수

- 결과 건수에는 영향을 미치지 않고 결과에 대한 처리만 수행  

구분별 주요 함수
- 순위 함수 : ROW_NUMBER, RANK, DENSE_RANK  
- 집계 함수 : SUM, AVG, MAX, MIN, COUNT  
- 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD  
- 비율 함수 : PERCENT_RANK, CUME_DIST, NTILE  

윈도우 함수 문법
SELECT 윈도우함수(A) OVER (PARTITION BY 칼럼 ORDER BY 칼럼 윈도잉절)  
FROM 테이블명  

윈도잉절의 종류
- BETWEEN a AND b : 프레임 범위 지정  
- UNBOUNDED PRECEDING / FOLLOWING : 프레임 시작 또는 끝을 현재 윈도우 그룹의 첫 행 / 마지막 행으로 설정  
- N PRECEDING / FOLLOWING : 현재 행 기준으로 지정된 수만큼 이전 / 이후 행을 나타냄  
- CURRENT ROW : 현재 행 기준으로 프레임 설정  

제5절 Top N 쿼리

- ORDER BY : 데이터 정렬  
- LIMIT : 정렬된 결과에서 상위 N개 행 선택  
- FETCH : 결과 집합에서 상위 N개 행 선택  
- TOP(N) WITH TIES : 상위 N위와 값이 같은 경우 함께 출력  

제6절 계층형 질의와 셀프 조인

- CONNECT BY : 트리 형태의 계층 구조로 쿼리 수행  
- START WITH : 계층 구조 전개의 시작 위치(최상위 행) 지정  
- CONNECT_BY_ROOT / ISLEAF : 최상위 / 하위 계층 값 확인  
- SYS_CONNECT_BY_PATH : 계층 구조의 전개 경로 표시  
- ORDER SIBLINGS BY : 형제 노드 간 정렬  

추가 사항
- SQL Server에서는 CTE(Common Table Expression)를 재귀 호출하여 계층 구조를 전개  
- 앵커 멤버를 먼저 실행해 기본 결과 집합 생성 후 재귀 멤버를 반복 실행  
- 오라클의 계층형 질의문에서 WHERE절은 모든 전개를 진행한 뒤 필터링 조건으로 사용  
- PRIOR 키워드는 CONNECT BY절뿐 아니라 SELECT, WHERE절에서도 사용 가능  

셀프 조인
- 동일 테이블 간 조인으로, 테이블 식별을 위해 반드시 별칭(Alias)을 사용  
- 예시  
  SELECT ALIAS1.칼럼명, ALIAS2.칼럼명  
  FROM 테이블 ALIAS1, 테이블 ALIAS2  
  WHERE ALIAS1.칼럼명2 = ALIAS2.칼럼명1;  

뷰(View)의 장점
- 독립성 : 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 수정 불필요  
- 편리성 : 복잡한 질의를 단순하게 작성 가능  
- 보안성 : 숨기고 싶은 정보를 제외하고 생성 가능  

 

728x90
LIST

'Hello World > SQLD' 카테고리의 다른 글

[2-3 SQL 관리 구문]  (0) 2025.10.15
[2-1 SQL 기본 및 활용]  (0) 2025.10.11
[1-2] 데이터 모델과 SQL  (0) 2025.10.11
[1-1] 데이터 모델링의 이해  (6) 2025.01.07