2. SEQUENCE


 - 순차적으로 증가(감소)하는 값을 생성하는 오라클 객체
 - 테이블과 독립적으로 수행
 - 기본키로 선정할만한 컬럼이 존재하지 않는 경우, 자동적으로 증가하는 값이 필요한 경우 사용

(사용형식)
  CREATE SEQUENCE 시퀀스명
   [START WITH 시작값] --시작값/생략하면 MINVALUE 값
   [INCREMENT BY 값] --증(감)값
   [MAXVALUE 값|NOMAXVALUE] --최대값 설정,기본은 NOMAXVALUE이며 10^27
   [MINVALUE 값|NOMINVALUE] --최소값 설정,기본은 NOMINVALUE이며 1
   [CYCLE|NOCYCLE] --최대[최소]값 까지 도달 후 다시 시퀀스를 생성할 지 여부. 기본은 NOCYCLE
   [CACHE n | NOCACHE] -- 시퀀스를 생성하여 캐쉬에 저장할지 여부, 기본은 CACHE 20
   [ORDER | NOORDER] --위 조건대로 시퀀스 생성을 보장할지 여부, 기본은 NOORDER

 - 시퀀스 값을 참조하기 위한 의사컬럼(Pseudo Column)
 -------------------------------------------
  의사컬럼          내용
 -------------------------------------------
  시퀀스명.NEXTVAL '시퀀스'의 다음 값 반환
  시퀀스명.CURRVAL '시퀀스'의 현재 값 반환
  ***시퀀스가 생성된 후 처음 사용하는 명령은 반드시 NEXTVAL이어야 함

 

사용예)
  CREATE SEQUENCE SEQ_TEST
     START WITH 10;
     
 -- SELECT SEQ_TEST.CURRVAL FROM DUAL; --처음은 NEXTVAL 사용해야 함  
  SELECT SEQ_TEST.NEXTVAL FROM DUAL;
  SELECT SEQ_TEST.CURRVAL FROM DUAL;
  
사용예)분류테이블에 다음 자료를 삽입하시오
      자료
      ------------------------------------
       LPROD_ID     LPROD_GU     LPROD_NM
      ------------------------------------
       시퀀스 사용     P501         농산물
       시퀀스 사용     P502         수산물
       시퀀스 사용     P503         농산가공식품
       
  CREATE SEQUENCE SEQ_LPROD_ID
   START WITH 10;
   
  INSERT INTO LPROD VALUES(SEQ_LPROD_ID.NEXTVAL,'P501','농산물'); 
  INSERT INTO LPROD VALUES(SEQ_LPROD_ID.NEXTVAL,'P502','수산물'); 
  INSERT INTO LPROD VALUES(SEQ_LPROD_ID.NEXTVAL,'P503','농산가공식품'); 
  
  SELECT * FROM LPROD;
  
  CREATE SEQUENCE SEQ_CART_NO
   START WITH 1;
   
  SELECT TO_CHAR(SYSDATE,'YYYYMMDD')||TRIM(TO_CHAR(SEQ_CART_NO.NEXTVAL,'00000'))
   FROM DUAL;

3. 동의어(SYNONYM)

 

- 오라클 객체에 부여하는 별칭
 - 테이블 별칭은 해당 SQL문에서만 유효하지만 동의어는 테이블 처럼 모든 곳에서 사용 가능
 - 다른 소유자의 객체 접근시 긴 수식어 대신 짧고 사용하기 쉬운 별칭 부여에 사용

 

(사용형식)
  CREATE [OR REPLACE] SYNONYM 동의어 FOR 객체명;
  
사용예)HR계정의 사원테이블과 부서테이블에 EMP 및 DEPT라는 동의어를 부여하시오.
    CREATE OR REPLACE SYNONYM EMP FOR HR.EMPLOYEES;
    CREATE OR REPLACE SYNONYM DEPT FOR HR.DEPARTMENTS;
    
    SELECT * FROM DEPT;
    
    SELECT EMPLOYEE_ID, EMP_NAME, SALARY
      FROM EMP
     WHERE DEPARTMENT_ID=50;

'ORACLE 복습 & 정리' 카테고리의 다른 글

[ORACLE] PL/SQL 221130-04  (1) 2022.11.30
[ORACLE] INDEX 221130-03  (0) 2022.11.30
[ORACLE] 계층형 쿼리 221129-03  (0) 2022.11.30
[ORACLE] VIEW 221130-01  (0) 2022.11.30
[ORACLE] 집합연산자 221129-02  (0) 2022.11.29

+ Recent posts