본문 바로가기
개발일지/SQL

SQL 기초 18 JOIN

by 다니엘의 개발 이야기 2022. 8. 25.
320x100

#1 교차조인 (크로스 조인)(CROSS JOIN)

 

SELECT (가져올 열 이름) FROM table1 CROSS JOIN table2

 

여기서 ‘가져올 열 이름’에 들어갈 사항은

1)한쪽 테이블의 모든 열을 가져오는 경우 테이블1.*, 테이블2.*

이런식으로 구분지어서 가져오는게 가능하다.

 

2)양쪽 모두 동일한 열 이름이 있어서 한쪽열을 기준으로 삼고싶은 경우

테이블1.컬럼이름

 

예시1

SELECT * FROM tbl_namelist CROSS JOIN tbl_grades;

 

 

예시2

SELECT * FROM tbl_namelist INNER JOIN tbl_grades

ON tbl_namelist.no = tbl_grades.no;


#2 내부조인 (INNER JOIN)

크로스조인의 결과에서 지정한 열의 값이 일치하는 행만 가져오는 방법이

내부 조인이다.

 

#예시1 - INNER JOIN 버전 

SELECT * FROM tbl_name INNER JOIN tbl_age ON id = no;

 

*ON 다음에 쓰이는 것이 일치 조건이다.

 

#예시2 - WHERE 절로 INNER JOIN 버전

SELECT * FROM tbl_name, tbl_age

WHERE tbl_name.id = tbl_age.no;


#3 외부 조인 (OUTER JOIN)

*일치하지 않는 결과라도 가져올 수 있다.

 

1)왼쪽 외부 조인

*왼쪽 테이블을 기준으로 표현해준다.

 

SELECT * FROM tbl_name LEFT JOIN tbl_age ON id = no;

 

예시

SELECT * FROM tbl_namelist LEFT JOIN tbl_grades

ON tbl_namelist.no = tbl_grades.no;

 

2)오른쪽 외부 조인

*오른쪽 테이블을 기준으로 표현해준다.

 

SELECT * FROM tbl_name RIGHT JOIN tbl_age ON id = no;

 

예시

SELECT * FROM tbl_namelist RIGHT JOIN tbl_grades

ON tbl_namelist.no = tbl_grades.no;

 

3)전체 외부 조인 (FULL JOIN)

 

SELECT * FROM tbl_name FULL JOIN tbl_age ON id = no;

 

예시

SELECT * FROM tbl_namelist FULL JOIN tbl_grades

ON tbl_namelist.no = tbl_grades.no;

300x250