GROUP BY: ํ ์ด๋ธ ๊ทธ๋ฃน์ ๊ธฐ์ค์ ์ ํด์ ๊ทธ๋ฃนํ ํ๋ ํจ์.
SELECT user_id, COUNT(*) FROM rental GROUP BY user_id;
GROUP BY๋ฅผ ์ ํ์ฉํ๊ธฐ ์ํด์๋ SUM, AVG, COUNT, MAX, MIN ํจ์๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
SELECT user_id, COUNT(*) FROM rental GROUP BY user_id HAVING COUNT(user_id) > 1;
rental ํ ์ด๋ธ์์ user_id๊ฐ ๊ฐ์ 1๊ฐ ์ด๊ณผ์ ๋ฐ์ดํฐ๊ฐ ๋ช ๊ฐ ์๋์ง ๊ฒ์ํ๋ค.
๋ ํ ์ด๋ธ์ ์ ๋ณด๋ฅผ ํ ๋ฒ์ ์กฐํํ๋ INNER JOIN ํจ์
SELECT * FROM rental INNER JOIN user;
SELECT * FROM rental INNER JOIN user ON user.id = rental.user_id;
ON ์ดํ๋ ์กฐ๊ฑด์ด๋ค. ์กฐ๊ฑด์ ์ ์กฐ๊ฑด์ ์ ์ฉํ ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ.์ปฌ๋ผ๋ช ํ์์ผ๋ก ์ ๋ ฅํ๋ค.
์ค์ฌ์ผ๋ก ๋ ์ผ์ชฝ ๋ฐ์ดํฐ์ ๊ฒน์น๋ ๋ถ๋ถ์ ์ถ๋ ฅํ๋ค.
์ค๋ฅธ์ชฝ์ ํ
์ด๋ธ์ ์ผ์ชฝ ํ
์ด๋ธ์ ๋ฐ์ดํฐ์ ์ผ์นํ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด NULL์ ๋ณด์ฌ์ค๋ค.
SELECT * FROM user LEFT JOIN rental ON user.id = rental.user_id;
user ํ ์ด๋ธ์ ๋ชจ๋ ์ถ๋ ฅํ๋ ๋ชจ๋ user ํ ์ด๋ธ์ user_id์
rental ํ ์ด๋ธ์ user_id๊ฐ ๊ฒน์น๋๋ก ํฉ์น๋ค.
์ค์ฌ์ผ๋ก ๋ ์ค๋ฅธ์ชฝ ๋ฐ์ดํฐ์ ๊ฒน์น๋ ๋ถ๋ถ์ ์ถ๋ ฅํ๋ค.
์ผ์ชฝ์ ํ
์ด๋ธ์ ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ๋ฐ์ดํฐ์ ์ผ์นํ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด NULL์ ๋ณด์ฌ์ค๋ค.
SELECT * FROM user RIGHT JOIN rental ON user.id = rental.user_id;
rental ํ ์ด๋ธ์ ๋ชจ๋ ์ถ๋ ฅํ๋ ๋ชจ๋ rental ํ ์ด๋ธ์ user_id์ user ํ ์ด๋ธ์ id๊ฐ ๊ฒน์น๋๋ก ํฉ์น๋ค.
์ค๋ฌด์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ Left Join: ์ผ์ชฝ ์ฒซ๋ฒ์งธ ์ด๋ถํฐ ํ์ธํ๋ ๊ฒ์ด ๋ ๋ฐ์ดํฐ ํ์ ์ ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค.