두 개의 테이블을 서로 묶어서 하나의 결과를 만드는 것
공통된 부분만 골라 결합(교집합) → 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
퍼가요~♡