DATABASE/Theory

[SQL] ์„œ๋ธŒ์ฟผ๋ฆฌ

ITs Min 2023. 12. 26.

๐Ÿ” 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 ๋“ฑ์ด ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

๋Œ“๊ธ€

TOP

๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๋• ๋„ˆ๋ฌด ๋Šฆ์€ ๊ฑฐ๋‹ค.