
두 개의 테이블을 서로 묶어서 하나의 결과를 만드는 것
공통된 부분만 골라 결합(교집합) → INNER JOIN
공통된 부분 + 공통되지 않는 부분(합집합) → FULL OUTER JOIN
왼쪽 테이블 값만 유지(차집합: ) → LEFT OUTER JOIN
오른쪽 테이블 값만 유지(차집합 : ) → RIGHT OUTER JOIN
| Date | CountryID | Units |
|---|---|---|
| 1/1/2020 | 1 | 40 |
| 1/2/2020 | 1 | 25 |
| 1/3/2020 | 3 | 30 |
| 1/4/2020 | 2 | 35 |
| ID | Country |
|---|---|
| 3 | panama |
| 4 | spain |
| Date | CountryID | Units | Country |
|---|---|---|---|
| 1/3/2020 | 3 | 30 | spain |
SELECT Sales.*, countries.country
FROM Sales
(INNER) JOIN contries
ON Sales.countryID = countries.ID;
👩🏻💻 INNER JOIN 문법
1)
SELECT 조회할 컬럼
FROM 테이블1, 테이블2
[WHERE 조건문]
2)
SELECT 조회할 컬럼
FROM 테이블1
(INNER) JOIN 테이블2
ON 테이블1.컬럼 = 테이블2.컬럼
[WHERE 추가조건]
--natural join
SELECT m.mno, name, s.mno, work, bank
FROM memb m CROSS JOIN stnt s
```sql
--실행결과
MariaDB [studydb]> select m.mno, name, s.mno, work, bank
-> FROM memb m, stnt s
-> WHERE m.mno = s.mno;
+-----+------+-----+------+--------------+
| mno | name | mno | work | bank |
+-----+------+-----+------+--------------+
| 100 | s100 | 100 | N | 비트은행 |
| 101 | s101 | 101 | Y | 비트은행 |
| 102 | s102 | 102 | N | 캠프은행 |
| 103 | s103 | 103 | Y | 우리은행 |
| 104 | s104 | 104 | N | 국민은행 |
+-----+------+-----+------+--------------+
5 rows in set (0.006 sec)
• 공통된 부분만 골라 결합하는 Inner Join 과 다르게 공통되지 않은 행도 유지한다.
| id | name | dept_name | salary |
|---|---|---|---|
| 1 | James | Physics | 95000 |
| 2 | John | Comp.Sci | 65000 |
| 3 | Mark | Math | 75000 |
| 4 | Tom | Physic | 90000 |
| id | course | Semester | Year |
|---|---|---|---|
| 3 | CS-101 | Fall | 2019 |
| 4 | PHY-312 | Spring | 2020 |
| 5 | CS-203 | Spring | 2019 |
| 6 | CS-421 | Fall | 2020 |
| id | name | dept_name | salary | id | course | Semester | Year |
|---|---|---|---|---|---|---|---|
| 1 | James | Physics | 95000 | null | null | null | null |
| 2 | John | Comp.Sci | 65000 | null | null | null | null |
| 3 | Mark | Math | 75000 | 3 | CS-101 | Fall | 2019 |
| 4 | Tom | Physic | 90000 | 4 | PHY-312 | Spring | 2020 |
| null | null | null | null | 5 | CS-203 | Spring | 2019 |
| null | null | null | null | 6 | CS-421 | Fall | 2020 |
SELECT *
FROM instructor
FULL OUTER JOIN teaches
ON instructor.id = teaches.id;
👩🏻💻 전체 외부 조인 기본문법 )
SELECT 조회할 컬럼
FROM 테이블1
FULL OUTER JOIN 테이블2
ON 조건문
[WHERE 추가조건문]
• 왼쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 null 값으로 채워짐.
| id | name | dept_name | salary |
|---|---|---|---|
| 1 | James | Physics | 95000 |
| 2 | John | Comp.Sci | 65000 |
| 3 | Mark | Math | 75000 |
| 4 | Tom | Physic | 90000 |
| id | course | Semester | Year |
|---|---|---|---|
| 3 | CS-101 | Fall | 2019 |
| 4 | PHY-312 | Spring | 2020 |
| 5 | CS-203 | Spring | 2019 |
| 6 | CS-421 | Fall | 2020 |
| id | name | dept_name | salery | id | course | Semester | Year |
|---|---|---|---|---|---|---|---|
| 1 | James | Physics | 95000 | null | null | null | null |
| 2 | John | Comp.Sci | 65000 | null | null | null | null |
| 3 | Mark | Math | 75000 | 3 | CS-101 | Fall | 2019 |
| 4 | Tom | Physic | 90000 | 4 | PHY-312 | Spring | 2020 |
SELECT *
FROM instructor
LEFT OUTER JOIN teaches
ON instructor.id = teaches.id;
👩🏻💻
SELECT 조회할 컬럼
FROM 기준테이블1
LEFT OUTER JOIN 테이블2
ON 조건문
[WHERE 추가조건문
• 오른쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 null 값으로 채워짐.
| id | name | dept_name | salary |
|---|---|---|---|
| 1 | James | Physics | 95000 |
| 2 | John | Comp.Sci | 65000 |
| 3 | Mark | Math | 75000 |
| 4 | Tom | Physic | 90000 |
| id | course | Semester | Year |
|---|---|---|---|
| 3 | CS-101 | Fall | 2019 |
| 4 | PHY-312 | Spring | 2020 |
| 5 | CS-203 | Spring | 2019 |
| 6 | CS-421 | Fall | 2020 |
| id | name | dept_name | salery | id | course | Semester | Year |
|---|---|---|---|---|---|---|---|
| 3 | Mark | Math | 75000 | 3 | CS-101 | Fall | 2019 |
| 4 | Tom | Physic | 90000 | 4 | PHY-312 | Spring | 2020 |
| null | null | null | null | 5 | CS-203 | Spring | 2019 |
| null | null | null | null | 6 | CS-421 | Fall | 2020 |
SELECT *
FROM instructor
RIGHT OUTER JOIN teaches
ON instructor.id = teaches.id;
👩🏻💻
SELECT 조회할 컬럼
FROM 테이블1
RIGHT OUTER JOIN 기준테이블2
ON 조건문
[WHERE 추가조건문]
| ID | 제품 |
|---|---|
| 1 | 책상 |
| 2 | 장식장 |
| 3 | 의자 |
| ID | 색상 |
|---|---|
| 1 | 빨강 |
| 2 | 파랑 |
| 3 | 하얀 |
| ID | 제품 | ID | 색상 |
|---|---|---|---|
| 1 | 책상 | 1 | 빨강 |
| 2 | 책상 | 2 | 파랑 |
| 3 | 책상 | 3 | 하얀 |
| 4 | 장식장 | 1 | 빨강 |
| 5 | 장식장 | 2 | 파랑 |
| 6 | 장식장 | 3 | 하얀 |
| 7 | 의자 | 1 | 빨강 |
| 8 | 의자 | 2 | 파랑 |
| 9 | 의자 | 3 | 하얀 |
SELECT 조회할컬럼
FROM 테이블1, 테이블2
SELECT 조회할컬럼
FROM 테이블1
JOIN 테이블2
SELECT 조회할컬럼
FROM 테이블1
CROSS JOIN 테이블2
퍼가요~♡