[MySQL] MySQL ๊ณต๋ถํ๊ธฐ(1) - SQL ์๋์์
๐ท MySQL ์๋ ์์
1๏ธโฃ FROM : SQL ์ฟผ๋ฆฌ๋ฌธ์ ๋์์ด ๋๋ ํ ์ด๋ธ์ ๊ฐ๋ฆฌํจ๋ค.
SELECT *
FROM <TABLE>
2๏ธโฃ ON : JOIN์์ ์กฐ๊ฑด์ ์ ํํ์ฌ JOIN ์ํฌ ์ ์๋ค.
3๏ธโฃ JOIN : ๋ฐ์ดํฐ ๊ฒ์์ ์ํด ์๋ก๋ค๋ฅธ ํ ์ด๋ธ์ ์ฐ๊ฒฐ์ํฌ ์ ์๋ค.
SELECT *
FROM A JOIN B ON A.no = B.no
4๏ธโฃ WHERE : SQL ์ฟผ๋ฆฌ๋ฌธ์์ ๋ฐ์ดํฐ ๊ฒ์์ ์ํ ์กฐ๊ฑด์ ์ ๋ ฅํ ์ ์๋ค.
SELECT *
FROM <TABLE>
WHERE TABLE.no = 1
5๏ธโฃ GROUP BY : ๊ทธ๋ฃนํ ํ ์ปฌ๋ผ์ ์ง์ ํ์ฌ ํน์ ์์ฑ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํ์ฌ ๊ฒ์ํ ์ ์๋ค.
SELECT brandName, AVG(price)
FROM Store
GROUPBY brandName;
6๏ธโฃ CUBE | ROLLUP
์์ ๊ฐ์ ํ ์ด๋ธ์ด ์์ ๋ GROUP BY๋ฅผ ํตํด menu๋ณ ํ๋งค๊ธ์ก์ ํ๊ท ์ ๊ตฌํด๋ณด๋ฉด
SELECT menu, AVG(price)
FROM STORE
GROUP BY menu;
- ROLLUP : ROLLUP ํจ์๋ GROUP BY์ ๊ฐ์ด ์ฐ์ด๋๋ฐ ROLLUP(์ฒซ๋ฒ์งธ ์ธ์, ๋๋ฒ์งธ ์ธ์) ๋ฅผ ์ฐ๊ฒ๋๋ฉด GROUP BY ์ ๊ฒฐ๊ณผ(์ฒซ๋ฒ์งธ ์ธ์๋ณ ๋๋ฒ์งธ ์ธ์)์ ๊ทธ์ ๋ํ ์๊ณ, ๊ทธ๋ฆฌ๊ณ ์ด๊ณ ๊น์ง ๋์ค๊ฒ ๋๋ค.
๐ก MYSQL ์์๋ WITH ROLLUP ๊ตฌ๋ฌธ์ ์ด๋ค.
SELECT brandName, menu, SUM(price)
FROM STORE
GROUP BY brandName, menu WITH ROLLUP;
์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด brandName ๋ณ menu์ ๊ฐ๊ฒฉ๋ค์ด ๋์ค๊ณ , ๊ทธ ๋ฐ์๋ ๋ธ๋๋๋ณ ๋ฉ๋ด์ ๊ฐ๊ฒฉ๋ค์ ํฉ๊ณ, ์ต์ข ๋ฐ์๋ ์ด ํฉ๊ณ๊ฐ ๋์ค๊ฒ ๋๋ค.
- CUBE : CUBE ํจ์๋ ๋ค์ํ ์ง๊ณ์ ๋ํ ๊ฒฐ๊ณผ๋ค์ ์ถ๋ ฅํด์ฃผ๋๋ฐ MYSQL์์๋ 8.0 ๋ฒ์ ์ดํ๋ถํฐ๋ ์ง์ํ์ง ์๊ฒ ๋์๋ค.
7๏ธโฃ HAVING : HAVING์ ์ GROUP BY ์ ๊ฐ์ด ์ฐ์ด๋๋ฐ GROUP BY ์์ ์กฐ๊ฑด์ ๋ถ์ด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ฉด ๋๋ค.
SELECT menu, Avg(price)
FROM Store
GROUP BY menu
HAVING Avg(price) > 18000;
8๏ธโฃ SELECT : ๊ฐ์ ๊ฐ์ ธ์ฌ Column์ ์ ํํ๋ค.
9๏ธโฃ DISTINCT : ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ธ์ํจ๋ค.
๐ ORDER BY : ASC/DESC๋ฅผ ํตํด ์ค๋ฆ์ฐจ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.