본문 바로가기

TIL/DataBase

Oracle / Sequence / View

반응형

/*

# 시퀀스

기본키로 사용할 수 있는 숫자를 자동으로 생성해주는 자동 번호 생성기

CREATE SEQUENCE 시퀀스명

[START WITH n] - n번으로 시작

[INCREMENT BY n] - 증가 값

[CYCLE | NOCYCLE ] - 순환 여부

[CACHE n | NOCACHE ] - 숫자 미리 생성해 놓기 || 안 해놓기

[MAX_VALUE n || NOMAXVALUE ] - 최댓값 설정

[MIN_VALUES n || NOMINVALUE] - 최솟값 설정

- ALTER SEQUENCE : 시퀀스 수정

- DROP SEQUENCE : 시퀀스 삭제

*/

SELECT * FROM coffee;

SELECT * FROM user_sequences;

CREATE SEQUENCE coffee_id_seq START WITH 5 INCREMENT BY 1 MAXVALUE 10 NOCYCLE;

INSERT INTO coffee VALUES (coffee_id_seq.nextval, ‘cold brew’, 3000);

INSERT INTO coffee VALUES (coffee_id_seq.nextval, ‘cold brew latte’, 3500);

SELECT coffee_id_seq.nextval FROM dual;

— 번호가 순환하는 시퀀스

CREATE SEQUENCE cycle_number MINVALUE 0 MAXVALUE 9 NOCACHE CYCLE INCREMENT BY 2;

SELECT cycle_number.nextval FROM dual;

/*

# 뷰 (view)

존재하는 테이블들을 이용해서 생성한 논리적인 가상의 테이블

기본 테이블로부터 파생된 오브젝트.

뷰를 통해 사용자가 기본 테이블에 대한 제한적인 접근권한을 갖도록 할 수 있다

#CREATE VIEW 뷰 이름 AS 서브 쿼리 [WITH CHECK OPTION | WITH READ ONLY]

OR REPLACE : 이미 존재하는 부라면 수정하고 존재하지 않는 뷰도 생성한다

WITH CHECK OPTION : 해당 뷰와 관련된 기본 테이블에 대한 DML이 가능해진다

WITH READ ONLY : 해당 뷰를 통해서 DML이 불가능해진다

*/

SELECT * FROM employees; - 사용하기 좋은 뷰 고르기

— DML 제한 옵션이 없는 뷰

CREATE VIEW dept50_view AS SELECT * FROM employees WHERE department_id = 50;

SELECT * FROM dept50_view;

CREATE SEQUENCE employee_id_seq MINVALUE 207 NOCYCLE NOCACHE;

— DML 제한 옵션이 없는 뷰는 현재 뷰와 관련 없는 DML이 가능

INSERT INTO dept50_view(employee_id, last_name, email, hire_date, job_id, department_id) VALUES (employee_id_seq.nextval, ‘wb’, ‘HKD’, sysdate, ‘IT_PROG’, 100)

— WITH CHECK OPTION으로 생성한 뷰

CREATE VIEW dept50_view_check AS SELECT * FROM employees WHERE department_od = 50 WITH CHECK OPTION;

— VIEW의 WHERE절과 관련되지 않은 DML은 사용할 수 없다

INSERT INTO dept50_view_check(employee_id, last_name, email, hire_date, job_id, department_id) VALUES (employee_id_seq.nextval, ‘ds’, ‘PKD’, sysdate, ‘IT_PROG’, 100);

— WITH CHECK OPTION은 해당 VIEW와 관련된 50번 부서의 INSERT는 허락해주고 있다

INSERT INTO dept50_view_check(employee_id, last_name, email, hire_date, job_id, department_id) VALUES (employee_id_seq.nextval, ‘ds’, ‘PKD’, sysdate, ‘IT_PROG’, 50);

반응형

'TIL > DataBase' 카테고리의 다른 글

MongoDB 개념  (0) 2022.01.07
SQLD 자격증 강의 정리 1st  (0) 2021.12.15
Oracle / Transaction / Constraints  (0) 2021.08.01
Oracle / CREATE TABLE / CRUD DATA  (0) 2021.08.01
Oracle / ORDER_BY / JOIN / ANSI JOIN  (0) 2021.08.01