/*
# 시퀀스
기본키로 사용할 수 있는 숫자를 자동으로 생성해주는 자동 번호 생성기
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 |