집합 연산자
집합 연산자
- 집합 연산자 (Set Operators): 두 개 이상의
SELECT
문의 결과를 결합하거나 비교하여 하나의 결과 집합으로 반환. - 규칙:
- 각
SELECT
문의 열 개수와 데이터 타입이 순서대로 일치해야 함. - 열 이름은 첫 번째
SELECT
문의 것을 따름. ORDER BY
는 마지막SELECT
문 뒤에 한 번만 사용 가능 (전체 결과에 대해 정렬).
- 각
UNION
UNION
: 두SELECT
문의 결과를 합치되, 중복된 행은 제거하고 보여줌.
SELECT BIZ_REG_NO, COMPANY_NM FROM TB_COMPANY_MASTER WHERE COMPANY_TYPE_CAT = '대기업'
UNION
SELECT BIZ_REG_NO, COMPANY_NM FROM TB_COMPANY_MASTER WHERE ESTABLISH_DT > TO_DATE('2010-01-01', 'YYYY-MM-DD');
UNION ALL
: 두SELECT
문의 결과를 합치되, 중복된 행도 모두 포함하여 보여줌. (UNION
보다 빠름)
SELECT LOAN_TYPE_CD FROM TB_LOAN_ACCOUNT WHERE INTEREST_RATE > 4.0
UNION ALL
SELECT LOAN_TYPE_CD FROM TB_LOAN_ACCOUNT WHERE LOAN_AMT > 50000000000;
INTERSECT
INTERSECT
: 두SELECT
문의 결과에 모두 존재하는 행만 보여줌 (교집합, 중복 제거).
-- 2023년 재무정보가 있는 회사 중 여신도 있는 회사
SELECT BIZ_REG_NO FROM TB_FINANCIAL_STATEMENT WHERE FS_YM = '202312'
INTERSECT
SELECT DISTINCT BIZ_REG_NO FROM TB_LOAN_ACCOUNT;
MINUS
MINUS
(Oracle) /EXCEPT
(표준 SQL, 다른 DBMS): 첫 번째SELECT
문의 결과에서 두 번째SELECT
문의 결과에 존재하는 행을 제외하고 보여줌 (차집합, 중복 제거).
-- 2023년 재무정보가 있는 회사 중에 여신 금리가 3.0% 미만인 회사 제외
SELECT BIZ_REG_NO FROM TB_FINANCIAL_STATEMENT WHERE FS_YM = '202312'
MINUS
SELECT BIZ_REG_NO FROM TB_LOAN_ACCOUNT WHERE INTEREST_RATE < 3.0;