WHERE 회원번호 IS NOT NULL;
// 테이블 생성
CREATE TABLE <테이블 명> <컬럼명> <데이터형>
// 컬럼의 데이터 타입을 변형하는 SQL구문
ALTER TABLE <테이블 명> ALTER COLUMN <컬럼명> <데이터 타입>
// 연관된 테이블 같이 삭제하는 SQL구문
DROP TABLE <테이블 명> CASCADE
GRANT CREATE TABLE TO <사용자 명>
// 제약 조건 추가
ALTER TABLE <테이블 명> ADD CONSTRAINT <제약조건이름> <제약조건>
// 제약 조건 삭제
ALTER TABLE <테이블 명> DROP CONSTRAINT <제약조건이름>
// 외래키
CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES apple (id)
// 기본키
CONSTRAINT pk_id PRIMARY KEY
// 표현식1이 NULL이면 표현식2 출력
NVL(표현식1, 표현식2)
ISNULL(표현식1, 표현식2)
// 표현식1 = 표현식2이면 NULL, 아니면 표현식1
NULLIF(표현식1, 표현식2)
// Null! if 표현식1 = 표현식2, 그렇지 않으면 표현식1
// NULL이 아닌 최초의 표현식
COALESCE(표현식1, 표현식2, ...)
// expression과 search 값들을 순차적으로 비교하며, 일치하는 첫 번째 search 값을 찾으면 해당하는 result 값을 반환
DECODE(expression, search1, result1, search2, result2, ..., default_result)
// B-A 차집합을 구하는 구문
FROM B
WHERE NOT EXISTS (SELECT 'X'
FROM A
WHERE A.ID = B.ID)
// B-A 차집합을 구하는 구문
FROM B LEFT OUTER JOIN A
ON (A.ID = B.ID)
WHERE A.ID IS NULL
왼쪽 테이블 m, 오른쪽 테이블 n, 교집합 행 k일때
GROUP BY: 1행 종류 = m, 2행 종류 = n, 행의 개수 = k일때
GROUP BY ROLLUP(A)
: 전체 합계, 컬럼 A소계GROUP BY ROLLUP(A,B)
: 전체 합계, 컬럼 A소계, 컬럼 A,B 조합 소계GROUP BY CUBE(A)
: 전체 합계, 컬럼 A소계GROUP BY CUBE(A,B)
: 전체 합계, 컬럼 A소계, 컬럼 B소계, 컬럼 A,B 조합 소계GROUP BY GROUPING SETS(A)
: 컬럼 A소계GROUP BY GROUPING SETS(A,B)
: 컬럼 A소계, 컬럼 B소계WHERE 1=1 // true
WHERE 1=2 // false -> SELECT count(*)가 0이 됨
순위, 집계, 행순서, 비율
SELECT WINDOW 함수 OVER (<행을 분할> <행을 정렬> <대상행 지정>)
// 순위: RANK, DENSE_RANK, ROW_NUMBER
// RANK(1,2,2,4), DESSE_RANK(1,2,2,3), ROW_NUMBER(1,2,3,4)
SELECT RANK() OVER (ORDER BY <컬럼> DESC) AS RANK