[SQL] 3. JOINS
💽

[SQL] 3. JOINS

카테고리
💽 Database
작성자
박용성박용성
작성일
2024년 10월 13일
태그
SQL

🖥️ 시작하며

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 이란, 간단하게 여러 테이블들을 하나로 결합하는 것이다.
notion image
 

🔍 INNER JOIN

notion image
SELECT * FROM TableA INNER JOIN TableB ON TableA.col_match = TableB.col_match
notion image
→ 두 테이블에 모두 있는 행만 가져온다.
 
notion image
notion image
 
여기서 이제 중복을 제거하려면 직접 열을 지정해야 한다.
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

💡
합집합. 모든 것을 포함한다.
notion image
notion image
 

📌 FULL OUTER JOIN with WHERE

둘 중 하나의 테이블에 고유한 값을 구할 수 있다, 즉 두 테이블에 모두 나와있지는 않은 행을 구한다.
notion image
SELECT * FROM TableB FULL OUTER JOIN TableA ON TableA.col_match = TableB.col_match WHERE TableA.id IS null OR TableB.id IS null
notion image
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

왼쪽 집합만 출력한다.
notion image
notion image
 

📌 LEFT OUTER JOIN with WHERE

notion image
notion image
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의 반대라 생각하면 된다.
notion image
notion image
 

🔍 UNIONS

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

💡 연습문제

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'

댓글

guest