1. 표 쪼개기
모든 표는 하나의 주제만 가져야한다.
2. 실습준비
SQL Joins Visualizer
https://sql-joins.leopard.in.ua/
- Left (outer) join produces a complete set of records from Table A, with the matching records (where available) in Table B. If there is no match, the right side will contain null
- Full outer join produces the set of all records in Table A and Table B, with matching records from both sides where available. If there is no match, the missing side will contain null
3. LEFT JOIN
https://github.com/egoing/sql-join/blob/master/dump.sql
- left join : 기준이 되는 표를 왼쪽에 두고, 이 표를 기준으로 오른쪽의 표를 합성해서 하나의 표를 만듦
- INNER JOIN : 왼쪽에 있는 표와 오른쪽에 있는 표 양쪽에 있는 정보를 출력
SELECT * FROM topic;
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid;
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid LEFT JOIN profile ON author.profile_id = profile.pid;
SELECT tid, topic.title, author_id, name, profile.title AS job_title FROM topic LEFT JOIN author ON topic.author_id = author.aid LEFT JOIN profile ON author.profile_id = profile.pid;
SELECT tid, topic.title, author_id, name, profile.title AS job_title FROM topic LEFT JOIN author ON topic.author_id = author.aid LEFT JOIN profile ON author.profile_id = profile.pid WHERE aid = 1;
4. INNER JOIN
- INNER JOIN : 왼쪽과 오른쪽 표 모두에서 존재하는 행를 모아서 하나의 행을 만드는 방법
INNER JOIN을 하게되면 NULL행 존재X
SELECT * FROM topic INNER JOIN author ON topic.author_id = author.aid
SELECT * FROM topic INNER JOIN author ON topic.author_id = author.id INNER JOIN profile ON profile.pid = author.profile_id
5. FULL JOIN
- FULL JOIN : 왼쪽과 오른쪽에 있는 행 모두를 합성해서 하나의 표를 만드는 방법
SELECT * FROM topic FULL OUTER JOIN author ON topic.author_id = author.id
대부분 지원X
6. EXCLUSIVE JOIN
- EXCLUSIVE JOIN : 한쪽 표에만 있는 정보로 새로운 표를 만드는 방법
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid WHERE author.aid is NULL
'공부 > MySQL' 카테고리의 다른 글
관계형 데이터 모델링 (2) (0) | 2020.03.02 |
---|---|
관계형 데이터 모델링 (1) (0) | 2020.02.27 |
DATABASE2-MySQL(4) (0) | 2019.07.31 |
DATABASE2-MySQL(3) (0) | 2019.07.31 |
DATABASE2-MySQL(2) (0) | 2019.07.29 |