Amenable
Amenable's Blog
Amenable
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (189)
    • ๐Ÿ“‚ JAVA (87)
      • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” (65)
      • ์ฃผ์š” ๊ฐœ๋… (22)
    • ๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์  (22)
      • ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ (1)
      • ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด (2)
      • ํด๋ฆฐ ์ฝ”๋“œ (8)
      • ํ•จ๊ป˜ ์ž๋ผ๊ธฐ (1)
      • ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” HTTP&Network Basic (10)
    • ๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€์ด (0)
    • ๐Ÿ“‚ ๋„คํŠธ์›Œํฌ (14)
      • ๊ฐœ๋… (6)
      • ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” 1%์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ (8)
    • ๐Ÿ“‚ ์Šคํ”„๋ง (13)
      • ๊ธฐ๋ณธ ๊ฐœ๋… (13)
    • ๐Ÿ“‚ WEB (5)
    • ๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ (12)
      • ๊ฐœ๋… (2)
      • ์ •๋ ฌ (8)
      • ํŠธ๋ฆฌ (2)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
      • ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ (2)
      • ์ตœ๋‹จ ๊ฒฝ๋กœ (2)
      • ๋ฌธ์ž์—ด (2)
      • ETC (4)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜_๋ฌธ์ œํ’€์ด (4)
      • BOJ_๋ฐฑ์ค€ (4)
    • ๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (3)
    • ๐Ÿ“‚ DevOps (2)
      • ๋ฐฐํฌ (2)
    • ๐Ÿ“‚ ํ›„๊ธฐ (8)
      • ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค(ํ”„๋ฆฌ์ฝ”์Šค) (4)
      • 2023๋…„ (3)
      • 2024๋…„ (1)
    • ๐Ÿ“‚ ํšŒ๊ณ  (1)
      • 2023๋…„ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿš€ GitHub

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Amenable
๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/๊ฐœ๋…

์„œ๋ธŒ์ฟผ๋ฆฌ(Subquery)

์„œ๋ธŒ์ฟผ๋ฆฌ(Subquery)
๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/๊ฐœ๋…

์„œ๋ธŒ์ฟผ๋ฆฌ(Subquery)

2023. 4. 18. 23:56

1. ๊ฐœ๋… ๐Ÿฐ

  ์„œ๋ธŒ์ฟผ๋ฆฌ(Subquery)๋ž€ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ ๋‚ด๋ถ€์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” SELECT ๋ฌธ์„ ์˜๋ฏธํ•œ๋‹ค.

  ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์™ธ๋ถ€ ์ฟผ๋ฆฌ(Outer Query) ๋˜๋Š” ๋ฉ”์ธ ์ฟผ๋ฆฌ(Main Query)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ๋‚ด๋ถ€ ์ฟผ๋ฆฌ(Inner Query)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์ ธ์„œ ํ‘œํ˜„๋˜์–ด์•ผ ํ•œ๋‹ค.

 

2. ์ข…๋ฅ˜ ๐Ÿช

  ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ์œ„์น˜์— ๋”ฐ๋ผ์„œ 3๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

SELECT ์ปฌ๋Ÿผ1, ์ปฌ๋Ÿผ2, (SELECT ...) -- ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Scalar Subquery)
FROM (SELECT ...) -- ์ธ๋ผ์ธ ๋ทฐ(Inline View)
WHERE col = (SELECT ...) -- ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Nested Subquery)
  1. ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Scalar Subquery)
    SELECT ๋ฌธ์— ์ž‘์„ฑํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ
    ํ•˜๋‚˜์˜ ํ–‰๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์ฒ˜๋Ÿผ ์‚ฌ์šฉ
  2. ์ธ๋ผ์ธ ๋ทฐ(Inline View)
    FROM ๋ฌธ์— ์ž‘์„ฑํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ
    ๋ทฐ(View)์ฒ˜๋Ÿผ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  3. ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Nested Subquery)
    WHERE ๋ฌธ์— ์ž‘์„ฑํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ
    ๋‹จ์ผํ–‰, ๋‹ค์ค‘ํ–‰, ๋‹ค์ค‘์—ด์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ

  ๊ณ„์†ํ•ด์„œ ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด์ž.

 

3. ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Scalar Subquery) ๐Ÿฆ

  • SELECT ๋ฌธ์— ์ž‘์„ฑํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ
  • ํ•˜๋‚˜์˜ ํ–‰๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์ฒ˜๋Ÿผ ์‚ฌ์šฉ
