728x90
- INTERSECT - 여러 개의 SQL문의 결과에 대한 교집합으로 중복된 행은 하나의 행으로 출력한다.
- GROUPING SET, CUBE, ROLLUP - 집계 유무 잘 파악하기
- UNION ALL(중복 있음), UNION(중복 없음) - 칼럼명이 다를 때 어떻게 되는 지
- EXIST - 특정 컬럼값이 존재하는지 확인, IN 특정 값이 존재하는지 확인
- GRANT - 권한을 주는 거, REVOKE - 권한을 취소하는 거
- GRANT SELECT ON A_User.TB_A TO B_user
- DROP [객체 유형] 객체이름
- 객체유형 - TABLE, SCHEMA, DATABASE, INDEX ...
- RESTRICT 옵션: 기본 동작으로, 삭제 대상 객체가 의존성을 가지고 있으면 삭제를 차단합니다.
- REVOKE문을 사용하여 권한을 취소하면 권한을 취소당한 사용자가 WITH GRANT OPTION으로 다른 사용자에게 허가했던 권한도 모두 연쇄적으로 취소됨.
- ROWS - 값이 같더라도 한 행씩 계산, RANGE - 값이 같으면 묶어서 계산
- RANK, DENSE RANK(누적순위), ROW_NUMBER - 그냥 순서대로 출력
- RANK와 DENSE RANK 차이는 RANK는 1,2,2,4 등이면 DENSE RANK는 1,2,2,3등
- GROUPING SETS((상품 ID, 월)) 이랑 GROUPING SETS(상품 ID, 월) 결과값 다름 - 괄호 주의
- CUBE, ROLLUP, GROUPING SETS
#CUBE
SELECT Region, Product, SUM(Sales) AS TotalSales
FROM SalesData
GROUP BY CUBE(Region, Product);
SELECT Region, Product, SUM(Sales) AS TotalSales
FROM SalesData
GROUP BY GROUPING SETS (
(Region, Product), -- Region과 Product 별 집계
(Region), -- Region 별 집계
(Product), -- Product 별 집계
() -- 전체 합계
);
#ROLLUP
SELECT Region, Product, SUM(Sales) AS TotalSales
FROM SalesData
GROUP BY ROLLUP(Region, Product);
SELECT Region, Product, SUM(Sales) AS TotalSales
FROM SalesData
GROUP BY GROUPING SETS (
(Region, Product), -- Region과 Product 별 집계
(Region), -- Region 별 집계
() -- 전체 합계
);
- 서브쿼리는 단일 행 또는 복수 행 비교연산자와 함께 사용 가능하다.
- GROUPING 반환값 1 - 그룹화 완료, 0 - 그룹화되지 않음
- 단일 행 서브쿼리의 비교연산자는 다중 해 서브쿼리의 비교연산자로 사용 불가능 하지만 반대는 가능하다.
- GROUP BY를 사용하지 않고, HAVING을 사용했다고 오류가 발생하지는 않음
- 다중 칼럼 서브쿼리는 SQL Server에서는 지원하지 않음
- PERCENT_RANK : 파티션별 원도우에서 제일 먼저 나오는 것을 0으로 , 제일 늦게 나오는 것을 1로 , 행의 순서별 백분율
- RATIO_TO_REPORT : 파티션 내의 주어진 칼럼 값의 합계에 대한 행별 백분율
- CUME_DIST : 각 행의 수에 누적비율
- NTILE : 파티션별 전체 건수를 주어진 인자로 N등분한 결과
- CROSS JOIN : N * M 모든 조합
- CONNECT BY 구문에서 PRIOR의 역할 (계층형 질의)
- PRIOR는 부모 행을 참조합니다. PRIOR를 사용하여 부모와 자식 간의 관계를 연결하는 조건을 정의합니다.
- 예를 들어, PRIOR EmployeeID = ManagerID는 EmployeeID가 부모의 ManagerID와 일치하는 경우 자식 행을 찾습니다.
- PRIOR 키워드 CONNECT BY에서만 써야 하는 건 아님 - SELECT, WHERE 절 도 가능
- ORDER SIBILINGS BY : 형제 노드 사이에서 정렬을 수행
- 오라클 계층형에서 루트 노드 레벨 1
- UNION ALL을 했더라도 나중에 같은 연산인데 UNION이 오면 중복값 다 정리
- UNION 각각에 GROUP BY는 사용 가능, ORDER BY는 마지막에만 가능 각각 불가능
728x90
'데이터베이스' 카테고리의 다른 글
SQLD 제 2과목 - 제 3장 관리구문 (1) | 2024.11.17 |
---|---|
SQLD 제 2과목 - 제 1장 SQL 기본 (0) | 2024.11.16 |
SQLD 제 1과목 오답노트 (2) | 2024.11.15 |
PlanetScale & Prisma Database Setup (0) | 2023.08.17 |