์นดํ ๊ณ ๋ฆฌ ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ์ ๊ฐ์๋ฉด ํด๋น ์๋ฆฌ์ฆ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
- ํด๋น ์๋ฆฌ์ฆ๋ฅผ ์์ํ๋ฉฐ
- ๊ธฐ์ด ์ด๋ก ๋ค์ง๊ธฐ
- ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ ์๋ฆฌ์ฆ๋ฅผ ๋ง์น๋ฉฐ ๋ถ์ -์ด์ ๋ญ ํด์ผ ํ๋์?
๋ชฉ์ฐจ
- LIMIT
- ์ถ๋ ฅ ์ ํํ๊ธฐ
- OFFSET
- ์๋ธ ์ฟผ๋ฆฌ
- ANY
- SOME
- ALL
LIMIT
์ฐ๋ฆฌ๊ฐ ์ฐ๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ํ๋ค๋ฉด LIMIT๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํ์์ด๋ค.
LIMIT์ ์ด์ฉํด์ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๊ฒ ๋ถ๋ด์ ์ค์ฌ์ค ์ ์๋ค.
์๋ฅผ ๋ค์ด 1์ต๊ฐ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
1์ต๊ฐ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ์์ ์ฌ์ฉ์ ํค ๋งํผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๊ณ ๋ณด๊ณ ์ถ๋ค๊ณ ํ๋ฉด
SELECT name, height
FROM usertb1
ORDER BY height ASC;
์ฐ๋ฆฌ๋ ์ง๋ ์๊ฐ SELECT๋ฅผ ๋ง์คํฐํ์ผ๋ ์ด์ ๋๋ ์ฝ๋ค.
์ฐ๋ฆฌ๊ฐ ์ํ๋๋๋ก 1์ต๋ช ์ ๋ฐ์ดํฐ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค.
๊ทผ๋ฐ 1์ต๊ฐ๋ฅผ ๋ค ๋ณด๋๊ฑด ๋ฌด๋ฆฌ๊ณ , ์์ 10๋ช
๋ง ๋ณด๊ณ ์ถ๋ค๋ฉด ์ด๋กํ ๊น?
1์ต๊ฐ๋ฅผ ๋ค ๋ถ๋ฌ์์ 10๋ช ๋ง ๋ณผ๊น?
๊ทธ๋ผ ๋๋จธ์ง 99,999,990 ๊ฐ์ ๋ฐ์ดํฐ๋ ๊ดํ ๋ถ๋ฌ์จ ๊ฒ์ด๋ค.
์ด๋ด ๋ ๋ฐ๋ก LIMIT์ ์ฌ์ฉํ๋ค.
์ถ๋ ฅ ์ ํํ๊ธฐ
SELECT ํ๋๋ช
FROM ํ
์ด๋ธ๋ช
LIMIT ์ ํํ ๊ฐฏ์
๊ทธ๋ผ ์๊น ์ฐ๋ฆฌ๊ฐ ์ํ๋ 1์ต๊ฐ์ ๋ฐ์ดํฐ์์ ์์ 5๋ช ์ ํค๋ฅผ ์ ๋ ฌํ๋ค๋ฉด?
SELECT name, height
FROM usertb1
ORDER BY height ASC
LIMIT 5;
์ด๋ ๊ฒ ๋๋ค๋ฉด ์์ 5๊ฐ๋ง ์ถ๋ ฅ! ๊ณผ ๊ฐ์ ๋ง์ด ๋๋ค.
OFFSET
์ฌ๊ธฐ์ ๋ด์น๊น์ ๋ ๊ฐ๋ณด์.
1์ต๊ฐ์ ๋ฐ์ดํฐ์์ 5๋ฒ์งธ ๋ฐ์ดํฐ ๋ถํฐ +3๋ฒ์งธ ๋ฐ์ดํฐ์ ํค,
1์ต๊ฐ์ ๋ฐ์ดํฐ์์ 100๋ฒ์งธ ๋ฐ์ดํฐ๋ถํฐ +13๋ฒ์จฐ ๋ฐ์ดํฐ์ ํค
์ ๊ฐ์ด ์ด๋์๋ถํฐ ์ด๋๊น์ง๋ฅผ OFFSET์ผ๋ก ์ง์ ํ ์ ์๋ฐ.
SELECT name, height
FROM usertb1
ORDER BY height ASC
LIMIT 5 OFFSET 3;
ํน์ ์ด๋ฅผ ๋ ์ค์ฌ์
SELECT name, height
FROM usertb1
ORDER BY height ASC
LIMIT 3, 5;
์ด๋ ๊ฒ ๋๋ค๋ฉด 3๋ฒ์จฐ ์คํ์ ๋ถํฐ 5๊ฐ๋ฅผ LIMIT์ ๊ฐ์ ๋ง์ด ๋๋ค.
์๋ธ ์ฟผ๋ฆฌ
์๋ธ ์ฟผ๋ฆฌ๋ ๊ฐ๋จํ๊ฒ ์ฟผ๋ฆฌ ์์ ์ฟผ๋ฆฌ์ด๋ค.
์๋ฅผ ๋ค์ด๋ณด์.
๋ง์ฝ ์ฐ๋ฆฌ์ usertb์ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ํค๊ฐ ์๋ค๊ณ ํ์ ๋, ํน์ ์ธ๋ฌผ์ ํค๋ณด๋ค ํฐ ์ฌ๋๋ค์ ์ถ๋ ฅํ๊ณ ์ถ๋ค.
๊ทธ๋ผ ์ด๋ป๊ฒ ํด์ผํ ๊น?
- ์ฐ์ WHERE์ ํตํด ํน์ ์ธ๋ฌผ์ ํค๋ฅผ ์ฐพ๋๋ค.
- WHERE์ ํตํด ํน์ ์ธ๋ฌผ์ ํค๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ค๋ค.
ํด๋ณด์
์ฐ์ WHERE์ ํตํด ํน์ ์ธ๋ฌผ์ ํค๋ฅผ ์ฐพ๋๋ค.
SELECT name, height
FROM usertb1
WHERE name = '์ฅ์์ต';
๊ทธ๋ผ ๊ฒฐ๊ณผ๋ก ์ฅ์์ต๊ณผ 183์ด ๋์จ๋ค.
WHERE์ ํตํด ํน์ ์ธ๋ฌผ์ ํค๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ค๋ค.
SELECT name, height
FROM usertb1
WHERE height >= 183;
์ ๋๋ฌด ๋นํจ์จ์ ์ด๋ค.
์ด ๋ ๋ฐ๋ก ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์๋ธ์ฟผ๋ฆฌ๋ ์ฟผ๋ฆฌ๋ฌธ ์์ ์ฟผ๋ฆฌ๋ฌธ์ด ์กด์ฌํ๋ ๊ฒ์ด๋ค.
์์ ๋๋ฝ๊ณ ์์ฃผ ๋นํจ์จ์ ์ธ ์ฟผ๋ฆฌ๋ฌธ์ ์๋ธ์ฟผ๋ฆฌ๋ก ๋ง๋ค๋ฉด
SELECT name, height
FROM usertb1
WHERE height >= (select height from usertb1 where name = '์ฅ์์ต');
์ฌ๊ธฐ์ ์ฃผ์ํด์ผํ ์ ์ด ์๋ค.
์๋ธ ์ฟผ๋ฆฌ๋ ํ๋์ ๊ฐ๋ง ๋ฐํํ ๋ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ํฉ
SELECT name, height
FROM usertb1
WHERE height >= (select height from usertb1 where name = '์ฅ์์ต' or name = '๊นํธ์ค');
์ง๊ธ ์ด๊ฒ ์๋๋ ์ด์ ๋ ์๋ธ ์ฟผ๋ฆฌ๊ฐ 2๊ฐ์ ๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์กฐ๊ฑด์ ๋ง์ถฐ์ผํ ์ง ๋ชจ๋ฅธ๋ค๋ ๊ฒ์ด๋ค.
์ด ๋ ์ฌ์ฉํ๋ ๊ฒ๋ค์ด ๋ฐ๋ก ANY์ ALL, SOME์ด๋ค.
ANY / SOME : ์๋ธ ์ฟผ๋ฆฌ์ OR
ANY๋ ์๋ธ ์ฟผ๋ฆฌ์ ๋ฐํ๋ค ์ค ํ๋๋ผ๋ ํด๋นํ๋ค๋ฉด ๋๋ OR์ด๋ค.
SELECT name, height
FROM usertb1
WHERE height >= ANY (select height from usertb1 where name = '์ฅ์์ต' or name = '๊นํธ์ค');
๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ ์ ์๋ค.
ALL : ์๋ธ ์ฟผ๋ฆฌ์ AND
ALL์ ์๋ธ ์ฟผ๋ฆฌ์ ๋ฐํ๋ค ์ค ๋ชจ๋ํด๋น๋๋ AND์ ๊ฐ์ ๋ง์ด๋ค.
SELECT name, height
FROM usertb1
WHERE height >= ALL (select height from usertb1 where name = '์ฅ์์ต' or name = '์ํฅ๋ฏผ');
์นดํ ๊ณ ๋ฆฌ ์ด๋ณด์๋ ์ค๋นํ๋ SQL ์ฝ๋ฉ ํ ์คํธ์ ๊ฐ์๋ฉด ํด๋น ์๋ฆฌ์ฆ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋๊ธ