DATABASE/Theory
[SQL] ์๋ธ์ฟผ๋ฆฌ
ITs Min
2023. 12. 26. 22:09
๐ SQL ์๋ธ์ฟผ๋ฆฌ์ ๋ํ ๊ธฐ๋ณธ ๊ฐ๋
SQL ์๋ธ์ฟผ๋ฆฌ๋ ํ๋์ SQL ๋ฌธ์ฅ ์์ ํฌํจ๋ ๋ค๋ฅธ SQL ๋ฌธ์ฅ์ด๋ค. ์ฃผ๋ก ๋ ๊ฐ์ง ์ ํ์ผ๋ก ๋๋ ์ ์๋ค.
๐ ๋น๊ต๋ฅผ ์ํ ์๋ธ์ฟผ๋ฆฌ
SQL ์๋ธ์ฟผ๋ฆฌ๋ ์ฃผ๋ก WHERE ๊ตฌ๋ฌธ ์์์ ์ฌ์ฉ๋๋ฉฐ, ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
SELECT column1, column2, ...
FROM table_name
WHERE column_name operator (SELECT column_name FROM table_name WHERE condition);
[ํ์ฉ์์]
-- ๊ฐ ๋ถ์๋ณ๋ก ๊ฐ์ฅ ๋์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ง์์ ์ฐพ๋ ์ฟผ๋ฆฌ
SELECT employee_name, salary, department
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees GROUP BY department);
๐ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์๋ธ์ฟผ๋ฆฌ
SQL ์๋ธ์ฟผ๋ฆฌ๋ ์ฃผ๋ก SELECT ๊ตฌ๋ฌธ ์์์ ์ฌ์ฉ๋๋ฉฐ, ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ๋ถ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ค.
SELECT column1, column2, ..., (SELECT column_name FROM table_name WHERE condition) AS alias_name
FROM table_name;
[ํ์ฉ์์]
-- ๊ฐ ๋ถ์์ ํ๊ท ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ง์์ ์ฐพ๋ ์ฟผ๋ฆฌ
SELECT employee_name, salary, department
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees GROUP BY department);
๐ ์ฃผ์์ฌํญ๊ณผ ์ถ๊ฐ ์ ๋ณด
- ๋จ์ผ ํ ์๋ธ์ฟผ๋ฆฌ์ฌ์ผ ํ๋ฉฐ, ์ค์นผ๋ผ ๊ฐ์ ๋ฐํํด์ผ ํ๋ค. (์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ๋ก ๋์ค๋ ๊ฐ์ ๋ฐ๋์ ํ๋)
- ์์ ์์๋ ๋น๊ต ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉ๋๋๋ฐ, IN, EXISTS, ALL, ANY ๋ฑ์ด ์์ฃผ ์ฌ์ฉ๋๋ค.
- ์ฑ๋ฅ์ ๋ํ ๊ณ ๋ ค๊ฐ ํ์ํ๋ฉฐ, ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ ์ ํ ํ์ฉํด์ผ ํ๋ค.