1. 조건문
- Oracle의 경우에는 DECODE, CASE WHEN
- MsSQL의 경우에는 CASE WHEN
- MySQL의 경우에는 IF, CASE WHEN
- CASE WHEN 조건 THEN 참일경우_실행구문 ELSE 거짓일경우_실행구문 END
<code />
SELECT CASE WHEN 'GOOD'='JOB' THEN 'HELLO' ELSE 'WORLD' END;
<code />
SELECT CustomerID, City,
CASE
WHEN CustomerID > 50 THEN '50번을 넘음!'
WHEN City='London' THEN '도시가 런던!'
ELSE '50번 이하임!'
END AS '출력 문구'
FROM Customers;
만약 City데이터가 NULL값을 가지고 있다면 정렬 순서를 Country 기준으로, 아니라면 City 기준으로 정렬시키는 쿼리
<code />
SELECT CustomerName, City, Country FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);
2. JOIN
기준을 가지고 데이터를 합친다. 여기서는 INNER JOIN만 사용
<code />
-- w3school 기본 예제입니다.
-- OrderID는 Orders라는 table에 있습니다.
-- CustomerName는 Customers라는 table에 있습니다.
-- OrderDate는 Orders라는 table에 있습니다.
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
-- 기준 table은 Orders입니다.
FROM Orders
-- INNER JOIN을 할 table은 Customers입니다.
INNER JOIN Customers
-- INNER JOIN의 기준은 두 table 모두 있는 CustomerID입니다.
ON Orders.CustomerID=Customers.CustomerID;
<aside> 💡 저는 택배를 배달하는 택배기사입니다. CustomerID와 CustomerName, Address, OrderDate, City, PostalCode를 알아야 합니다. 해당 data를 출력해주세요.
</aside>

3. UNION
데이터를 결합
<code />
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
4. GROUP BY
특정 열을 기준으로 그룹화 하여 다른 특정 열에 붙일 때 사용 아래 코드에서 GROUP BY 코드를 삭제하면 작동하지 않는다. 그 이유는 SELECT 절에서 이미 그룹 함수와 기준열이 쓰였기 때문이다.
<code />
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
5. HAVING
구룹화된 데이터에 조건을 부여
<code />
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;
6. EXIST
서브 쿼리가 참일 경우 참을, 거짓일 경우 거짓을 반환
<code />
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20);
7. ANY
서브 쿼리가 하나라도 참이라면 참을 반환
<code />
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
8. ALL
서브 쿼리가 모두 참이어야 참을 반환