Basic SQL
SQL ๊ธฐ๋ณธ
๋ฌธ๋ฒ ์์
์คํ์์
์ฃผ์์ฌํญ - ๋ณ์นญ(Alias)
์คํ ์์์ ๋ง๊ฒ ์ฌ์ฉํ ๊ฒ!
์: select ์ ์ alias๋ฅผ ์ ์ํ๋ค๋ฉด order by์ ์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง, where์ ์์๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๋ค.
์ด์ : select ์ ๋ณด๋ค where์ ์ด ๋จผ์ ์คํ์ด ๋๊ธฐ ๋๋ฌธ!
๋ง์ฝ ์คํ ์์์ ๋ง์ง ์๊ฒ ์ฌ์ฉํ๊ฒ ๋๋ฉด Invalid Identifier๋ผ๋ Error๋ฐ์
ํ๋์ ํ
์ด๋ธ์ ์ด์ฉํ SQL ์ง์
where ์ ์ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ ์ ์ด
์ ์ด
์ฐ์ฐ์
์ฌ์ฉ ์
๋น๊ต
<, >, <=, >=,=, <>,
price < 2000
๋ฒ์
between
price between 1000 and 2000
์งํฉ
in, not in
price in (1000, 2000, 3000)
ํจํด
LIKE(๋ ๋ณต์กํ ํจํด์ REGEXP ์ฐ์ฐ์๋ก ์ ๊ท ํํ์ ํ์ฉ)
bookname like '์ถ๊ตฌ์ ์ญ์ฌ'
NULL
IS NULL, IS NOT NULL
price IS NULL
๋ณตํฉ์กฐ๊ฑด
and, or , not
(price<2000) and (bookname like '์ถ๊ตฌ์ ์ญ์ฌ')
LIKE์ ๊ฐ์ด ์ฌ์ฉํ๋ ์์ผ๋ ๋ฌธ์
์์ผ๋ ๋ฌธ์
์๋ฏธ
์ฌ์ฉ ์
%
0 ๊ฐ ์ด์์ ๋ฌธ์์ด๊ณผ ์ผ์น
'%์ถ๊ตฌ%': ์ถ๊ตฌ๋ฅผ ํฌํจํ๋ ๋ฌธ์์ด
+
๋ฌธ์์ด ์ฐ๊ฒฐ
'๊ณจํ' + '๋ฐ์ด๋ธ': '๊ณจํ ๋ฐ์ด๋ธ'
[]
1๊ฐ์ ๋ฌธ์์ ์ผ์น
'[0-5]%': 0-5 ์ฌ์ด์ ์ซ์๋ก ์์ํ๋ ๋ฌธ์์ด
1๊ฐ์ ๋ฌธ์์ ๋ถ์ผ์น
'' : 0-5์ฌ์ด์ ์ซ์๋ก ์์ํ์ง ์๋ ๋ฌธ์์ด
_
ํน์ ์์น์ 1๊ฐ์ ๋ฌธ์์ ์ผ์น
'_๊ตฌ%': ๋๋ฒ์งธ ์์น์ '๊ตฌ'๊ฐ ๋ค์ด๊ฐ๋ ๋ฌธ์์ด
GROUP BY
์์ฑ ๊ฐ์ด ๊ฐ์ ๊ฐ ๋ผ๋ฆฌ (ํํ๋ค์)๊ทธ๋ฃน์ ๋ง๋ค ์ ์๋ค.
select ์ ์๋ group by ์ ์ ์ฌ์ฉํ ์์ฑ ํน์ ์ง๊ณํจ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ.
Having
๋ฐ๋์ group by์ ๊ณผ ๊ฐ์ด ์์ฑํด์ผํจ.
where ์ ๋ณด๋ค ๋ค์ ์์ผํจ
๊ฒ์์กฐ๊ฑด(select)์๋ ์ง๊ณํจ์๊ฐ ์์ผํจ.
2๊ฐ ์ด์์ ํ
์ด๋ธ SQL ์ง์
join (์์)
์ฌ๋ฌ๊ฐ์ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ์ฌ ํ๋์ ํ ์ด๋ธ์ ๋ง๋๋ ๊ณผ์
๋ ๋ฆด๋ ์ด์ (ํ ์ด๋ธ)์ ๊ณตํต ์์ฑ์ ๊ธฐ์ค์ผ๋ก, ์์ฑ(์ด)์ด ๊ฐ์ ํํ(ํ)์ ์ํ์ผ๋ก ๊ฒฐํฉ
๋ ํ ์ด๋ธ์ ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ์นด๋์ ํ๋ก๋ํธ ์ฐ์ฐ(customer ํ * orders ํ)
๋๋ฑ ์กฐ์ธ(equal join) : ๋๋ฑ ์กฐ๊ฑด์ ์ํด join, ์ผ๋ฐ์
์ธํ ์กฐ์ธ: ๋น๊ต์กฐ๊ฑด(>, >=, <. <=, =,!=)์ ์ํด join ์ด์ค = ๋ก join ํ๊ฑธ ๋๋ฑ ์กฐ์ธ์ด๋ผ๊ณ ํ ์ ์์.
์์ฐ ์กฐ์ธ: ์ค๋ณต ์์ฑ ์ ๊ฑฐ
์ ํ ์กฐ์ธ(self join) : ํ๋์ ํ ์ด๋ธ (์์ ) ์ ๋์์ผ๋ก ์กฐ์ธ
์ธ๋ถ ์กฐ์ธ(outer join) : ์์ฐ ์กฐ์ธ ํ, ๋ชจ๋ ๊ฐ ์ถ์ถ (left, right, full)ํ๋, ์กฐ์ธ์คํจ(๋์ ๋์ง ์๋ ์์ฑ)์ NULL๋ก ํ์
MySQL์์ full outer join ์ left, right join์ union allํด์ ํํ
sub query (๋ถ์ ์ง์)
๋ถ์์ง์ ๋จผ์ ์ฒ๋ฆฌํ๊ณ , ์ ์ฒด ์ง์๋ฅผ ์ฒ๋ฆฌ
๋ถ์์ง์ ๊ฒฐ๊ณผ 4๊ฐ์ง
11 (๋จ์ผํ ๋จ์ผ์ด)
N1 (๋ค์คํ ๋จ์ผ์ด) - IN ํค์๋ ํ์ฉ
1N (๋จ์ผํ ๋ค์ค์ด)
NN (๋ค์คํ ๋ค์ค์ด)
๋ถ์์ง์ ๊ฐ์๋ ์ํ๊ด๊ณ๊ฐ ์๊ณ , ์คํ ์์๋ ํ์ ๋ถ์์ง์๋ฅผ ๋จผ์ ์คํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด์ ์์ ๋ถ์์ง์๋ฅผ ์คํํ๋ค.
์๊ด ์ง์ : ์์ ๋ถ์์ง์์ ํ์ ๋ถ์์ง์๊ฐ ๋ ๋ฆฝ์ ์ด์ง ์๊ณ , ์๋ก ๊ด๋ จ์ ๋งบ๊ณ ์๋ค.
์งํฉ์ฐ์ฐ์
MySQL์ ๋ค๋ฅธ DBMS์ ๋ฌ๋ฆฌ, MINUS, INTERSECT์ฐ์ฐ์ด ๋ณ๋๋ก ์๋ค. ๋์ NOT IN, INNER JOIN์ ์ฌ์ฉ.
ํฉ์งํฉ
UNION : ์ค๋ณต ์ ๊ฑฐ ๋ชจ๋ ๊ฒฐ๊ณผ
UNION ALL :์ค๋ณต์ ํฌํจํ์ฌ ๋ชจ๋ ๊ฒฐ๊ณผ
์ฐจ์งํฉ(MINUS) -NOT IN ์ฐ์ฐ์
๊ต์งํฉ(INTERSECT) - innter join
EXISTS
์กฐ๊ฑด์ ๋ง๋ ํํ์ด ์กด์ฌํ๋ฉด ๊ฒฐ๊ณผ์ ํฌํจ
์๊ด ๋ถ์ ์ง์๋ฌธ ํ์.
cs ํ ์ด๋ธ์ custid๊ฐ odํ ์ด๋ธ์ custid์ ์ผ์นํ๋ฉด ์กด์ฌํ๋ ๊ฒ (true) => name, address ์ถ
Last updated