rubus0304 님의 블로그

[라이브세션 4차] SQL UNION, JOIN 본문

Data Analyst/라이브세션

[라이브세션 4차] SQL UNION, JOIN

rubus0304 2024. 10. 8. 15:10

 

새로로 붙이면 UNION

가로로 붙이면 JOIN

 

 

 

 

중복되는 데이터가 있을 땐? 

두 데이터의 형식 또는 컬럼 이름이 일치해야함.

***규칙 ****

열의 갯수와 순서가 모든 쿼리에서 동일해야 합니다.

데이터의 형식이 일치 ('문자'는 '문자', 숫자는 숫자) 해야 합니다.

• 위 두 가지의 조건을 만족할 경우, UNION 과 UNION ALL 은 2개 이상의 테이블도 결합할 수 있습니다.

 

ex) 

이름, 숫자

이름이름 as 이름,숫자   -> OK

 

테이블이 완전히 똑같지는 않아도 됨

 

select 컬럼1,컬림2,컬럼3

union

select 컬럼1, 컬럼2,컬럼3 , 컬럼4, 컬럼 5 

 

있어도 컬럼,1,2,3 순서와 형식 같다면 가능 공통된 컬럼 1, 2, 3 3개만 나옴 !

 

 

 

JOIN

 

공통 컬럼  내용만 같으면 '이름'은 달라도 괜춘!!

 

** 공통 컬럼이 꼭 select 구문 절 뒤에 와야되는건 아니다./ 공통 컬럼 이름 달라도 됨 // (UNION은 컬럼이름 똑같이 해야됨)

 

 

# JOIN 기본 구문

 

# 공통컬럼이 1개인 경우

select 컬럼1, 컬럼2..
from 테이블 a
join # join의 종류는 아래에서 설명할 예정입니다.
select 컬럼1, 컬럼2..
from 테이블 b
on a.공통컬럼=b.공통컬럼

---------------------------------------------------------------------------
# JOIN 기본 구문

 

# 공통컬럼이 2개 이상인 경우

select 컬럼1, 컬럼2..
from 테이블 as a
join # join의 종류는 아래에서 설명할 예정입니다.
select 컬럼1, 컬럼2..
from 테이블 as b
on a.공통컬럼=b.공통컬럼 and a.공통컬럼2=b.공통컬럼2 

 

 

 

 

 

 

그냥 join 은 inner join 을 의미함.

inner join 둘 다 만족하는 값만 

left join 안 잃는 쪽이 왼쪽

right join 안 잃는 쪽이 오른쪽

full outer join 모든 데이터 보고 싶을 때 사용

 

INNER JOIN

원래는 select from  뒤에 select from 쓰고 쓰는데 안 쓰고 바로 inner join 써도 됨

 

인라인뷰 서브쿼리

 

# INNER JOIN 작성법 (서브쿼리 활용편)


select 테이블명1.컬럼a, .... 
from(   select 컬럼a, 컬럼b ... 
from 테이블1
 )as 테이블명1 #첫번째 셀렉트 절의 결과를 '테이블명1' 로 명시 
inner join #(또는 join) #테이블1과 테이블2를 inner join 하겠다는 의미
  (   select 컬럼c, 컬럼d... 
  from 테이블2
 )as 테이블명2 #두번째 셀렉트 절의 결과를 '테이블명2' 로 명시 
on a.공통컬럼=b.공통컬럼# 공통된 의미의 컬럼으로, 컬럼이름이 같을필요는 없음
# 공통컬럼은 ON 절의 조건절이 되며, 조건절은 1개가 아닐 수 있음
# 즉, on a.공통컬럼=b.공통컬럼 and a.공통컬럼2=b.공통컬럼2 가 될 수 있음