29_Oct_2021 ๐Ÿฐ ์—˜๋ฆฌ์Šค AI ํŠธ๋ž™ TIL: SQL II

์œ ํ™˜์ตยท2021๋…„ 10์›” 30์ผ
0

Alexander Yoo์˜ Back-end Engineering

๋ชฉ๋ก ๋ณด๊ธฐ
1/6

SQL๋กœ ๋ฐ์ดํ„ฐ ๋‹ค๋ฃจ๊ธฐ

๋‹ค์ˆ˜์˜ ํ…Œ์ด๋ธ” ์ œ์–ดํ•˜๊ธฐ

๋ฐ์ดํ„ฐ ๊ทธ๋ฃน ์ง“๊ธฐ (๊ทธ๋ฃนํ•จ์ˆ˜)

GROUP BY: ํ…Œ์ด๋ธ” ๊ทธ๋ฃน์˜ ๊ธฐ์ค€์„ ์ •ํ•ด์„œ ๊ทธ๋ฃนํ™” ํ•˜๋Š” ํ•จ์ˆ˜.

SELECT user_id, COUNT(*)
FROM rental
GROUP BY user_id;

GROUP BY๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” SUM, AVG, COUNT, MAX, MIN ํ•จ์ˆ˜๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๋ฐ์ดํ„ฐ ๊ทธ๋ฃน์— ์กฐ๊ฑด ์ ์šฉํ•˜๊ธฐ

GROUP BY / HAVING

SELECT user_id, COUNT(*)
FROM rental
GROUP BY user_id
HAVING COUNT(user_id) > 1;

rental ํ…Œ์ด๋ธ”์—์„œ user_id๊ฐ€ ๊ฐ™์€ 1๊ฐœ ์ดˆ๊ณผ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ”์—์„œ ์กฐํšŒํ•˜๊ธฐ

INNER JOIN

๋‘ ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ํ•œ ๋ฒˆ์— ์กฐํšŒํ•˜๋Š” INNER JOIN ํ•จ์ˆ˜

  • ๋‘ ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ํ•œ ๋ฒˆ์— ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
SELECT *
FROM rental
INNER JOIN user;

์กฐ๊ฑด์„ ์ ์šฉํ•ด ๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ” ์กฐํšŒํ•˜๊ธฐ

SELECT *
FROM rental
INNER JOIN user
ON user.id = rental.user_id;

ON ์ดํ•˜๋Š” ์กฐ๊ฑด์ด๋‹ค. ์กฐ๊ฑด์ ˆ์€ ์กฐ๊ฑด์„ ์ ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”.์ปฌ๋Ÿผ๋ช… ํ˜•์‹์œผ๋กœ ์ž…๋ ฅํ•œ๋‹ค.

LEFT JOIN

์ค‘์‹ฌ์œผ๋กœ ๋‘˜ ์™ผ์ชฝ ๋ฐ์ดํ„ฐ์™€ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์„ ์ถœ๋ ฅํ•œ๋‹ค.
์˜ค๋ฅธ์ชฝ์˜ ํ…Œ์ด๋ธ”์— ์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด NULL์„ ๋ณด์—ฌ์ค€๋‹ค.

SELECT *
FROM user
LEFT JOIN rental
ON user.id = rental.user_id;

user ํ…Œ์ด๋ธ”์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋˜ ๋ชจ๋“  user ํ…Œ์ด๋ธ”์˜ user_id์™€
rental ํ…Œ์ด๋ธ”์˜ user_id๊ฐ€ ๊ฒน์น˜๋„๋ก ํ•ฉ์นœ๋‹ค.

RIGHT JOIN

์ค‘์‹ฌ์œผ๋กœ ๋‘˜ ์˜ค๋ฅธ์ชฝ ๋ฐ์ดํ„ฐ์™€ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์„ ์ถœ๋ ฅํ•œ๋‹ค.
์™ผ์ชฝ์˜ ํ…Œ์ด๋ธ”์— ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด NULL์„ ๋ณด์—ฌ์ค€๋‹ค.

SELECT *
FROM user
RIGHT JOIN rental
ON user.id = rental.user_id;

rental ํ…Œ์ด๋ธ”์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋˜ ๋ชจ๋“  rental ํ…Œ์ด๋ธ”์˜ user_id์™€ user ํ…Œ์ด๋ธ”์˜ id๊ฐ€ ๊ฒน์น˜๋„๋ก ํ•ฉ์นœ๋‹ค.

์‹ค๋ฌด์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ Left Join: ์™ผ์ชฝ ์ฒซ๋ฒˆ์งธ ์—ด๋ถ€ํ„ฐ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๋” ๋ฐ์ดํ„ฐ ํŒŒ์•…์— ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

profile
์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ๋” ์ƒ๊ฐํ•˜๊ณ  ํŽธ์•ˆํ•œ UI/UX ๊ฐœ๋ฐœ์„ ๊ฟˆ๊พธ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€