SQL 기초

SQL 기초(3) Join

class="song" 2023. 11. 28.
728x90

서브쿼리문에 이어 조회할 컬럼이 같은 테이블 내에 있지 않은 경우 Join을 사용하여 데이터를 조회할 수 있다.

 

join의 형태는

1. inner join(일반형식)

select 컬럼1, 컬럼2, ... , 컬럼n
from 테이블1, 테이블2, ... 테이블n
where 테이블1의 PK = 테이블2의 FK
	and 테이블2 PK = 테이블n의 FK

 

inner join(표준 형식)

select 컬럼1, 컬럼2, ... , 컬럼n
from 테이블1 inner join 테이블2
		on(테이블1 PK = 테이블2 FK(관계조건)
        and 일반조건n)

 위와 같은 형태로 사용한다.

 

서브쿼리문과 달리 where문에 PK와 FK를 연결하여 사용한다.

서브쿼리와 같이 PK와 FK로 연결되지 않았어도, 데이터가 동일하다면 연결하여 사용할 수 있다.

 

조회하는 컬럼들의 테이블이 달라 한쪽에 조회할 행이 적다면 적은 것을 기준으로 데이터가 조회된다.

 

중요한 것은 where절에 테이블을 연결시키지 않으면 데이터들의 개수가 서로 곱해져서 조회된다.

이것을 크로스 조인이라고 한다

 

원하는 데이터가 조회되지 않으므로 조건을 잘 정리해서 사용하자.

 

2. outer join

조인의 다른형태이다.

select 컬럼1, 컬럼2
from 테이블1 left outer join 테이블 2
			on(테이블1 PK = 테이블2 FK(관계조건)
            and 일반조건1, ... , 일반조건n)

위의 형태로 사용한다.

 

inner join과 달리 조회할 컬럼의 개수가 다를 때, 전부 조회할 수 있다.

left는 왼쪽에 있는 테이블을 기준으로 행의 개수를 모두 조회한다.

 

기준테이블의 행의 개수가 10개 다른테이블의 행의 갯수가 8개 일 때 조회하는 컬럼의 행은 10개로 출력된다.

right로도 사용할 수 있으나 left가 더 사용하면서 가독성이 좋았던 것 같다.

 

왼쪽부터 읽어서 그런가 보다.

 

inner join과 다른 점은 또 하나 있는데 조건식을 꼭 on() 내부에 작성해야 한다.

where문을 따로 작성한다면 outer join이 풀려 inner join의 성질로 데이터가 조회된다.

 

 

728x90

'SQL 기초' 카테고리의 다른 글

SQL 기초(union)  (1) 2023.12.04
SQL 기초 (EXISTS)  (2) 2023.12.04
SQL 기초(4) 함수들  (0) 2023.11.28
SQL 기초(2) - select (subquery)  (2) 2023.11.28
SQL 기초 (1)  (4) 2023.11.27

댓글