SQL data type
인덱스의 종류
- primary : 중복되지 않는 유일한 키
- normal : 중복을 허용하는 인덱스
- unique : 중복을 허용하지 않는 유일한 키
- foreign : 다른 테이블과의 관계성을 부여하는 키
인덱스의 정의 방법
- 자주 조회되는 칼럼에 적용
- 조회 시 오랜시간을 소모하는 컬럼에 적용
- 데이터가 긴 경우 인덱스를 사용하지 않는다.
인덱스 생성
CREATE INDEX index_name ON table_name (index_col_name,...)
primary key
- 테이블 전체를 통틀어서 중복되지 않는 값을 지정해야 한다.
- where 문을 이용해서 데이터를 조회할 때 가장 고속으로 데이터를 가져올 수 있다.
- 테이블마다 딱 하나의 primary key를 가질 수 있다.
- 여러개의 컬럼으로 조합이 가능하다.
- primary key는 자동으로 인덱스가 생성된다.
JOIN
테이블간의 관계성에 따라서 복수의 테이블을 결합, 하나의 테이블인 것처럼 결과를 출력
JOIN의 종류
- OUTTER JOIN : 매칭되는 행이 없어도 결과를 가져오고 매칭되는 행이 없는 경우 NULL로 표시한다.
LEFT JOIN과 RIGHT JOIN이 있다. - INNER JOIN : 조인하는 두개의 테이블 모두에 데이터가 존재하는 행에 대해서만 결과를 가져온다.
* inner , outer , cross join -> 개념 및 예시
### inner
WITH winners AS (
SELECT 'John' as person, '100m' as event
UNION ALL SELECT 'Hiroshi', '200m'
UNION ALL SELECT 'Sita', '400m'
UNION ALL SELECT 'Kwame', '50m'
),
gifts AS (
SELECT 'Google Home' as gift, '100m' as event
UNION ALL SELECT 'Google Hub', '200m'
UNION ALL SELECT 'Pixel3', '400m'
UNION ALL SELECT 'Google Mini', '5000m'
)
select person,gift from winners
inner join gifts on
winners.event=gifts.event
### outer
WITH winners AS (
SELECT 'John' as person, '100m' as event
UNION ALL SELECT 'Hiroshi', '200m'
UNION ALL SELECT 'Sita', '400m'
UNION ALL SELECT 'Kwame', '50m'
),
gifts AS (
SELECT 'Google Home' as gift, '100m' as event
UNION ALL SELECT 'Google Hub', '200m'
UNION ALL SELECT 'Pixel3', '400m'
UNION ALL SELECT 'Google Mini', '5000m'
)
select person,gift from winners
full outer join gifts on
winners.event=gifts.event
### outer
WITH winners AS (
SELECT 'John' as person, '100m' as event
UNION ALL SELECT 'Hiroshi', '200m'
UNION ALL SELECT 'Sita', '400m'
UNION ALL SELECT 'Kwame', '50m'
),
gifts AS (
SELECT 'Google Home' as gift, '100m' as event
UNION ALL SELECT 'Google Hub', '200m'
UNION ALL SELECT 'Pixel3', '400m'
UNION ALL SELECT 'Google Mini', '5000m'
)
select person,gift from winners
right outer join gifts on
winners.event=gifts.event
#cross join
WITH winners AS (
SELECT 'John' as person, '100m' as event
UNION ALL SELECT 'Hiroshi', '200m'
UNION ALL SELECT 'Sita', '400m'
),
gifts AS (
SELECT 'Google Home' as gift
UNION ALL SELECT 'Google Hub'
UNION ALL SELECT 'Pixel3'
)
SELECT person, gift
FROM winners
CROSS JOIN gifts
cross join -> 가능한 전체 결과 반환
Cross join은 이렇게 줄여서도 사용가능
* Replace (prod_name ,'가','나')
-> PROD_NAME(문자열) 중에 '가'인 문자를 '나'로 바꾸는 것
* CAST(3 AS VARCHAR)
-> 3을 varchar형태로 바꿔주는 함수
* SUBSTR(store_name,2,4)
-> store에서 2번째위치에서 4개의 문자를 읽음
* CONCAT('A','B)
-> AB -> select와 함께 쓰이며 A,B 문자열을 합해줌
* DATE_ADD(기준 날짜, INTERVAL) , ex) date_add(NOW(), INTERVAL 1 MONTH)
-> '기준 날짜' 기준으로 더하고 빼기 -> 지금시간기준으로 한달 더하기
Alter (행 추가)
ex)->
alter table
`emart-dt-dev-ds.a_sku_optim.XYZ_SKU_INFO_robin`
add column goldzone int
Delete (행 삭제)
ex) -> delete from `emart-dt-dev-ds.a_sku_optim.XYZ_SKU_INFO_robin (테이블명)`
where WEEK_CNT(컬럼명)='robin' (value명)
alter (열 추가)
ex) -> alter table `emart-dt-dev-ds.a_sku_optim.XYZ_SKU_INFO_robin` add column goldzone int
'BigQuery' 카테고리의 다른 글
AWS - RDBMS 생성 기초 (0) | 2021.04.19 |
---|---|
Azure Steaming Analytics (0) | 2020.08.25 |
R을 통한 기계학습 모델 생성 + 배포 (0) | 2020.04.07 |
파이썬을 통한 머신러닝 모델 배포 (0) | 2020.04.06 |