INSERT
INSERT INTO EMP VALUES(1000,'임베스트');
ALTER TABLE DEPT NOLOGGING; -- NOlogging 사용
데이터베이스에 데이터를 입력하면 로그파일에 정보를 기록한다. Nologging 옵션은 로그파일 기록을 최소화시켜서 성능을 향상시킨다. Buffer Cache 메모리 영역을 생략하고 기록한다.
UPDATE
UPDATE EMP
SET ENAME='마운트'
WHERE EMPNO = 19;
DELETE
DELETE FROM EMP
WHERE EMPNO = 100;
테이블의 모든 데이터를 삭제하는 방법은 DELETE FROM
과 TRUNCATE TABLE
이 있는데, 전자는 삭제해도 테이블 용량은 감소하지 않는 반면, 후자는 테이블의 용량도 초기화 시킨다.
ORDER BY
SELECT * FROM EMP ORDER BY ENAME, SAL DESE;
순서를 정렬할 수 있는데, 오름차순이나 내림차순을 지정하지 않으면 기본적으로 오름차순으로 정렬된다.
DISTINCT, ALIAS
DISTINCT
는 칼럼명 앞에 지정하여 중복된 데이터를 한 번만 조회하도록 한다. ALIAS
는 테이블명이나 칼럼명을 간략하게 할 때 사용한다.
NVL(MGR,0)
이면 MGR
칼럼이 NULL이면 0으로 바꾼다.NVL2(MGR, 1, 0)
은 MGR
칼럼이 NULL이 아니면 1을 NULL이면 0으로 반환한다.NULLIF(exp1,exp2)
는 exp1
과 exp2
가 같으면 NULL을 다르면 exp1
을 반환한다.COALESCE(exp1, exp2, exp3)
은 exp1
이 NULL이 아니면 exp1
의 값을 아니면 뒤의 값의 NULL여부를 판단하여 값을 반환한다.SELECT DEPTNO, SUM(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING SUM(SAL)>10000; --group by 한 결과에서 급여 합계가 10000 이상인 것만 조회한다.
집계함수
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY 순으로 실행된다.
명시적 형변환
문자열 함수
날짜형 함수
숫자형 함수
DECODE
DECODE(EMPNO, 1000, 'TRUE', 'FALSE')
CASE
SELECT CASE
WHEN EMPNO = 1000 THEN 'A'
WHEN EMPNO = 1001 THEN 'B'
ELSE 'C'
END
FROM EMP;
ROWNUM
SELECT * FROM EMP
WHERE ROWNUM <= 1;
ROWID
SELECT rowid, ename
FROM EMP;
서브쿼리를 사용해서 임시 테이블이나 뷰처럼 사용하는 구문이다. 서브쿼리 블록에 별칭을 지정할 수 있다.
WITH viewData AS
(SELECT * FROM EMP
UNION ALL
SELECT * FROM EMP
)
SELECT * FROM viewData WHERE EMPNO = 1000;