| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- NoSQL
- db
- 정처기
- Join
- EC2
- springboot
- Github Actions
- DevOps
- VPC
- database
- 탄력적 ip
- SQLite
- DDL
- SQL
- aws
- 정보처리기사
- SubQuery
- PostgreSQL
- 정규화
- index
- sub-query
- mongoDB
- Transaction
- dml
- redis
- CTE
- MySQL
- 보안 그룹
- databse
- ASW
Archives
- Today
- Total
sellen
JOIN - MySQL 본문

💡 이 내용 이후로 모든 SQL 관련 내용은 NomadCoder 강의를 듣고 정리한 글입니다.
아래의 링크에 SQL 학습에 필요한 데이터가 존재합니다.
https://nomadcoders.co/sql-masterclass
아래의 글과 함께 보시면 좋습니다.
JOIN
2가지 이상의 테이블을 결합하여 함께 조회할 때 사용하는 명령어
CROSS JOIN
첫 번째의 table의 모든 row와 두 번째 table의 모든 row를 각각 연결한다.
SELECT * FROM dogs CROSS JOIN owners;
dogs의 각 row 마다 owners의 모든 row가 결합한다.
(INNER) JOIN
첫 번째의 table의 외래키와 두 번째 table의 외래키의 값이 같은 데이터끼리 결합한다. - 교집합
- (INNER) JOIN - INNER를 붙이지 않고 JOIN 만 사용할 경우 자동으로 INNER JOIN으로 실행
- JOIN {table_name} ON {첫 번째 테이블의 외래키 = 두 번째 테이블의 외래키}
- JOIN {table_name} USING {column_name}
- 연결할 외래 키의 이름이 같을 경우 USING을 사용할 수 있다.
SELECT *
FROM dogs
JOIN owners ON dogs.owner_id = owners.owner_id;
SELECT *
FROM dogs
-- table 둘 다 owner_id를 사용하므로 USING (owner_id)로 생략가능
JOIN owners USING (owner_id);
OUTER JOIN
SQLite에서는 LEFT OUTER JOIN만 사용가능
LEFT (OUTER) JOIN
첫 번째 테이블의 모든 row를 가져오고 두 번째 테이블에서 서로 교차되는 row를 가져온다.
- LEFT (OUTER) JOIN - OUTER 생략 가능
- LEFT OUTER JOIN {table_name} ON {첫 번째 테이블의 외래키 = 두 번째 테이블의 외래키}
- LEFT JOIN {table_name} USING {column_name}
SELECT *
FROM dogs
LEFT OUTER JOIN owners ON dogs.owner_id = owners.owner_id;
SELECT *
FROM dogs
LEFT JOIN owners USING (owner_id);
RIGHT (OUTER) JOIN
두 번째 테이블의 모든 row를 가져오고 첫 번째 테이블에서 서로 교차되는 row를 가져온다.
- RIGHT (OUTER) JOIN - OUTER 생략 가능
- RIGHT OUTER JOIN {table_name} ON {첫 번째 테이블의 외래키 = 두 번째 테이블의 외래키}
- RIGHT JOIN {table_name} USING {column_name}
SELECT *
FROM dogs
RIGHT OUTER JOIN owners ON dogs.owner_id = owners.owner_id;
SELECT *
FROM dogs
RIGHT JOIN owners USING (owner_id);
FULL OUTER JOIN
해당 기능은 PostgreSQL에서만 사용 가능
movies ∪ directors
SELECT title, directors.name
FROM movies
FULL OUTER JOIN directors USING (director_id);
movies와 directors의 겹치는 부분을 제외할 때
( movies ∪ directors ) - (movies ∩ direcotors)
SELECT title, directors.name
FROM movies
FULL OUTER JOIN directors USING (director_id)
WHERE movies.director_id IS NULL OR directors.director_id IS NULL;
'DataBase > 관계형 DB' 카테고리의 다른 글
| 정규화 - MySQL (0) | 2025.07.19 |
|---|---|
| JOIN - 연습문제 (2) | 2025.07.19 |
| DataGrip과 MySQL 연결 (0) | 2025.07.19 |
| MySQL 데이터 타입 (0) | 2025.07.19 |
| MySQL 설치 (0) | 2025.07.19 |