* 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에 들어간 테이블을 기준으로, 다른 테이블이 붙는다고 생각하면 편함
범주별 통계 구하기 (0) | 2022.11.08 |
---|---|
쿼리문 (select, where) (0) | 2022.11.07 |
DB와 SQL (0) | 2022.11.07 |