[SQL] 조건 분기 / 집합 연산

corncheese·2023년 3월 26일
0

SQL

목록 보기
3/4

1. 조건분기

CASE식의 구문

  • 검색 CASE 식은 단순 CASE 식을 모두 포함하므로 검색 CASE 식만 기억해도 충분.
SELECT name, address,
	CASE WHEN address = '서울시' THEN '경기'
    WHEN address = '인천시' THEN '경기'
    ELSE NULL END AS district
FROM address;

CASE식의 강력한 점은 '식'이라는 것이다.
따라서 식을 적을 수 있는 곳이라면 어디든지 적을 수 있다.
SELET, WHERE, GROUP BY, HAVING, ORDER BY 구와 같은 곳 어디에나 적을 수 있다.
** CASE식은 SQL성능과도 큰 관련이 있음!!!

2. 집합 연산

  • UNION으로 합집합 구하기
    UNION은 합집합을 구할 때 중복된 레코드를 제거한다.
    중복을 제거하고 싶지 않다면 UNION ALL 사용
SELECT *
FROM address
UNION
SELECT *
FROM address2
  • INTERSECT로 교집합 구하기
    INTERSECT는 양쪽 테이블에 공통으로 존재하는 레코드를 출력,
    중복된 것이 있다면 해당 레코드는 제외된다.

  • EXCEPT로 차집합 구하기

SELECT *
FROM address
EXCEPT
SELECT *
FROM address2;
// address - address2

EXCEPT에는 UNION과 INTERSECT에는 없는 주의사항이 있다.
UNION과 INTERSECT에는 어떤 테이블을 먼저 적든 그 순서와 상관없이 결과가 같다. 하지만 EXCEPT의 경우는 순서가 중요!

0개의 댓글