상세 컨텐츠

본문 제목

여러 테이블을 연결해보기

Back-end/SQL

by 본투비곰손 2022. 11. 10. 23:22

본문

728x90

* Alrias 각 테이블에 별칭(약어)를 사용하여 사용 할 수 있다.

users 테이블의 약어를 u 

order 테이블의 약어를 o 라고 했을때 

u.user_id는 users테이블의 user_id

o.user_id는 order테이블의 user_id를 의미한다.

 

JOIN

두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블 처럼 보는것을 의미한다.

엑셀의 vlookup와 동일하다고 생각하면 된다.

 

1. left join

A테이블을 기준으로 B테이블을 붙인다.(B테이블에 A테이블 필드의 값이 없다면 값은 null이 된다.)

select * from users u

left join order o on u.user_id = o.user_id

위와 같이 사용하며 users 테이블 기준으로 user_id가 order의 user_id값과 일치하면 해당되는 다른 데이터 필드를 가지고 오고 필드값이 없더라도 users 테이블의 user_id는  출력되지만 필드값은 null이 된다.

2. inner join

A테이블 필드값과  B테이블의 필드값이 일치하는 데이터만 보여준다.(B테이블에 A테이블 필드의 값이 없다면 출력되지 않는다. 교집합을 생각하면 된다.)

select * from users u

inner join order o on u.user_id = o.user_id

위와 같이 사용하며 users 테이블의 user_id와 order의 user_id가 일치하면 해당되는 다른 데이터 필드를 가지고 와서 한번에 볼 수 있다.

 

select * from users u

inner join order o on u.user_id = o.user_id

위 쿼리가 실행되는 순서 from → join → select

 

1. from users : users 테이블 전체를 가지고 온다.

2. inner join order o on u.user_id = o.user_id : order를 users 테이블에 붙이는데, users테이블의 user_id와 동일한

    user_id 를 갖는 order 의 테이블을 붙인다.

3. select* : 붙여진 모든 데이터를 출력한다.

 

항상 from에 들어간 테이블을 기준으로, 다른 테이블이 붙는다고 생각하면 편함

728x90

'Back-end > SQL' 카테고리의 다른 글

범주별 통계 구하기  (0) 2022.11.08
쿼리문 (select, where)  (0) 2022.11.07
DB와 SQL  (0) 2022.11.07

관련글 더보기