๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Database/Do it! SQL ์ž…๋ฌธ

[Do it! SQL ์ž…๋ฌธ] 04-2. ์„œ๋ธŒ ์ฟผ๋ฆฌ

์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์ฟผ๋ฆฌ ์•ˆ์— ํฌํ•จ๋˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์กฐ์ธํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ์ผ์น˜ํ•˜๋Š” ํ–‰์„ ์ฐพ๊ฑฐ๋‚˜, ์กฐ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์กฐ์ธํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋ฐ˜๋“œ์‹œ ์†Œ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ฃผ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— 1๋ฒˆ๋งŒ ์‹คํ–‰๋œ๋‹ค.
  • ๋น„๊ต ์—ฐ์‚ฐ์ž์— ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์˜ค๋ฅธ์ชฝ์— ๊ธฐ์ˆ ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋‚ด๋ถ€์—๋Š” ์ •๋ ฌ ๊ตฌ๋ฌธ์ธ ORDER BY๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

WHERE ๋ฌธ์— ์„œ๋ธŒ ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

์„œ๋ธŒ ์ฟผ๋ฆฌ ์ค‘์—์„œ๋„ WHERE ๋ฌธ์— ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Nested subquery)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์กฐ๊ฑด๋ฌธ์˜ ์ผ๋ถ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ๋˜ ๋‹ค๋ฅธ SELECT ๋ฌธ์„ ์‚ฌ์šฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ฃผ ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ๋น„๊ต ์—ฐ์‚ฐ์ž =, <, <=, >, >=, <> ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๊ฐ€ 1๊ฑด ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๊ฐ€ 2๊ฑด ์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” ๋น„๊ต ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹Œ ๋‹ค์ค‘ ํ–‰ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

๋‹ค์ค‘ํ–‰ ์—ฐ์‚ฐ์ž

  • IN : ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ์กด์žฌํ•˜๋Š” ์ž„์˜์˜ ๊ฐ’๊ณผ ๊ฐ™์€ ์กฐ๊ฑด ๊ฒ€์ƒ‰
  • ANY : ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ์กด์žฌํ•˜๋Š” ์–ด๋А ํ•˜๋‚˜์˜ ๊ฐ’์ด๋ผ๋„ ๋งŒ์กฑํ•˜๋Š” ์กฐ๊ฑด ๊ฒ€์ƒ‰
  • EXISTS : ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€ ํ™•์ธ
  • ALL : ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๊ฐ’์„ ๋งŒ์กฑํ•˜๋Š” ์กฐ๊ฑด ๊ฒ€์ƒ‰

 

๋‹จ์ผ ํ–‰ ์„œ๋ธŒ ์ฟผ๋ฆฌ

SELECT [์—ด ์ด๋ฆ„]
FROM [ํ…Œ์ด๋ธ”]
WHERE [์—ด] = (SELECT [์—ด ์ด๋ฆ„] FROM [ํ…Œ์ด๋ธ”])

 

 

 

 

๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ ์ฟผ๋ฆฌ

๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ž€ ์„œ๋ธŒ ์ฟผ๋ฆฌ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ 2ํ–‰ ์ด์ƒ์ธ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.

 

IN ๋ฌธ, NOT IN ๋ฌธ

 

 

 

ANY ๋ฌธ

 

EXISTS ๋ฌธ, NOT EXISTS ๋ฌธ

 

ALL ๋ฌธ

https://www.w3schools.com/sql/sql_any_all.asp

 

W3Schools.com

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

FROM ๋ฌธ์— ์„œ๋ธŒ ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

SELECT [์—ด ์ด๋ฆ„] 
FROM [ํ…Œ์ด๋ธ”] AS a
INNER JOIN (SELECT [์—ด ์ด๋ฆ„] FROM [ํ…Œ์ด๋ธ”] WHERE [์—ด] = [๊ฐ’]) AS b ON [a.์—ด] = [b.์—ด]
WHERE [์กฐ๊ฑด]

 

 

 

SELECT ๋ฌธ์— ์„œ๋ธŒ ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

SELECT ๋ฌธ์— ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ 1๊ฐœ์˜ ํ–‰์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋ฏ€๋กœ SUM, COUNT, MIN, MAX ๋“ฑ์˜ ์ง‘๊ณ„ ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‰ฌ์šฐ๋ฏ€๋กœ SELECT ๋ฌธ์—์„œ๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์ง‘๊ณ„ ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒŒ ์ข‹๋‹ค. SELECT ๋ฌธ์— ์‚ฌ์šฉ๋œ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” 1๊ฐœ ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.