SQL union&join

안선경·2023년 2월 14일
0

SQL Studuy

목록 보기
3/7

2023.02.14

SQL 자료추출 과정에서 필요한 많은 문법 구문을 배웠다.

  • 문법
select column1, column2
from tableName
where condition
union(all)
select column1, column2
from tableName
where condition
  • union을 쓸 경우 중복값을 버리고, nuion all을 쓸 경우 중복값을 포함해서 값을 추출한다.
  • celeb 테이블에서 성별이 F이고, 소속사 YG엔터테이먼트인 두 자료를 하나로 추출이 가능하다.
  • where 다중 조건문처럼 한 가지 조건의 두 가지 추출을 통해 사용할 수 있다.
  • 1980년대에 태어났으며, like 조건문으로 가수가 직업에 포함된 자료를 union all을 통해 추출했다.
  • 다음 문법 구문을 공부하기 위해 zerobase 데이터베이스에 snl_show 테이블을 만들었다
ID : int, not null Key 값
SEASON : int, not null
EPISODE : int, not null
broadcast_date : date
HOST : varchar(32) not null

  • 두 테이블을 통해 다양한 방법으로 데이터를 추출하면 문법 구문에 익숙해지자
  • INNER JOIN
select table.value1, table.value2...
from tableName
inner join tableName2
on table.value = table2.value -> 두 테이블을 합칠 Key값
  • inner join은 두 값에 교집합, 즉 두 테이블에 중복된 값만을 추출
  • LEFT JOIN
select table.value1, table.value2...
from tableName
left join tableName2
on table.value = table2.value -> 두 테이블을 합칠 Key값
  • left join은 왼쪽 테이블 값을 기준으로 오른쪽 테이블의 데이터를 결합하는 형태이다.
  • 왼쪽 테이블에 모든 테이터를 추출하고, 왼쪽에 존재하지 않는 오른쪽 데이터 부분은 NULL값으로 처리된다.
  • RIGHT JOIN
select table.value1, table.value2...
from tableName
right join tableName2
on table.value = table2.value -> 두 테이블을 합칠 Key값
  • right join은 오른쪽 테이블을 기준으로 왼쪽 테이블의 데이터를 결합하는 형태이다.
  • 오른쪽 테이블에 모든 데이터를 추출하고, 오른쪽에 존재하지 않는 왼쪽 데이터는 NULL값으로 처리된다.
  • full join
select table.value1, table.value2...
from tableName
left join tableName2
on table.value = table2.value -> 두 테이블을 합칠 Key값

union

select table.value1, table.value2...
from tableName
right join tableName2
on table.value = table2.value -> 두 테이블을 합칠 Key값
  • 두 테이블의 모든 데이터(중복없이)를 추출할 때 SQL에서는 별도의 명령어가 없기 때문에 left, right join과 union 명령어를 통해 가능하다.
  • self join
select table.value1, table.value2, table2.value1....
from table1, table2
where condition -> 두 테이블에 공통값을 조건으로 줌으로써 join 기능
  • self join은 where에 조건문을 통해 조건에 해당하는 값들을 join하는 형태이다.
  • 해당 추출처럼 where 조건문에 and, not, or 등 다양한 condition을 사용함으로써 데이터의 정밀한 추출이 가능하다.
  • Concat
select concat("str1", table.value1...)
from table
where condition
  • concat 함수는 문자, 테이블의 컬럼을 결합하여 하나의 column을 만드는 명령어이다.
  • as
select table.column as "str", concat("str1", column) as "str2"
from tableName as t
where condition
  • as는 축약어로 만들어주거나, column의 이름을 변경할 수 있는 기능이 있다.
  • from celeb c, snl_show s 등과 같이 as를 생략해도 정상적으로 작동한다. 반복적으로 table이름을 써야할 때 사용하면 간편하다.
  • DISTINCT
select distinct table.value, table.value2 
from tableName
where condition
  • 해당 명령어는 데이터 추출 시 중복값을 자동적으로 삭제해주는 기능이 있다.
  • LIMIT
select table.value, table.value2
from tableName
where condition
order by column (asc or desc)
limit int
  • limit명령어는 추출된 데이터에서 입력한 int값까지만 추출하는 기능으로서 order by와 함께 사용할 경우 상위 n개, 하위 n개 같이 사용할 수 있다.

끝.

profile
상황을 바꿀 수 없다면, 나를 바꾸자

0개의 댓글