SELECT [PREDICATE] [ν
μ΄λΈλͺ
.]μμ±λͺ
[AS λ³μΉ], ...
FROM ν
μ΄λΈλͺ
[AS λ³μΉ], ...
WHERE 쑰건
ORDER BY μμ±λͺ
[ASC | DESC], ...
GROUP BY μμ±λͺ
, ...
HAVING 쑰건;
1. SELECT μ
쑰건μ λ§λ ννμ κ²μνλ€.
- PREDICATE: λΆλ¬μ¬ νν μλ₯Ό μ νν λͺ
λ Ήμ΄λ₯Ό κΈ°μ νλ€.
- DISTINCT: μ€λ³΅λ ννμ΄ μμΌλ©΄ κ·Έμ€ μ²« λ²μ§Έ ν κ°λ§ κ²μνλ€
- DISTINCT: μ€λ³΅λ ννμ μ κ±°νκ³ ν κ°λ§ κ²μνμ§λ§ μ νλ μμ±μ κ°μ΄ μλ νν μ 체λ₯Ό λμμΌλ‘ νλ€.
- κΈ°λ³Έ ν μ΄λΈμ ꡬμ±νλ λͺ¨λ μμ±μ μ§μ ν λλ '*'λ₯Ό κΈ°μ νλ€.
2. ORDER BY μ
νΉμ μμ±μ κΈ°μ€μΌλ‘ μ λ ¬νμ¬ κ²μν λ μ¬μ©νλ€.
- [ASC | DESC]: μ λ ¬ λ°©μμΌλ‘μ 'ASC'λ μ€λ¦μ°¨μ, 'DESC'λ λ΄λ¦Όμ°¨μμ΄λ€. μλ΅νλ©΄ μ€λ¦μ°¨μμΌλ‘ μ§μ λλ€.
- μ¬λ¬ μμ±μ μ¬μ©νμ¬ μ λ ¬ν μ μλ€.
3. GROUP BY μ
νΉμ μμ±μ κΈ°μ€μΌλ‘ κ·Έλ£Ήννμ¬ κ²μν λ μ¬μ©νλ€.
4. HAVING μ
GROUP BY μ κ³Ό ν¨κ» μ¬μ©λλ©° κ·Έλ£Ήμ λν 쑰건μ μ§μ νλ€.
5. μ°μ°μ
6. LIMIT
λ²μ λ΄ μΆλ ₯ν λ μ¬μ©νλ€.
SELECT * FROM EMPLOTEE LIMIT 0, 1;
7. SUBSTRING
λΆλΆ λ¬Έμμ΄μ μΆλ ₯ν λ μ¬μ©νλ€.
// substr(string, start, length)
// 4λ²μ§ΈλΆν°, λ€μμ 4λ²μ§ΈλΆν°
SELECT substr('Pineapple',4,3), substr('Pineapple',-4,3) FROM dual;
8. CASE
쑰건μ λ°λΌ μΆλ ₯νκ±°λ λΉκ΅ν λ μ¬μ©νλ€.
CASE
WHEN 쑰건1 THEN '쑰건1 λ°νκ°'
WHEN 쑰건2 THEN '쑰건2 λ°νκ°'
ELSE 'μΆ©μ‘±λλ 쑰건 μμ λ λ°νκ°'
END
SELECT CASE
WHEN (u.seq BETWEEN 1 AND 3) THEN 'A'
WHEN (u.seq BETWEEN 4 AND 6) THEN 'B'
ELSE 'C'
END AS case_result
9. μ§ν© μ°μ°μ
- UNION: ν©μ§ν©
- UNION ALL: ν©μ§ν©, μ€λ³΅ ν¬ν¨
- INTERSECT: κ΅μ§ν©
- EXCEPT: μ°¨μ§ν©
SELECT μμ±λͺ
FROM ν
μ΄λΈλͺ
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT μμ±λͺ
FROM ν
μ΄λΈλͺ
;
10. μ§λ¨ ν¨μ(κ·Έλ£Ή ν¨μ)
SELECT, HAVING μ μ μ¬μ©νκ³ μ€λ³΅ κ°μ ν¬ν¨νλ€.
- COUNT(), SUM(), AVG(), MAX(), MIN()
11. JOIN
2κ°μ ν μ΄λΈμ λν΄ μ°κ΄λ ννλ€μ κ²°ν©νμ¬ νλμ μλ‘μ΄ λ¦΄λ μ΄μ μ λ°ννλ€.
1) INNER JOIN
λ ν μ΄λΈμ κ΅μ§ν©μ΄λ€.
EQUI JOIN
JOIN λμ ν μ΄λΈμμ κ³΅ν΅ μμ±(JOIN μμ±)μ κΈ°μ€μΌλ‘ ‘=’ λΉκ΅μ μν΄ κ°μ κ°μ κ°μ§λ νμ μ°κ²°νμ¬ κ²°κ³Όλ₯Ό μμ±νλ€. JOIN μ‘°κ±΄μ΄ ‘=’ μΌ λ λμΌ μμ±μ΄ 2λ² λνλκ² λλλ°, μ΄ μ€ μ€λ³΅λ μμ±μ μ κ±°νμ¬ 1λ²λ§ νκΈ°νλ λ°©λ²μ NATURAL JOINμ΄λΌ νλ€.
// WHEREμ μ μ΄μ©
SELECT [ν
μ΄λΈλͺ
1.]μμ±λͺ
, [ν
μ΄λΈλͺ
2.]μμ±λͺ
FROM ν
μ΄λΈλͺ
1, ν
μ΄λΈλͺ
2
WHERE ν
μ΄λΈλͺ
1.μμ±λͺ
= ν
μ΄λΈλͺ
2.μμ±λͺ
;
SELECT EMPNAME, DEPTNAME FROM EMPLOYEE AS E, DEPARTMENT AS D WHERE E.DNO = D.DEPTNO;
// NATURAL JOINμ μ΄μ©
// λ ν
μ΄λΈμ μ΄λ¦κ³Ό λλ©μΈμ΄ κ°μ μμ±μ΄ μ‘΄μ¬ν΄μΌ νλ€.
SELECT [ν
μ΄λΈλͺ
1.]μμ±λͺ
, [ν
μ΄λΈλͺ
2.]μμ±λͺ
FROM ν
μ΄λΈλͺ
1 NATURAL JOIN ν
μ΄λΈλͺ
2;
// JOIN ~ USINGμ μ μ΄μ©
SELECT [ν
μ΄λΈλͺ
1.]μμ±λͺ
, [ν
μ΄λΈλͺ
2.]μμ±λͺ
FROM ν
μ΄λΈλͺ
1 JOIN ν
μ΄λΈλͺ
2 USING(μμ±λͺ
);
NON-EQUI JOIN
JOIN μ‘°κ±΄μ ‘=’ μ‘°κ±΄μ΄ μλ λλ¨Έμ§ λΉκ΅ μ°μ°μλ₯Ό μ¬μ©νλ λ°©λ²μ΄λ€.
2) OUTER JOIN
JOIN 쑰건μ λ§μ‘±νμ§ μλ ννλ κ²°κ³Όλ‘ μΆλ ₯νκΈ° μν λ°©λ²μΌλ‘ LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOINμ΄ μλ€. INNER JOINμ κ²°κ³Όλ₯Ό ꡬν ν, μ°(μ’)μΈ‘ 릴λ μ΄μ μ μ΄λ€ ννκ³Όλ λ§μ§ μλ μ’(μ°)μΈ‘ 릴λ μ΄μ μ μλ ννλ€μ NULL κ°μ λΆμ¬ INNER JOINμ κ²°κ³Όμ μΆκ°νλ€.
SELECT [ν
μ΄λΈλͺ
1.]μμ±λͺ
, [ν
μ΄λΈλͺ
2.]μμ±λͺ
FROM ν
μ΄λΈλͺ
1 LEFT OUTER JOIN ν
μ΄λΈλͺ
2
ON ν
μ΄λΈλͺ
1.μμ±λͺ
= ν
μ΄λΈλͺ
2.μμ±λͺ
;
SELECT [ν
μ΄λΈλͺ
1.]μμ±λͺ
, [ν
μ΄λΈλͺ
2.]μμ±λͺ
FROM ν
μ΄λΈλͺ
1 RIGHT OUTER JOIN ν
μ΄λΈλͺ
2
ON ν
μ΄λΈλͺ
1.μμ±λͺ
= ν
μ΄λΈλͺ
2.μμ±λͺ
;
SELECT [ν
μ΄λΈλͺ
1.]μμ±λͺ
, [ν
μ΄λΈλͺ
2.]μμ±λͺ
FROM ν
μ΄λΈλͺ
1 FULL OUTER JOIN ν
μ΄λΈλͺ
2
ON ν
μ΄λΈλͺ
1.μμ±λͺ
= ν
μ΄λΈλͺ
2.μμ±λͺ
;
Select νλ², μ΄λ¦, νμ.νκ³Όμ½λ, νκ³Όλͺ
From νμ Left Outer Join νκ³Ό
On νμ.νκ³Όμ½λ = νκ³Ό.νκ³Όμ½λ;