예제 테이블
mysql> select * from demo_people;
name | phone | pid |
Mr brown | 01225 708225 | 1 |
Miss Smith | 01225 899360 | 2 |
Mr Pullen | 01380 724040 | 3 |
mysql> select * from demo_property;
pid | spid | selling |
1 | 1 | Old House Fram |
3 | 2 | The Willows |
3 | 3 | Tali Trees |
3 | 4 | the Melksham Florist |
4 | 5 | Dun Roamin |
1. 기본 JOIN (= INNER JOIN)
- 기본적으로 JOIN은 교집합이다.
select name, phone, selling
from demo_people
join demo_property
on demo_people.pid = demo_property.pid;
+-----------+ | name | phone | selling | +-----------+
| Mr Brown | 01225 708225 | Old House Farm |
| Mr Pullen | 01380 724040 | The Willows |
| Mr Pullen | 01380 724040 | Tall Trees |
| Mr Pullen | 01380 724040 | The Melksham Florist |
+-------------+--------------+----------------------+
2. LEFT JOIN
- 왼쪽 테이블을 중심으로 오른쪽의 테이블을 매치시킨다.
- 왼쪽 테이블의 한개의 레코드에 여러개의 오른쪽 테이블 레코드가 일치할 경우, 해당 왼쪽 레코드를 여러번 표시하게 된다.
- 왼쪽은 무조건 표시하고, 매치되는 레코드가 오른쪽에 없으면 NULL을 표시한다.
select name, phone, selling
from demo_people
left join demo_property
on demo_people.pid = demo_property.pid;
+------------+--------------+----------------------+ | name | phone | selling | +------------+--------------+----------------------+
| Mr Brown | 01225 708225 | Old House Farm |
| Miss Smith | 01225 899360 | NULL |
| Mr Pullen | 01380 724040 | The Willows |
| Mr Pullen | 01380 724040 | Tall Trees |
| Mr Pullen | 01380 724040 | The Melksham Florist |
+------------+--------------+----------------------+
3. RIGHT JOIN
- 오른쪽 테이블을 중심으로 왼쪽 테이블을 매치시킨다.
- LEFT JOIN에서 방향을 오른쪽으로만 바꾼것이므로, 역시 해당 레코드가 여러번 표시되거나, NULL이 표시된다.
select name, phone, selling
from demo_people
right join demo_property
on demo_people.pid = demo_property.pid;
+-----------+--------------+----------------------+ | name | phone | selling | +-----------+--------------+----------------------+
| Mr Brown | 01225 708225 | Old House Farm |
| Mr Pullen | 01380 724040 | The Willows |
| Mr Pullen | 01380 724040 | Tall Trees |
| Mr Pullen | 01380 724040 | The Melksham Florist |
| NULL | NULL | Dun Roamin |
+-----------+--------------+----------------------+
4. OUTER JOIN : 조건에 부합하지 않는 행까지도 포함시켜 결합하는 것
- 기본적으로 LEFT, RIGHT 또는 FULL이 OUTER JOIN 이다.
- FULL JOIN 은 사용할 일이 없으며, ODBC에 따라 지원하지 않는 경우도 있다.
출처: https://superman28.tistory.com/23
'Database' 카테고리의 다른 글
(MS-SQL 복합키) primary key가 2개일 때 (0) | 2022.11.02 |
---|---|
(DB 구조) 마스터-슬레이브 구조 (0) | 2022.10.14 |
MySQL 랜섬웨어 후 대처법(Z_README_TO_RECOVER) (0) | 2022.07.15 |
(MySQL) Unique Index로 컬럼에 중복값이 못들어오도록 하려면.. (0) | 2022.03.21 |
[MySql] Cannot delete or update a parent row: a foreign key constraint fails 에러 해결 방법 (0) | 2022.03.18 |