SELECT a.a1, (SELECT b.b1 
	FROM b_table b 
	WHERE a.a2 = b.b2) AS b_no
FROM a_table a;

 

4. ์ธ๋ผ์ธ ๋ทฐ(Inline View) ๐Ÿญ

  • FROM ๋ฌธ์— ์ž‘์„ฑํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ
  • ๋ทฐ(View)์ฒ˜๋Ÿผ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
SELECT a.a1, a.a2
FROM (
	SELECT *
	FROM b_table b
	WHERE b.employee_rank = '์‚ฌ์›'
	) a;

 

5. ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Nested Subquery) ๐Ÿง

  • WHERE ๋ฌธ์— ์ž‘์„ฑํ•˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ
  • ๋‹จ์ผํ–‰, ๋‹ค์ค‘ํ–‰, ๋‹ค์ค‘์—ด์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ

1. ๋‹จ์ผํ–‰

SELECT a.a1, a.a2
FROM a_table a
WEHRE a.name = (SELECT b.b1
		FROM b_table b
		WHERE b.name = 'amenable'
		);

2. ๋‹ค์ค‘ํ–‰

  ๋‹ค์ค‘ํ–‰์„ ๋ฆฌํ„ด ๋ฐ›์„ ๋•Œ์—๋Š” IN, ANY, ALL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • IN
    ๋‹ค์ˆ˜์˜ ๋น„๊ต๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ๋น„๊ต๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๊ฐ™์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด TRUE
SELECT a.a1
FROME a_table a
WEHRE a.age IN (SELECT b.age
		FROM b_table b
		WHERE b.height = '180');
  • ANY
    ๋‹ค์ˆ˜์˜ ๋น„๊ต๊ฐ’ ์ค‘ ํ•œ ๊ฐœ๋ผ๋„ ๋งŒ์กฑํ•˜๋ฉด TRUE
    IN๊ณผ ๋‹ค๋ฅธ ์ ์€ ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ
SELECT a.a1
FROME a_table a
WEHRE a.age > ANY (SELECT b.age
		FROM b_table b
		WHERE b.height = '180');
  • ALL
    ์ „์ฒด ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผ๋งŒ TRUE
SELECT a.a1
FROME a_table a
WEHRE a.age > ALL (SELECT b.age
		FROM b_table b
		WHERE b.height = '180');

3. ๋‹ค์ค‘์—ด

SELECT a.a1, a.a2
FROM a_table a
WEHRE (a.age, a.height) in (SELECT b.age, b.height
		FROM b_table b
		WHERE b.name = 'amenable'  
		);

 

ํ•ด๋‹น ๊ธ€์€
Inpa ๋‹˜์˜ '[MYSQL] ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฐœ๋… & ๋ฌธ๋ฒ• ์ •๋ฆฌ',
Carami ๋‹˜์˜ 'IN, ANY, ALL ์„ค๋ช…'
์„ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

'๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค > ๊ฐœ๋…' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ (Transaction Isolation Level)  (1) 2023.06.18
ํŠธ๋žœ์žญ์…˜(Transaction)  (0) 2023.06.17
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ‚ค(Key) ๊ฐœ๋… & ํ‚ค(Key) ์ข…๋ฅ˜  (0) 2023.06.13
์กฐ์ธ(JOIN)  (0) 2023.04.18
๋ทฐ(VIEW)  (0) 2023.04.17
  • 1. ๊ฐœ๋… ๐Ÿฐ
  • 2. ์ข…๋ฅ˜ ๐Ÿช
  • 3. ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Scalar Subquery) ๐Ÿฆ
  • 4. ์ธ๋ผ์ธ ๋ทฐ(Inline View) ๐Ÿญ
  • 5. ์ค‘์ฒฉ ์„œ๋ธŒ ์ฟผ๋ฆฌ(Nested Subquery) ๐Ÿง
'๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/๊ฐœ๋…' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํŠธ๋žœ์žญ์…˜(Transaction)
  • [DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ‚ค(Key) ๊ฐœ๋… & ํ‚ค(Key) ์ข…๋ฅ˜
  • ์กฐ์ธ(JOIN)
  • ๋ทฐ(VIEW)
Amenable
Amenable
CS, ์ž๋ฐ”, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์Šคํ”„๋ง, ์Šคํ”„๋ง ๋ถ€ํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.