1. SQL 순서
- From/join
- where
- groupby
- having
- select
- order by
2. Data lake vs Data warehouse vs Data mart
- Data lake : 정형, 비정형, 반정형 모든 raw data 집합
- Data warehouse : Data를 저장 전 스키마가 적용되며, 특정 목적에 맞게 정리하고 구성된 데이터의 집합
- Data mart : Lob 특성에 맞게 모아놓은 Data 집합
3. DML / DDL
- DML : 데이터를 추가 조작하는데에 쓰이는 언어
INSERT
,DELETE
,UPDATE
,SELECT
- DDL : 테이블을 생성하거나 변경, 삭제할 때 쓰이는 언어
CREATE
,ALTER
,REPLACE
,DROP
Create table
CREATE TABLE IF NOT EXISTS person
-- My sql
Insert table
insert into person
values (1,'이혜리','2021-10-04')
--모든 컬럼에 순서대로 값을 넣을 때는 컬럼명을 생략하고, 아래와 같이 쓸 수 있다.
Join
- Inner join은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 컬럼의 데이터가 있어야 함
- Outer join은 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나옴
- 카테시안곱 조인은 조인조건 없이 각 테이블의 모든 행을 조합하여 결과반환, 즉 두 테이블간의 연관성이 없을때 사용
- Left join은 왼쪽 테이블의 모든 값이 출력되며, 추가로 왼쪽 테이블에 데이터를 얹어서도 가능
- Right join은 오른쪽 테이블의 모든 값이 출력되며, 추가로 오른쪽 테이블에 데이터를 얹어서도 가능
- Cross join은 한쪽 테이블의 모든 행과 다른쪽 테이블의 모든 행을 조인하는 기능이다
- Self join은 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다
--emp [id,number,name]
--dept [id,email,address]
Select *, dept_id
from emp left join dept
on emp_id = dept_id
-- 결과 : emp[id,number,name,dept_id]
4. With절
With **table_name** as (
select 'with절' as STR1
from dual
)
select *
from **table_name**
-- 여러 번 반복되는 서브쿼리 또한 With절로 만들어서 사용하면 쿼리 성능 향상 시킬 수 있다
INLINE VIEW(FROM SUBQUERY)
SELECT *
FROM (SELECT *
FROM table
ORDER BY id DESC)
WHERE ROWNUM <= 5;
중첩 서브쿼리 (WHERE SUBQUERY)
PERCENT_RANK ()
OVER (
[ PARTITION BY partition_expression ]
[ ORDER BY order_list A**sc|Desc** ]
)
DDL 참고
5. Data type
integer | null 처리불가, integer to int 하지 않을 시 산술연산 불가능
반응형