Programming/DB

[MySQL] JOIN ๋ฌธ๋ฒ•, left join, left outer join, inner join

Space_Jin 2022. 5. 29. 10:45
728x90
๋ฐ˜์‘ํ˜•

์œ„ ์‚ฌ์ง„์˜ ์ถœ์ฒ˜: https://yoo-hyeok.tistory.com/98

SQL join ๋ฌธ์ด ๊ฐ€์žฅ ์ž˜ ์ •๋ฆฌ ๋˜์–ด ์žˆ๋Š” ๊ทธ๋ฆผ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

join: ๋™์ผํ•œ column์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜๋กœ ํ•ฉ์นฉ๋‹ˆ๋‹ค.

left(right) join ๊ณผ left(right) outer join์˜ ์ฐจ์ด์ 

์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋™์ผ ํ•ฉ๋‹ˆ๋‹ค.

left join์˜ ๊ฒฝ์šฐ ๋™์ผํ•œ column์œผ๋กœ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง€๊ณ  left ์ชฝ(A)์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ณ  B์˜ ๋ฐ์ดํ„ฐ๋Š” null๋กœ ํ‘œ์‹œ ๋ฉ๋‹ˆ๋‹ค.

 

A ํ…Œ์ด๋ธ” id name
1 1 aaa
2 2 AAA

 

B ํ…Œ์ด๋ธ” id name
1 2 AAA
2 3 bbb

left join ๊ฒฐ๊ณผ

A left join B id name id name
1 1 aaa null null
2 2 AAA 2 AAA
SELECT * from A left join B on A.id = B.id;

id๋ฅผ ๊ธฐ์ค€์œผ๋กœ A ํ…Œ์ด๋ธ”์˜ ์†์ƒ ์—†์ด ๋‘ ํ…Œ์ด๋ธ”์„ ํ•ฉ์นฉ๋‹ˆ๋‹ค.

B ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” id์˜ ๋ฐ์ดํ„ฐ๋Š” null๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด null ๊ฐ’์„ where ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋ฉด A ํ˜น์€ B๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

A์™€ B ํ…Œ์ด๋ธ” ๊ณตํ†ต ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ (inner join๊ณผ ๋™์ผ)

A left join B id name id name
1 2 AAA 2 AAA
SELECT * from A left outer join B on A.id = B.id where B.id is not null;

 

์œ„ ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๋Š” inner join์„ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผ ํ•ฉ๋‹ˆ๋‹ค.

SELECT * from A inner join B on A.id = B.id;

A ํ…Œ์ด๋ธ”์—๋งŒ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ

A left join B id name id name
1 1 aaa null null
SELECT * from A left outer join B on A.id = B.id where B.id is null;

 

728x90
๋ฐ˜์‘ํ˜•