[DB] SQL λ¬Έμ κΈ°λ³Έ
SELECT λ¬Έμ κΈ°λ³Έ
ν μ΄λΈμ μ‘°μνλ SQL
- SQLμ μ£Όλ‘ DBMSμ μ μ₯λ ν μ΄λΈμ μ‘°μνκΈ° μν΄ μ¬μ©ν¨
- ν
μ΄λΈμ μ€ν€λ§(ν΄λ)μ μ μ₯λ¨
- MySQLμμλ μ€ν€λ§μ λ°μ΄ν°λ² μ΄μ€κ° κ°μ
-
ν΄λμ²λΌ DBλ μ¬λ¬ κ°λ₯Ό μμ±ν μ μμ΄μ ν μ΄λΈμ λ³΄λ €λ©΄ DBλ₯Ό μ νν΄μΌ ν¨
- 1κ°μ DBμλ 볡μμ ν μ΄λΈμ΄ μ μ₯λμ΄ μμ
- MySQLμ κ²½μ° DBλ₯Ό λ³΄λ €λ©΄
show databases;
- λν΄νΈ(νμ¬) DBλ₯Ό μ§μ νλ €λ©΄
use λ°μ΄ν°λ² μ΄μ€λͺ ;
- DB λ΄μ ν
μ΄λΈ 리μ€νΈλ₯Ό μ»μ λλ
show tables;
λͺ λ Ήμ μ¬μ©ν¨- μ¬κΈ°μ
show
λuse
λ SQLμ΄ μλκ³ κ΄λ¦¬ λͺ λ Ή
- μ¬κΈ°μ
SELECT μ΄λͺ
FROM ν
μ΄λΈλͺ
;
- μ΄λͺ
μ λ³ν(*)λ₯Ό μ¬μ©νλ©΄
FROM ν μ΄λΈλͺ
μμ μ§μ ν ν μ΄λΈμ μ 체 μ΄μ μ§μ ν μ μμ - μμμ μ΄μ μ½€λ§(,)λ‘ κ΅¬λΆν΄ 볡μλ‘ μ§μ ν μ μμ
- DBκ° λ€λ₯΄λ©΄ κ°μ μ΄λ¦μ ν μ΄λΈμ μμ±ν μ μμ
λͺ λ Ή | μ€λͺ |
---|---|
select * from city; | λν΄νΈ λ°μ΄ν°λ² μ΄μ€μ cityλ₯Ό SELECTν¨ |
select * from world.city; | λ°μ΄ν°λ² μ΄μ€.ν
μ΄λΈλͺ
ννλ‘ λͺ
μμ μΌλ‘ world λ°μ΄ν°λ² μ΄μ€μ cityλ₯Ό SELECTν¨ |
WHERE μ‘°κ±΄μ΄ νμν μ΄μ
- DBμ ν μ΄λΈμμ μ΄μ μλ ν μ΄λΈμ μμ±(μ μ)νμ λ κ²°μ λμ΄ μ΄ν λͺ μμ μΌλ‘ λ³κ²½νμ§ μλ ν λμ΄λμ§ μμ
- νμ§λ§ νμλ μ ν μμ΄ λ릴 μ μμ
- νμν λ°μ΄ν°λ₯Ό ν¨μ¨μ± μκ² ν΄λΌμ κ°μ Έμ€λ €λ©΄ SELECTνλ νμλ₯Ό μ€μ¬μΌ ν¨
- WHERE ꡬ문μ μ§μ ν΄
WHERE 쑰건
μ ννλ‘ SELECT λ¬Έμ λμ μΆκ°ν¨
- WHERE ꡬ문μ μ§μ ν΄
SELECT μ΄λͺ
FROM ν
μ΄λΈλͺ
WHERE 쑰건;
- 쑰건μ ν
μ΄λΈμ κ° νμ μ΄ν΄λ³΄κ³ μΌμΉνλ νλ§ SELECT ν¨
- 쑰건μλ λΉκ΅ μ°μ°μ
AND
μOR
κ° μμ£Ό μ¬μ©λ¨
- 쑰건μλ λΉκ΅ μ°μ°μ
λΉκ΅ μ°μ°μ
μ°μ°μ μ’ λ₯ | μλ―Έ |
---|---|
= | κ°λ€ |
< > | κ°μ§ μλ€ |
> = | κ°κ±°λ ν¬λ€ |
> | λ³΄λ€ ν¬λ€ |
< = | κ°κ±°λ μλ€ |
< | λ³΄λ€ μλ€ |
μ°μ°μμ μ°μ μμ
- μ°μ°μμλ μ°μ μμκ° μμΌλ©° MySQLμ κ²½μ°μλ μμ
- μ°μ μμλ₯Ό λͺ ννκ² νκΈ° μν΄ κ΄νΈλ₯Ό μ¬μ©ν΄μΌν¨
SQLμ κΈ°μ΄μ μΈ κΈ°μ κ·μΉ
- SQLμ κ·Έλν½ μΈν°νμ΄μ€(GUI)λ‘ μ‘°μλ λ΄μ©λ DBMSλ₯Ό μ‘°νν λ λ¬Έμμ΄λ‘ λ³νλ¨
- SQL λ¬Έμ λ§μ§λ§μ λ리미ν°, Delimiter(λ¬Έμ₯μ λ¨λ½μ μλ―Ένλ κΈ°νΈ)λ₯Ό λΆμ(λλΆλΆμ μΈλ―Έμ½λ‘ (;))
- ν€μλ(ex,
SELECT
λFROM
λ±)μ λλ¬Έμμ μλ¬Έμλ ꡬλ³νμ§ μμselect
λSELECT
λSelect
λ κ°μ μλ―Έμ
- μ μλ κΈ°μ‘΄ κ·Έλλ‘ μ¬μ©ν¨. λ¬Έμμ΄μ΄λ λ μ§ μκ°μ μμλ°μ΄ν(β β)λ‘ κ°μ
- μμΉλ‘ κ°μ μ§μ νλ κ²½μ°λ 1000μ΄μ§λ§, λ¬Έμμ΄λ‘ μ§μ νλ κ²½μ°λ β1000βμ΄ λ¨
- λ¨μ΄(word)λ λ°κ° μ€νμ΄μ€λ κ°νμΌλ‘ ꡬλ³ν¨, μ κ° μ€νμ΄μ€λ μ¬μ©νμ§ μμ
DISTINCTμ μν μ€λ³΅ λ°°μ
- μ νν νμμ μ€λ³΅λ κ°μ μμ κ³ μΆμ κ²½μ°
DISTINCT
ν€μλλ₯Ό μ§μ ν¨
SELECT λ¬Έμ μμ©μ‘°μ
κ²μκ²°κ³Ό μ λ ¬
- SELECT λ¬Έμ μ€ννλ©΄ κ·Έ κ²°κ³Όλ μ΄(column)κ³Ό ν(record)μΌλ‘ ꡬμ±λ 2μ°¨μ νλ‘ νμλ¨
- μ΄μ μμλ
SELECT μ΄1, μ΄2, ...
μ κ°μ΄ λͺ μμ μΌλ‘ μ§μ νμ§ μλ νμ νλ₯Ό μμ±ν λμ μμλλ‘ λ¨ - νμ μμλ
ORDER BY
λ λͺ λ ΉμΌλ‘ μ§μ ν¨ - SELECT λ¬Έμ κ²°κ³Όμ νμ μμλ₯Ό μ§μ ν λλ μλμ κ°μ΄ ν¨
SELECT ~ ORDER BY μ΄1[, μ΄2, ...]
- ORDER BYμ μ¬μ©ν μ΄λͺ
μ μ λ ¬ν€λΌκ³ ν¨
- μ λ ¬ν€λ₯Ό μ½€λ§λ‘ ꡬλΆν΄ 볡μμ μ΄μ μ§μ ν μ μμ
ORDER BY
λ₯Ό μ¬μ©νμ¬ μ€λ¦μ°¨μ μ λ ¬ν μ μμDESC
ν€μλλ₯Ό μΆκ°νλ©΄ λ΄λ¦Όμ°¨μ μ λ ¬ κ°λ₯- DESCend(λ΄λ¦¬λ€)λΌλ μλ―Έ
ASC
ν€μλλ₯Ό μΆκ°νλ©΄ μ€λ¦μ°¨μ μ λ ¬ κ°λ₯- ASCend(μ€λ₯΄λ€)λΌλ μλ―Έ
μ λ ¬ μν μ μ£Όμν μ
- ORDER BYμ μν μ λ ¬μ μνν λ νμ μμλ₯Ό νμ€ν μ νλ €λ©΄ νμ μ λ ¬ν€λ₯Ό ν κ°μ§ μλ―Έ(Unique)λ‘ μ ν΄μΌ ν¨
- μ λ ¬ν€κ° κ°μ κ°μ νμ΄ λ³΅μ κ° μ‘΄μ¬νλ€λ©΄ κ·Έ νλ€μ μμλ μΌμ νμ§ μμ
- μΌμ ν μμλ‘ λμ΄νλ €λ©΄ μ½€λ§(,)λ‘ κ΅¬λΆν΄ μ λ ¬ν€λ‘ μ§μ ν΄μΌν¨
ν μ΄λΈμ μμ½νλ ν¨μ
- SQLμμ λ°μ΄ν°μ λν΄ μ΄λ ν μ‘°μμ΄λ κ³μ°μ μννλ €λ©΄ ν¨μλΌλ λꡬλ₯Ό μ¬μ©ν΄μΌ ν¨
- ex) ν
μ΄λΈ μ 체μ νμλ₯Ό ν©μ°νλ κ³μ°μ μννλ κ²½μ°μλ
COUNT
ν¨μλ₯Ό μ¬μ©ν¨
- ex) ν
μ΄λΈ μ 체μ νμλ₯Ό ν©μ°νλ κ³μ°μ μννλ κ²½μ°μλ
ν¨μμ 2μ’ λ₯
- 볡μ ν(μ΄λ νμ κ°)μ λν΄ μ§κ³λ₯Ό μννλ ν¨μ
-
λ¨μΌ νμ κ°μ λν΄ μ‘°μμ΄λ κ³μ°μ μννλ ν¨μ
COUNT
ν¨μλ μ§κ³μ© ν¨μμ ν΄λΉ- μ§μ½ν¨μ(μ§κ³ν¨μ)λΌκ³ λ λΆλ¦
μ§μ½ν¨μ 5κ°μ§
COUNT
ν μ΄λΈμ νμλ₯Ό μλ €μ£Όλ ν¨μSUM
ν μ΄λΈμ μμΉ λ°μ΄ν°λ₯Ό ν©κ³νλ ν¨μAVG
ν μ΄λΈμ μμΉ λ°μ΄ν° νκ· μ ꡬνλ ν¨μMAX
ν μ΄λΈμ μμμ΄ λ°μ΄ν° μ€ μ΅λκ°μ ꡬνλ ν¨μ-
MIN
ν μ΄λΈμ μμμ΄ λ°μ΄ν° μ€ μ΅μκ°μ ꡬνλ ν¨μ - μ§μ½ν¨μλ κΈ°λ³Έμ μΌλ‘ NULLμ μ μΈνκ³ μ§κ³ν¨
COUNT
ν¨μλCOUNT(*)
λ‘ νκΈ°νμ¬ NULLμ ν¬ν¨ν μ 체 νμ μ§κ³ν¨
λ¬Έμμ΄μ μ§μ½νλ GROUP_CONCAT
- λ¬Έμμ΄μ λν μ§μ½ν¨μλ SQL νμ€μλ μμΌλ MySQLμλ
GROUP_CONCAT
ν¨μ(LIST ν¨μ)κ° μμ SUM
ν¨μλ μμΉμ λν μ§κ³λ₯Ό λν΄ μννμ§λ§,GROUP_CONCAT
ν¨μλ λ¬Έμμ΄μ λν μ§κ³λ₯Ό λ¬Έμμ΄μ κ²°ν©(CONCATinate)μΌλ‘ μνν¨
DISTINCTλ‘ μ€λ³΅ ννΌ
DISTINCT
ν€μλλ μ νν νμ κ°μ΄ μ€λ³΅λμ΄ μ΄λ₯Ό μμ κ³ μΆμ κ²½μ°μ μ΄μ©ν¨- μ΄κ²μ μ§μ½ν¨μλ‘λ μ΄μ©ν μ μμ
λ°μ΄ν°λ₯Ό κ·Έλ£ΉμΌλ‘ λλλ GROUP BY
- μ§μ½ν¨μλ λμμ΄ λλ λ°μ΄ν° μ 체λ₯Ό λ²μλ‘ μ§μ½νλλ°, λμμ΄ λλ λ°μ΄ν°λ₯Ό λͺ κ°μ κ·Έλ£ΉμΌλ‘ λλ μ μ§μ½νλ κ²λ κ°λ₯
- κ·Έλ£Ήμ λλ λλ λλλ ν€κ° λλ μ΄μ μ§μ ν¨
SELECT ~ FROM ν
μ΄λΈλͺ
GROUP BY μ΄λͺ
1 [, μ΄λͺ
2, ...]
GROUP BY
λ‘ μ§μ ν μ΄μ μ§μ½ ν€ or κ·Έλ£Ήν ν€λΌκ³ λΆλ¦ORDER BY
μ²λΌ 볡μ μ΄μ μ½€λ§(,)λ‘ κ΅¬λΆν΄μ μ§μ ν μ μμ
GROUP BY
κ° μμ λλ λμ λ°μ΄ν° μ μ²΄λ‘ μ§μ½ν΄ 1건μ κ²°κ³Όλ‘ λλλ €μ€GROUP BY
κ° μμ λλ μ§μ ν κ·Έλ£Ή μ΄λ§λ€ μ§μ½ν΄μ κ·Έλ£Ή μ΄λ‘ λλ μμ κ²°κ³Όλ₯Ό λλλ €μ€
λλ κ·Έλ£Ήμ 쑰건 μΆκ°
WHERE
ꡬ문μ 쑰건μ μΆκ°(AND μ°μ°μ μ¬μ©)νλ©΄ μ€λ₯κ° λ°μν¨COUNT
κ°μ μ§μ½ν¨μλ₯Ό μμ±ν μ μλ κ²½μ°λSELECT
μORDER BY
,HAVING
λΏμ
μ§μ½ν κ²°κ³Όμ 쑰건 μ§μ
- κ·Έλ£Ήλ§λ€ μ§μ½ν κ°μ 쑰건μΌλ‘ μ ννκ³ μΆλ€λ©΄
HAVING
λ€μ 쑰건μ λ€μκ³Ό κ°μ΄ μ§μ ν¨
SELECT ~ FROM ~ GROUP BY ~ HAVING κ·Έλ£Ήμ κ°μ λν 쑰건
SELECT
μORDER BY
μλ μ§μ½ν¨μλ₯Ό κΈ°μ ν μ μμORDER BY
λ‘ κΈ°μ νλ κ²½μ°ORDER BY
λ€μ κΈ°μ ν¨
ORDER BY
, GROUP BY
, HAVING
μ μμ± μμ
- μμ±ν λμλ λ°λμ μ΄ μμλλ‘ ν΄μΌ ν¨
1.SELECT 2.FROM 3.WHERE 4.GROUP BY 5.HAVING 6.ORDER BY