✨VIEW
- SELECT 쿼리의 실행 결과를 화면에 저장한 논리적 가상 테이블
- 실질적 데이터를 저장하고 있지는 않음
- 사용자는 테이블을 사용하는 것과 동일하게 사용 가능
DML(INSERT / UPDATE / DELETE)사용 가능
→ 생성된 뷰에 요청한 DML구문이 베이스 테이블도 변경함사용자 계정에 설정된 뷰 목록 조회
SELECT * FROM USER_VIEWS; -- VIEW_NAME : 뷰 이름 -- TEXT : 저장한 SELECT문
CREATE VIEW 뷰명
AS 서브쿼리;
CREATE VIEW VW_EMPLOYEE
AS SELECT
E.EMP_ID [AS 사번],
E.EMP_NAME [AS 이름],
D.DEPT_TITLE [AS 부서명],
E.SALARY [AS 급여],
N.NATIONAL_NAME [AS 국가명]
FROM
EMPLOYEE E
JOIN DEPARTMENT D ON DEPT_ID = DEPT_CODE
JOIN LOCATION L ON LOCAL_CODE = LOCATION_ID
JOIN NATIONAL N ON L.NATIONAL_CODE = N.NATIONAL_CODE;
CREATE OR REPLACE VIEW V_EMP_JOB(사번, 이름, 직급, 성별, 근무년수)
AS SELECT EMP_ID,
EMP_NAME,
JOB_NAME,
DECODE(SUBSTR(EMP_NO, 8, 1), 1, ‘남’, 2, ‘여’),
EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)
FROM EMPLOYEE
JOIN JOB USING(JOB_CODE);
CREATE [OR REPLACE] [FORCE | NOFORCE]VIEW 뷰명
AS 서브쿼리;
[WITH CHECH OPTION]
[WITH READ ONLY]
FORCE
: 서브쿼리에 기술된 테이블이 존재하지 않더라도 뷰 생성NOFORCE
: 서브쿼리에 기술된 테이블이 존재해야지만 뷰 생성 (기본값)대부분의 뷰는 조회 를 목적으로 이용함
DML은 되도록 사용하지 않는 것이 좋다.
✨SEQUENCE
순차적으로 정수 값을 자동으로 생성하는 객체
사용자 계정에 설정된 뷰 목록 조회SELECT * FROM USER_SEQUENCES;
CREATE SEQUENCE 시퀀스명;
CREATE SEQUENCE 시퀀스명;
[START WITH 숫자]
[INCREMENT BY 숫자]
[MAXVALUE 숫자 | NOMAXVALUE]
[MINVALUE 숫자 | NOMINVALUE]
[CYCLE | NOCYCLE]
[NOCACHE | CACHE 바이트크기]
NOCYCLE
CACHE 20
👉 NEXTVAL
- 현재 시퀀스 값 (마지막으로 성공한 ENXTVAL의 수행한 값)
SELECT SEQ_EMPNO.NEXTVAL FROM DUAL;
👉 CURRVAL
- 시퀀스 값에 일정 값을 증가시켜 발생한 값
→ 현재 시퀀스 값 + (INCREMENT BY 값)- NEXTVAL 사용 전에 CURRVAL 사용하면 오류 발생
SELECT SEQ_EMPNO.CURRVAL FROM DUAL;
-- 데이터 추가 시 시퀀스 사용 ( NEXTVAL)
INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, EMP_NO, JOB_CODE, HIRE_DATE)
VALUES(SEQ_EID.NEXTVAL, '홍길동','111111-1111111','J3', SYSDATE);
INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, EMP_NO, JOB_CODE, HIRE_DATE)
VALUES(SEQ_EID.NEXTVAL, '홍길순','111111-1111111','J3', SYSDATE);
ALTER SEQUENCE SEQ_EMPID
INCREMENT BY 10
MAXVALUE 400
NOCYCLE
NOCACHE;
START WITH 값은 변경 불가능