본문 바로가기

프로그래밍/mySQL

[mySQL] 조인 (JOIN)

INNER JOIN


1) 동등 조인

SELECT       출력할 열들

FROM        주 테이블 

INNER JOIN  합성할 테이블

ON           비교 연산 ;


SELECT A.count_id, A.first_name, B.gender

FROM my_table A

INNER JOIN sub_table B

ON A.count_id = B.count_id



2) 비동등 조인

SELECT A.count_id, A.first_name, B.gender

FROM my_table A

INNER JOIN sub_table B

ON A.count_id <> B.count_id

ORDER BY  A.count_id; 

// 해당하지 않는 모든 값을 출력



3) NATURAL JOIN (자연조인)

SELECT A.count_id, A.first_name, B.gender

FROM my_table A

NATURAL JOIN sub_table B;

// 같은 이름의 열을 참조하여 출력, 그러므로 현재 코드에선 위의 동등조인과 같은 동작을 한다.



카티젼 조인 (Cartesian Join)


SELECT my_table.toy, sub_table.color

FROM my_table

CROSS JOIN sub_table;

// my_table의 toy열과 sub_table의 color열의 모든 행을 서로 짝지워서 출력.

// 5개의 행과 6개의 행이 있다면 총 30개의 행을 출력하게 된다.


AS를 사용한 예

SELECT m.toy, s.color

FROM my_table AS m

CROSS JOIN sub_table AS s;



SELECT 출력할 열들

FROM tableA A

INNER JOIN tableB B

ON A.key = B.key;


SELECT 출력할 열들

FROM tableA A

LEFT JOIN tableB B

ON A.key = B.key;





SELECT 출력할 열들

FROM tableA A

LEFT JOIN tableB B

ON A.key = B.key

WHERE B.key IS NULL;


SELECT 출력할 열들

FROM tableA A

RIGHT JOIN tableB B

ON A.key = B.key

WHERE B.key IS NULL;




SELECT 출력할 열들

FROM tableA A

RIGHT JOIN tableB B

ON A.key = B.key;


SELECT 출력할 열들

FROM tableA A

FULL OUTER JOIN tableB B

ON A.key = B.key;





SELECT 출력할 열들

FROM tableA A

FULL OUTER JOIN tableB B

ON A.key = B.key

WHERE A.key IS NULL OR B.key IS NULL;