본문 바로가기
공부/MySQL

SQL join

by 드인 2020. 2. 26.

1. 표 쪼개기

http://bit.ly/join-exec

모든 표는 하나의 주제만 가져야한다.

 

2. 실습준비

SQL Joins Visualizer

https://sql-joins.leopard.in.ua/

 

SQL Joins Visualizer

Please select how do you want to do SQL JOIN between two table

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