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;