< 글의 목적 > : sqld 자격증을 준비하면서 , 나름대로 sql 도 많이 다루고, 프로젝트 경험도 많이 해봤는데도 불구하고 새로 배우는 개념들이 꽤 많았다. 하나하나 구글링을 하다보면 다 나올 수 있지만, 필수 개념 중 새로 배웠던 개념에 대한 정리본은 보이지 않아 글을 작성해본다.
: FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
(DML) : select / update / delete / insert
(DDL) : create / alter / modify /drop
(TCL) : rollback / commit
(DCL) : grant / revoke
-> "distinct" : 집약 기능
-> "alias" : select 는 as 생략 가능 / 컬럼 명에 띄어쓰기
from 은 as 사용 불가
-> "concat" : sql server 에서는 + / oracle 에서는 || 이 고, 문자 두개를 합쳐주는 역할이다. (인수 2개만 넣음)
->
-> 연산순위 : NOT > AND > OR
-> escape : ex) ename like 'A@_A' escspe '@' 로 작성
-> null 은 모르는 값 / 연산 불가능 / 전부 null 로 변환됨
(중요) : Null 은 oracle 에서는 최대의 값, sql server 에서는 최소의 값을 가진다.
(NVL) : (값1, 값2) 에서 값1이 null 이면 값2 , 아니면 값1
(NVL2) : (값1, 값2, 값3) 에서 값1이 null 이면 값3, 아니면 값2
(ISNULL) : NVL 과 동일
(NULLIF) : 두 값이 같으면 null , 아니면 값1
(COALESCE) : 모든 값들 중에 null 아닌 첫 번째 값
-> 인수 두 개 ex) sal desc, ename asc 일 때, sal 이 같으면 ename 오름차순
-> select ename from dual order by sal 형태도 가능 !!
-> sum(A+B+C) 와 sum(A) + sum(B) + sum(C) 차이점 확인!!
-> natural join , using
: 중복된 컬럼 하나로 처리
: 제일 앞에 등장
: alias 사용 불가
-> left outer join
: A left outer join B = A col1 = B col1 (+)
: 반대로 써준다
-> group by 에는 못쓴다
-> select 에 있으면 scalar , from 에 있으면 inline view
: inline view 에서 메인 쿼리의 컬럼 사용 가능 !!
(UNION) : 중복된 값 없음
(UNION ALL) : 중복된 값 나옴
(INTERSECT) : 교집합
(MINUS) : 차집합
-> truncate vs drop
: 구조는 남아있다 vs 전부 삭제
-> truncate vs delete
: DDL vs DML
(PK) : unique + not null
(rollup)
(cube)
(grouping sets)
-> 총합행 여부에 따라 있으면 rollup 아니면 cube , 없으면 grouping sets