007. 조건 분기, 집합연산, 윈도우 함수, 갱신 - llighter/database GitHub Wiki
1. SQL과 조건분기
CASE
식의 구문
- CASE expression
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE result
END
CASE
식의 작동
- - 절차지향의
switch
식과 유사 - 차이 : SQL 조건 분기에서는 특정 값을 리턴
SELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN "The quantity is greater than 30"
WHEN Quantity = 30 THEN "The quantity is 30"
ELSE "The quantity is something else"
END AS Comparison
CASE
식의 강력한 점은 식 이라는 것이다. 따라서 어디서든 활용할 수 있다.- 예)
SELECT
,WHERE
,GROUP BY
,HAVING
,ORDER BY
SELECT CustomerName, City, Country FROM Customers
ORDER BY (CASE
WHEN City IS NULL THEN Country
ELSE City
END);
2. SQL의 집합 연산
UNION
으로 합집합 구하기
- 109. UNION 참고
INTERSECT
로 교집합 구하기
- EXCEPT
로 차집합 구하기
- cf. 뺄셈 연산은 교환법칙이 성립하지 않는다.
3. 윈도우 함수
- 집약기능이 없는
GROUP BY
구 PARTITION BY
구- 출력 결과의 레코드 수 = 입력되는 테이블의 레코드 수
- 집약 함수 뒤에
OVER
구를 작성
SELECT name,
age,
RANK() OVER(ORDER BY age DESC) AS rnk
FROM Address;
DENCE_RANK()
:RANK()
와 달리 건너뛰기 없음.
4. 트랜잭션과 갱신
SQL 갱신 작업의 종류 3가지
- 삽입(
INSERT
) - 제거(
DELETE
) - 갱신(
UPDATE
) - cf 삽입 + 갱신 =
MERGE
INSERT
로 데이터 삽입
- INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
DELETE
로 데이터 제거
- DELETE FROM table_name
WHERE condition;
- cf. 테이블을 삭제하고 싶은 경우
DROP TABLE table_name;
UPDATE
로 데이터 갱신
- -- syntax
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
-- example
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;