SQL 공부 5탄 JOIN

양진영·2022년 8월 12일
0

SQL

목록 보기
5/5

SQL 에서 JOIN이란 매우 중요한 역할을 한다.

우선 SQL은 기본적으로 관계형 데이터베이스의 쿼리문을 담당한다. 그렇다면 관계형 데이터베이스란 무엇일까??

관계형 데이터 베이스는 형태가 정해져 있는 데이터 베이스를 뜻한다. 형태가 정해져 있으므로 데이터를 저장할때도 정해진 형태에 맞춰서 저장해야 한다. 예를 들어 유저라는 테이블에 유저의 이름, 나이, 성별 과 같은 컬럼(형태)가 있다면 한명의 유저를 유저 테이블에 넣을때도 이름,나이,성별에 맞추어 넣어줘야한다.

관계형 데이터베이스는 여러 다른 테이블중 서로 유관한 테이블끼리 묶어 하나의 테이블로 만들수 있는데 이때 테이블들을 묶는 역할을 JOIN이라고 한다. JOIN은 아무때나 쓸수있는 것은 아니다. 테이블들이 만들어질때 테이블간의 관계를 정의할수있는데 이때 유관하게 묶이도록 정의한 테이블에 한해서 JOIN 할수있다.

그렇다면 여기서 예시를 들어 보도록 하겠다.

예시) 나는 e커머스를 관리하는 관리자로 상품을 조회할껀데 이때 상품을 판매하는 판매자의 정보도 보고싶다. 이때는 어떻게 해야할까?

  • 선행으로 이루어져야 하는것은 상품 테이블이 유저 테이블과 관계가 있다는것을 정의해야한다. 정의를 끝내게 되면 상품 테이블안에는 해당 상품을 판매하는 유저의 ID가 입력된다.
SELECT
	p.name, p.price, u.name, u.age, u.email
FROM 
	Product AS p
JOIN 
	User AS u
ON
	p.userId = u.id

위 쿼리문은 Product(상품 테이블)을 p라는 별명으로 부를껀데 p.name, p.price로 상품의 이름과 가격을 SELECT로 가져올거다. 그리고 상품 테이블에 존재하는 userId(판매자의 아이디) 와 User 테이블에 존재하는 유저의 id가 같은것을 찾아 해당 id를 갖는 유저의 나이와 email도 가져올 것이다.

여기서 알아야 되는건 만약 내가 상품과 유저를 연결했는데 상품 테이블과 아무런 연관도 없는 주소테이블과도 연결하고 싶다면 연결할수 있을까?

답은 "연결 할수 있다"가 된다.

아까 테이블간의 관계성이 있어야 연결이 된다라고 했으면서 왜 상품하고 주소하고 관계도 없는데 연결이 되냐고 묻는다면 상품과 주소는 관계가 없지만 유저와 주소가 관계가 있기 때문에 연결이 된다.

정리하자면 직접적으로 연결이 안되있어도 타고타고 들어가는것이 가능하다 라는뜻이다.

SELECT
	p.name, p.price, u.name, u.age, u.email, Ad.zipCode
FROM 
	Product AS p
JOIN 
	User AS u
ON
	p.userId = u.id
JOIN 
	Address AS Ad
ON 
	u.AddressId = Ad.id

이런식으로 위의 예시를 좀 가져다 쓰긴 했는데 요점은 타고타고 들어가는것이 가능하고 조수 테이블을 JOIN시켜 zipCode(우편번호)를 가져올수 있었다.

사실 더 많은 JOIN이 있긴한데 내 생각엔 여기까지 알면 JOIN에 대한 최소한의 개념은 익혔다고 볼수있겠다. 그래도 좀더 공부하고자 한다면 left/right outer join, self join등 여러가지 형태의 join이 있는데 위 개념만 좀 알고 가면 나머지는 그렇게 어렵진 않을것것이다.

profile
왜? 라는 질문을 중요시하는 서버 개발자입니다

0개의 댓글