--문법
CREATE [OR REPLACE] VIEW 뷰이름 [(alias[, alias] ...)]
AS
서브 쿼리
[WITH CHECK OPTION [ COSTRAINT 제약조건명]]
[WITH READ ONLY [CONSTRAINT 제약조건명]]
CREATE VIEW emp_view
AS
SELECT empno, ename, sal, hiredate
FROM emp
WHERE deptno = 10;
앞에 생성했던 뷰의 정보를 출력하기 위해서는 데이터 사전 SQL문을 생성한다.
SELECT * FROM user_views;
CREATE VIEW emp_view3 (사원번호, 이름, 월급)
AS
SELECT empno, ename, sal
FROM emp
WHERE deptno = 20;
-- 뷰를 생성하면서 함수를 사용하는 경우에는 반드시 컬럼 병칭을 지정해야 한다.
-- 별칭을 지정하지 않으면 에러 메시지가 출력되면서 에러가 발생된다.
CREATE VIEW emp_view4
AS
SELECT deptno, SUM(sal)
FROm emp
GROUP BY deptno;
-- 이렇게 되면 에러 없이 뷰가 생성된다.
CREATE VIEW emp_view4
AS
SELECT deptno, SUM(sal) 총합
FROm emp
GROUP BY deptno;
-- 기본테이블도 같이 삭제된다.
DELETE FROM emp_view5
WHERE deptno = 10;
단순 뷰의 DML 불가
모든 상황에서 단순 뷰의 DML 작업이 가능한 것은 아니다. 단순 뷰가 그룹함수, GROUP BY, DISTINCT 같은 표현식을 포함한 경우에는 DML 작업이 불가능하다.
CREATE OR REPLACE VIEW emp_view6
AS
SELECT empno, ename, sal, deptno
FROM emp
WHERE deptno = 30
WITH CHECK OPTION;
-- WITH CHECK OPTION의 제약조건 때문에 에러가 발생된다.
-- 부서번호가 30인 조건으로만 변경을 할 수 있다.
UPDATE emp_view6
SET deptno = 40
WHERE empno = 7521;
CREATE OR REPLACE VIEW dept_view
AS
SELECT * FROM DEPT
WHERE deptno = 10
WITH READ ONLY;
-- WITH READ ONLY 제약조건으로 DML 실행이 되지 않는다.
DELETE FROM dept_view
WHERE deptno = 10;
DROP VIEW 뷰이름;
CREATE SEQUENCE 시퀀스 명
[ START WITH n]
[ INCREMENT BY n]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ]
[ CYCLE | NOCYCLE]
[ CACHE n | NOCACHE]
CREATE SEQUENCE emp_seq
INCREMENT BY 1
START WITH 100
MAXVALUE 9999
NOCACHE
NOCYCLE;
CREATE SEQUENCE dept_deptno_seq2
START WITH 100
INCREMENT BY -10
MAXVALUE 150
MINVALUE 10
CYCLE
NOCACHE;
-- INCREMENT가 음수면 CYCLE일 때 MAXVALUE로 바뀐다.
SELECT dept_deptno_seq2.NEXTVAL, dept_deptno_seq2.CURRVAL
FROM dual;
유저가 만든 시퀀스를 확인하는 방법
SELECT sequence_name FROM user_sequences;
SELECT dept_deptno_seq.NEXTVAL, dept_deptno_deq.CURRVAL
FROM dual;
ALTER SEQUENCE 시퀀스명
[ START WITH n]
[ INCREMENT BY n]
[ MAXVALUE n | NOMAXVALUE ]
[ MINVALUE n | NOMINVALUE ]
[ CYCLE | NOCYCLE]
[ CACHE n | NOCACHE]
ALTER SEQUENCE dept_deptno_seq3
INCREMENT BY 10
CYCLE
NOCACHE;
START WITH 옵션 변경 불가
-- START WITH 옵션 변경 불가때문에 에러 발생 ALTER SEQUENCE dept_deptno_seq3 START WITH 10 INCREMENT BY 10 CYCLE NOCACHE;
CREATE TABLE dept06
(
deptno number(4) primary key,
dname varchar2(15),
loc varchar2(15)
);
CREATE SEQUENCE dept_deptno_seq4
INCREMENT BY 10
START WITH 10
NOCYCLE
NOCACHE;
INSERT INTO dept06 VALUES(dept_deptno_seq4.NEXTVAL, '개발', '서울');
INSERT INTO dept06 VALUES(dept_deptno_seq4.NEXTVAL, '인사', '서울');
SELECT * FROM dept06;
DROP SEQUENCE 시퀀스명;
DROP SEQUENCE dept_deptno_seq4;
--문법
CREATE [PUBLIC] SYNONYM 동의어
FOR 스키마.객체;
CREATE SYNONYM d_syn
FOR dept;
DROP SYNONYM 시노님명;