JOIN (inner join)
- 두개 이상의 테이블에 대해서 결합하여 나타날때 사용하는 문법
- select a.col1, b.col1 from table1 a join table2 b on a.col2 = b.col2;
: table1과 table2를 각각 a와 b라는 이름으로 치환하고 table1의 col1 컬럼과
table2의 col1 컬럼을 출력한다. 단, 두 테이블의 col2가 같은 값에 대해서만
EQUI join (등가 join)
- select a.col1, b.col1 from table1 a join table2 b on a.col2 = b.col2;
- 3항 조인
: select a.col1, b.col1, c.col1 from (table1 a join table2 on a.col2 = b.col2)
join table3 c on a.col3 = c.col3;
Non Equi join (비등가 join)
- select a.col1, b.col1 from table1 a join table2 b on a.col2 >= b.col2 and a.col2 <= b.col3;
outer join
- 한쪽 테이블에는 데이터가 있고 다른쪽 테이블에는 데이터가 없는 경우,
데이터가 있는 쪽 테이블의 내용을 모두 출력 하는 것
: 조건에 맞지 않아도 해당하는 행을 출력할때 사용
- left outer join
: 조인문에 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽 테이블의 데이터를 매칭하고
매칭되는 데이터가 없는 경우 null로 표시
- right outer join
: 조인문에 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽 테이블의 데이터를 매칭하고
매칭되는 데이터가 없는 경우 null로 표시
- full outer join
: 양쪽 모두 조건이 일치하지 않는 데이터까지 결합하여 출력
: my SQL에서는 full outer join이 없으므로 left join과 right join의 결과를 union하여 출력
: select a.col1, b.col1 from ta1 a left outer join ta2 b
union
select a.col1, b.col from ta1 a right outer join ta2 b;
- 예시 (left outer join)
: select a.col1, b.col1 from table1 a left outer join table2 b on a.col2 = b.col2;
= table1의 데이터를 가져 온후 table2에 매칭
= left outer join이기 때문에 좌측의 결과를 기준으로 우측을 맞추어 데이터 출력
outer join과 inner join의 차이
- outer join
: 두 테이블의 합집합
- inner join
: 두 테이블의 교집합
'Database > MySQL' 카테고리의 다른 글
SQL - DDL(Data Definition Language)와 Dictionary (0) | 2020.12.15 |
---|---|
SQL- DDL과 DML, DCL에 대한 기초 (0) | 2020.12.15 |
SQL - 복수행 함수 (0) | 2020.12.15 |
SQL - 단일행 함수 (3) : 일반 함수 (0) | 2020.12.14 |
SQL - 단일행 함수 (2) : 숫자 함수, 날짜 함수, 형변환 함수 (0) | 2020.12.14 |