두 테이블을 묶어서 하나의 테이블을 만듬, 그 이유는 두 테이블을 묶어야 원하는 형태가 나오기도 하기 때문이다.
1.Inner Join
-Natural Join
2.Outer Join
-Left Outer Join
-Right Outer Join
-Full Outer Join

둘이 겹치는 조건이 있을때 겹치는 부분의 값만 반환
select from 테이블1 inner join 테이블2 on 조건;
ex)select from authors inner join books on authors.author_id = book.author_id;
-Natural Join
Inner Join의 하나의 종류이다.
1.두 테이블간 동일한 타입을 가진 동일한 컬럼을 기준으로 자동으로 조인된다.
2.그래서 조인 조건을 따로 명시하지 않아도 된다.
3.동일한 타입을 가진 컬럼이 없거나, 여러 개 있을 경우 원하는 결과를 얻지 못한다.
select from 테이블1 natural join 테이블2
ex)select from authors natural join books;
결합 조건을 만족하지 않아도 종류에 따라 특정 테이블의 데이터를 모두 선택해 두 테이블을 결합한다.
left join:첫 번째 테이블의 데이터를 모두 선택한 후, 두 번째 테이블의 데이터를 결합 조건에 따라 매칭한다. 매칭되는 데이터가 없는 경우 그 값을 null로 표시한다.
select from 테이블1 left join 테이블2 on 조건
ex)select from authors left join books on authors.author_id=books.aythor_id;

right join:두 번째 테이블의 데이터를 모두 선택한 후, 첫 번째 테이블의 데이터를 결합 조건에 따라 매칭한다. 매칭되는 데이터가 없는 경우 그 값을 null로 표시한다.
select from 테이블1 right join 테이블2 on 조건
ex)select from authors right join books on authors.author_id=books.aythor_id;

full outer join:두 테이블의 데이터를 모두 선택하고, 결합 조건에 따라 데이터를 매칭한다. 매칭되는 데이터가 없는 경우 그 값을 null로 표시한다. mysql에서는 full outer join을 구현하기 위한 명령어를 기본적으로 제공하지 않는다. 그래서 left join과 right join의 합집합을 구해 full outer join의 값을 업을 수 있다. 여기서 나오는 것이 union이다.
여러 개의 select문의 결과를 하나의 테이블이나 결과 집합으로 표현할 때 사용된다. 이때 각각의 select문으로 선택된 필드의 개수와 타입은 모두 같아야 하며, 필드의 순서 또한 같아야 한다. (unoin은 기본적으로 distinct이어서 중복값을 없에 준다. unoin all은 중복값 까지 출력 해준다)
select 필드 이름 from 테이블명
union
select 필드 이름 from 테이블명
ex)
select authors.author_id, books.title from authors right join books on authors.author_id=books.author_id
union
select authors.author_id, books.title from authors left join books on authors.author_id=books.author_id;
