🖥️ 시작하며
SQL에서 JOINS에 대해 알아보자.
🔍 AS
AS
는 열이나 결과에 별칭을 부여한다. 이 연산자는 쿼리의 맨 마지막에 실행된다.SELECT column AS new_name FROM table SELECT SUM(column) AS new_name FROM table
SELECT customer_id, SUM(amount) AS total_spent FROM payment GROUP BY customer_id HAVING SUM(amount) > 100
JOIN
이란, 간단하게 여러 테이블들을 하나로 결합하는 것이다.
🔍 INNER JOIN

SELECT * FROM TableA INNER JOIN TableB ON TableA.col_match = TableB.col_match

→ 두 테이블에 모두 있는 행만 가져온다.


여기서 이제 중복을 제거하려면 직접 열을 지정해야 한다.
SELECT reg_id, Logins.name, log_id FROM Registrations INNER JOIN Logins ON Registrations.name = Logins.name
SELECT * FROM payment INNER JOIN customer ON payment.customer_id = customer.customer_id
🔍 FULL OUTER JOIN
합집합. 모든 것을 포함한다.


📌 FULL OUTER JOIN with WHERE
둘 중 하나의 테이블에 고유한 값을 구할 수 있다, 즉 두 테이블에 모두 나와있지는 않은 행을 구한다.

SELECT * FROM TableB FULL OUTER JOIN TableA ON TableA.col_match = TableB.col_match WHERE TableA.id IS null OR TableB.id IS null

SELECT * FROM customer FULL OUTER JOIN payment ON customer.customer_id = payment.customer_id WHERE customer.customer_id IS null OR payment.payment_id IS null
대충 확인하는 방법
SELECT COUNT(DISTINCT customer_id) FROM payment
🔍 LEFT OUTER JOIN
왼쪽 집합만 출력한다.


📌 LEFT OUTER JOIN with WHERE


SELECT film.film_id, film.title, inventory_id, store_id FROM film LEFT JOIN inventory ON inventory.film_id = film.film_id WHERE inventory.film_id IS null
🔍 RIGHT JOIN
그냥 LEFT JOIN의 반대라 생각하면 된다.


🔍 UNIONS
JOIN과 다르게, UNIONS는 그냥 테이블을 합쳐버린다.


💡 연습문제
SELECT address.district, customer.email FROM customer INNER JOIN address ON customer.address_id = address.address_id WHERE address.district LIKE 'Cali%'
SELECT film.title, actor.first_name, actor.last_name FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id INNER JOIN film ON film_actor.film_id = film.film_id WHERE actor.first_name = 'Nick' AND actor.last_name = 'Wahlberg'
댓글