1. ORDER BY
๐ฐ SELECT ๋ช ๋ น์ ํ๋ ์ง์ ์ด ์์ ๊ฒฝ์ฐ ๋ ์ฝ๋์ ์ถ๋ ฅ ์์๋ DBMS์ ๋ํดํธ ์์๋ฅผ ๋ฐ๋ฆ.
๐ฐ ๊ด๊ณํ DB์์ ๋ ์ฝ๋์ ๋ฌผ๋ฆฌ์ ์์๋ ํฐ ์๋ฏธ๊ฐ ์๊ณ , ๋์ ์ถ๋ ฅํ ๋ ORDER BY ์ ๋ก ์ ๋ ฌ ์์๋ฅผ ์ํ๋๋๋ก ์ง์ .
// ๊ธฐ๋ณธํ์
ORDER BY ํ๋ [ASC | DESC]
๐ฐ ORDER BY ๋ค์์ ์ ๋ ฌ ๊ธฐ์ค ํ๋๋ฅผ ์ ๊ณ ์ค๋ฆ์ฐจ์์ผ ๊ฒฝ์ฐ ASC ํค์๋๋ฅผ, ๋ด๋ฆผ์ฐจ์์ผ๊ฒฝ์ฐ DESC ํค์๋๋ฅผ ์ง์ .
๐ฐ ์์๋ฅผ ์๋ตํ๋ฉด ๋ํดํธ์ธ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ์ฉ๋๋ฏ๋ก ํค์๋ ASC๋ ๋ณดํต ์๋ต.
SELECT * FROM tCity ORDER BY popu;
SELECT * FROM tCity ORDER BY popu ASC;
๐ ์ธ๊ตฌ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ์ธ๊ตฌ๊ฐ ์์ ๋์๋ถํฐ ์ถ๋ ฅ.
SELECT * FROM tCity ORDER BY popu DESC;
๐ DESC๋ฅผ ๋ถ์ด๋ฉด ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ ์ธ๊ตฌ๊ฐ ๋ง์ ๋์๋ถํฐ ์ถ๋ ฅ.
๐ฐ ๋ ๊ฐ ์ด์์ ๊ธฐ์ค ํ๋๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ โก๏ธ ์ฒซ ๋ฒ์งธ ๊ธฐ์ค ํ๋์ ๊ฐ์ด ๊ฐ์ผ๋ฉด, ๋ ๋ฒ์งธ ๊ธฐ์ค ํ๋๋ฅผ ๋น๊ตํ์ฌ ์ ๋ ฌ ์์๋ฅผ ๊ฒฐ์ .
SELECT region, name, area, popu FROM tCity ORDER BY region, name DESC;
SELECT region, name, area, popu FROM tCity ORDER BY region ASC, name DESC;
๐ ์ง์ญ๋ณ๋ก ์ ๋ ฌํ๋ ๊ฐ์ ์ง์ญ์ ์ํ ๋์๋ผ๋ฆฌ๋ ์ด๋ฆ์ ๋ด๋ฆผ ์ฐจ์์ผ๋ก ์ ๋ ฌ.
๐ ORDER BY ๋ค์ ๊ธฐ์ค ํ๋๋ฅผ ์ฝค๋ง๋ก ๊ตฌ๋ถํ์ฌ ๋์ดํ๋ ๊ฐ ๊ธฐ์ค๋ณ๋ก ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ ๋ฐ๋ก ์ง์ ๊ฐ๋ฅ.
๐ region์ ์์๋ฅผ ์ง์ ํ์ง ์์์ผ๋ฏ๋ก ๋ํดํธ์ธ ASC๊ฐ์ ์ฉ. 1์ฐจ ์ ๋ ฌ ๊ธฐ์ค์ธ ์ง์ญ์ด ๊ฐ์ผ๋ฉด 2์ฐจ ๊ธฐ์ค์ธ ์ด๋ฆ์์ผ๋ก ์ ๋ ฌํ๋ ์ด๋๋ DESC ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ.
SELECT region, name, area, popu FROM tCity ORDER BY area ASC, name DESC;
๐ area๊ฐ ๋์ผํ ๊ฐ์ด ์์ผ๋ฏ๋ก ๋ ๋ฒ์งธ ์ ๋ ฌ ๊ธฐ์ค์ธ name์ ํจ๋ ฅ์ ๋ฐํํ์ง ์์.
๐ฐ ORDER BY ๊ธฐ์ค์ ๋ณดํต ํ๋๋ช ์ผ๋ก ํ์ง๋ง ์์๊ฐ์ผ๋ก๋ ์ง์ ๊ฐ๋ฅ. ํ๋ ์์ ๊ฐ์ ํ ์ด๋ธ ์์ฑ์์ ๋ฑ๋กํ ์์.
๐ฐ tCity์ ๊ฒฝ์ฐ name์ด 1๋ฒ, area๊ฐ 2๋ฒ, popu๊ฐ 3๋ฒ
SELECT * FROM tCity ORDER BY area;
SELECT * FROM tCity ORDER BY 2;
๐ ๋ฉด์ ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด area๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ ๋์ 2๋ฒ ํ๋ ๊ธฐ์ค์ผ๋ก ํด๋ ๊ฒฐ๊ณผ๋ ๊ฐ์
๐ฐ ํ ์ด๋ธ์ ์กด์ฌํ์ง ์์ ๊ณ์ฐ๊ฐ๋ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ ์ ์์.
SELECT name, popu * 10000 / area FROM tCity ORDER BY popu * 10000 / area;
SELECT name, popu * 10000 / area AS tmp FROM tCity ORDER BY tmp;
๐ ์ธ๊ตฌ์์ ๋ฉด์ ์ผ๋ก ๊ณ์ฐํ ์ธ๊ตฌ๋ฐ๋์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋์๋ฅผ ์ ๋ ฌ.
๐ ์ ๋ ฌ ๊ธฐ์ค์ ๊ผญ ๊ฐ์ด ์ถ๋ ฅํ ํ์๋ ์์ง๋ง ์ ๋๋ก ์ ๋ ฌํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ธ๊ตฌ๋ฐ๋๋ฅผ ๊ฐ์ด ์ถ๋ ฅ
๐ฐ ๋ ์ฝ๋์ ์กฐ๊ฑด์ ์ง์ ํ๋ WHERE ์ ๊ณผ ์ถ๋ ฅ ์์๋ฅผ ์ง์ ํ๋ ORDER BY ์ ์ ๋์์ ์ฌ์ฉ ๊ฐ๋ฅ.
SELECT * FROM tCity WHERE region = '๊ฒฝ๊ธฐ' ORDER BY area;
๐ ๊ฒฝ๊ธฐ๋์ ์๋ ๋์๋ง ๊ณจ๋ผ ๋ฉด์ ๋ณ๋ก ์ ๋ ฌ.
์ด๋ ORDER BY ์ ์ WHERE ์ ๋ณด๋ค ๋ค์ชฝ์ ์์ด์ผ ํจ.
2. DISTINCT
๐ฐ ์ค๋ณต๋ ๊ฐ์ ์ ๊ฑฐํ ๋ DISTINCT ํค์๋๋ฅผ ๋ถ์ธ๋ค.
ex. ๋์ ํ ์ด๋ธ์์ region ํ๋๋ง ์ฝ์ด ๋์๊ฐ ์ํ ์ง์ญ์ ๋ชฉ๋ก์ ์กฐ์ฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ SELECT region FROM tCity; ๋ก ์์ฑ
โก๏ธ ํ์ง๋ง ์ด๋ฐ ๊ฒฝ์ฐ ๊ฐ์ ๋์๊ฐ ์ฌ๋ฟ ์๋ ๊ฒฝ์ฐ ์ค๋ณตํด์ ์ถ๋ ฅ
โก๏ธ ๋จ์ํ ์ด๋ค ์ง์ญ์ด ์๋์ง๋ง ์กฐ์ฌํ๋ค๋ฉด ๊ตณ์ด ์ค๋ณต๋ ๊ฐ์ ๋ฐ๋ณตํด์ ์ถ๋ ฅํ ํ์๊ฐ ์์
โก๏ธ DISTINCT ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ณต๋ ๊ฐ ์ ๊ฑฐ.
SELECT DISTINCT region FROM tCity;
SELECT DISTINCT region FROM tCity ORDER BY region;
๐ DISTINCT ํค์๋๋ก ์ค๋ณต ์ ๊ฑฐ๋ฅผ ํ๋ค ๋ณด๋ฉด ์์๊ฐ ๋ฌ๋ผ์ง.
๐ ๋ง์ฝ ์ค๋ณต๋ ์ ๊ฑฐํ๊ณ ์ ๋ ฌ๋ ํ๊ณ ์ถ์ผ๋ฉด ORDER BY์ ์ ๋ถ์.
๐ฐ DISTINCT์ ๋ฐ๋ ํค์๋๋ ALL ์ด๋ฉฐ ์ค๋ณต ์ ๊ฑฐ ์์ด ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์ถ๋ ฅ.
๐ฐ ALL์ด ๋ํดํธ๋ผ์ ๊ตณ์ด ์ง์ ํ ํ์๋ ์์.
SELECT ALL depart FROM tStaff;
3. LIMIT
// ๊ธฐ๋ณธ ํ์
SELECT .... LIMIT [๊ฑด๋๋ธ ๊ฐ์], ์ด๊ฐ์
๐ฐ LIMIT ๊ตฌ๋ฌธ์ผ๋ก ํ์๋ฅผ ์ ํ.
๐ฐ ๊ฑด๋๋ธ ๊ฐ์๋ฅผ ์๋ตํ๋ฉด 0์ผ๋ก ์ ์ฉํ์ฌ ์ฒซ ํ ๋ถํฐ ์ถ๋ ฅ
SELECT * FROM tCity ORDER BY area DESC LIMIT 4;
SELECT * FROM tCity ORDER BY area DESC LIMIT 0, 4;
๐ ๋ฉด์ ์ด ๋์ ์์ 4๊ฐ ๋์๋ฅผ ๊ตฌํ๋ ๊ตฌ๋ฌธ.
SELECT * FROM tCity ORDER BY area DESC LIMIT 2, 3;
SELECT * FROM tCity ORDER BY area DESC LIMIT 3 OFFSET 2;
๐ ์์ชฝ 2๊ฐ๋ ๊ฑด๋๋ฐ๊ณ ์ดํ 3๊ฐ์ ํ์ ๊ตฌํจ.
๐ ์์ชฝ ๋ช ๊ฐ๋ฅผ ๊ฑด๋๋ด ํ ์ผ์ ๊ฐ์ ๋งํผ ๋ณด์ฌ์ฃผ๋ ์ด ๊ตฌ๋ฌธ์ ๊ฒ์๋ฌผ์ ํ์ด์ง ๋จ์๋ก ๋์ด์ ์ถ๋ ฅํ ๋ ์ค์ฉ์ .
4. OFFSET FETCH
๐ฐ ํ ์ด๋ธ์ ์ผ๋ถ ๋ ์ฝ๋๋ง ์กฐํํ๋ ์์ ์ ๋น๋๊ฐ ๋๊ณ ์ค์ฉ์ ์ด์ง๋ง DBMS ๋ณ๋ก ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์ด ๋ค๋ฆ.
โก๏ธ SQL ํ์ค์ด ์๋ก OFFSET FETCH ๋ฌธ๋ฒ์ ๋ง๋ฆ.
โก๏ธ ์ผ๋ถ๋ถ์ ํน์ ํ๋ ค๋ฉด ์์๋ฅผ ์ง์ ํด์ผ ๋์ ORDER BY ๋ฌธ์ด ๋ฐ๋์ ์์ด์ผ ํจ.
โก๏ธ ๊ทธ๋์ OFFSET FETCH ๋ ๋ณ๋์ ๊ตฌ๋ฌธ์ด ์๋๋ผ ORDER BY์ ์ต์
// ๊ธฐ๋ณธ ํ์
ORDER BY ๊ธฐ์คํ๋ OFFSET ๊ฑด๋๋ธ ํ ์ ROWS FETCH NEXT ์ถ๋ ฅํ ํ ์ ROWS ONLY;
SELECT * FROM tCity ORDER BY area DESC OFFSET 0 ROWS FETCH NEXT 4 ROWS ONLY;
SELECT * FROM tCity ORDER BY area DESC LIMIT 0, 4;
๐ ๋ฉด์ ์์ผ๋ก ์์ 4๊ฐ์ ๋์๋ฅผ ์ถ๋ ฅ. ๋ฉด์ ์ ๋ด๋ฆผ์ฐจ์์ ์ ๋ ฌ ํ 4๊ฐ์ ํ๋ง ์ฝ์.
โก๏ธ OFFSET์ ์ง์ ํ๋ฉด ์์ชฝ ์ผ๋ถ๋ฅผ ๊ฑด๋๋ธ ์ ์์.
SELECT * FROM tCity ORDER BY areabDESC OFFSET 2 ROWS FETCH NEXT 3 ROWS ONLY;
SELECT * FROM tCity ORDER BY area DESC LIMIT 2, 3;
๐ ์์ 2๊ฐ๋ฅผ ๊ฑด๋ ๋ฐ๊ณ ๋ค์ ์์์ธ 3, 4, 5์ 3๊ฐ์ ๋์๋ฅผ ์กฐ์ฌ.
๐ฐ WHERE ๊ตฌ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ํํฐ๋ง์ ๋จผ์ ํ๊ณ ๊ทธ ์ผ๋ถ ๋ ์ฝ๋๋ง ์ถ๋ ฅํ ์ ์์.
SELECT * FROM tCity WHERE metro = 'n' ORDER BY area DESC OFFSET 2 ROWS FETCH NEXT 3 ROWS ONLY;
SELECT * FROM tCity WHERE metro = 'n' ORDER BY area DESC LIMIT 2, 3;
๐ ๊ด์ญ์๋ ์ ์ธํ๊ณ ์์๋ฅผ ๋งค๊ฒจ 3๋ฑ์์ 5๋ฑ๊น์ง ์ถ๋ ฅ.
[ ๋ด์ฉ ์ถ์ฒ : IT ํ์ ๊ฐ์ ]
'Database > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] GROUP BY, HAVING (0) | 2024.02.23 |
---|---|
[MySQL] ์ง๊ณ ํจ์ (aggregate function) (0) | 2024.02.23 |
[MySQL] SELECT๋ฌธ | WHERE, NULL, ๋ ผ๋ฆฌ์ฐ์ฐ์, LIKE, BETWEEN, IN (0) | 2024.02.23 |
[MySQL] SELECT๋ฌธ | ๊ธฐ๋ณธํ์, ํ๋๋ชฉ๋ก, ๋ณ๋ช , ๊ณ์ฐ๊ฐ์ถ๋ ฅ (0) | 2024.02.23 |
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ (1) | 2024.02.12 |