SEQUENCE 객체, SYNONYM

서현서현·2022년 3월 7일
0

DB, SQL

목록 보기
19/27
post-thumbnail

CART 테이블의 CAART_NO를 생각해보자.

입장 순서대로 자동으로 날짜+입장번호를 부여한다 << !

값이 한번 증가하면 다시 돌아갈수 없음...

🌻 SEQUENCE 객체

  • 자동적으로 증가(또는 감소)되는 값을 생성하기 위한 객체
  • 테이블과 독립적(다른 DBMS에서 사용되는 컬럼속성 AUTO INCREMENT는 테이블 종속적임)
  • 적당한 기본키를 찾을 수 없는 경우
  • 자동적으로 증가되는 값이 필요한 경우(CART_NO의 하위 5자리값 등)
(사용형식)
CREATE SEQUENCE 시퀀스명
 [START WITH n] -- 시작값 설정 생략하면 n은 MINVALUE값
 [INSERT BY n] -- 증가(감소) 값 생략하면 n은 1
 [MAXVALUE n| NOMAXVALUE] -- 최댓값 설정 기본은 NOMAXVALUE이고 그때 n은 10^27
 [MINVALUE N| NOMINVALUE] -- 최솟값 설정 기본은 NOMINVALUE이고 그때 n은 1
 [CYCLE|NOCYCLE] -- 최대(최소)값에 도달한 후 다시 시퀀스를 생성할 경우는 CYCLE, 기본은 NOCYCLE
 [CACHE n|NOCACHE] -- 캐쉬메모리를 이용한 시퀀스 생성여부 기본은 CACHE 20
 [ORDER | NOORDER] -- 요청 순서대로 시퀀스 생성보장(ORDER), 기본은 NOORDER

+) 시퀀스값 참조방법

  • 시퀀스값의 참조는 유사컬럼(Pseudo Column) 사용
유사컬럼의미
시퀀스명.nextval시퀀의 다음값 반환
시퀀스명.currval시퀀의 현재값 반환

+) 시퀀스 생성 후 처음 수행되어야 할 명령은 ‘시퀀스명.nextval’이어야 함

10번부터 시퀀스 넣기 시작해야 안전(?)

0번부터 999까진 버리고 ( 2CHARACTER 만들어야됨)

1000번부터 쓰기시작... 네자리니까... 자릿수 맞추려고...!!!!!!!!

맨처음에 P1000으로 시작! (2 CHARACTER 안만들어도 됨)

(EX1)

				CREATE SEQUENCE SEQ_SAMPLE  -- 1부터 1씩 증가하는 시퀀스 생성
    START WITH 100;  --100부터 카운팅 되어지는 시퀀스

SELECT SEQ_SAMPLE.CURRVAL FROM DUAL;

이 세션에선 CURRVAL이 아직 할당되지 않았기 때문에 오류남

맨처음 사용하는 의사컬럼은 NEXTVALUE부터!!!!

SELECT SEQ_SAMPLE.NEXTVAL FROM DUAL;
     SELECT SEQ_SAMPLE.CURRVAL FROM DUAL;

한번 더 RUN 하면

지나간 값인 100은 이제 다시 사용 못함 > 삭제해야지 사용 가능

(EX2) 다음 자료를 분류테이블(LPROD)에 삽입하시오.

[자료]

  • 순번은 시퀀스를 사용할것
CREATE SEQUENCE SEQ_LPROD_ID
     START WITH 10;
     
     INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
     VALUES(SEQ_LPROD_ID.NEXTVAL,'P501','농산물');
     INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
     VALUES(SEQ_LPROD_ID.NEXTVAL,'P502','수산물');
     INSERT INTO LPROD(LPROD_ID,LPROD_GU,LPROD_NM)
     VALUES(SEQ_LPROD_ID.NEXTVAL,'P503','임산물');
		 SELECT * FROM LPROD;

  • 시퀀스가 사용될 수 있는 곳
  1. SELECT, UPDATE, DELETE 문의 SUBQUERY절
  2. VIEW를 대상으로 하는 QUERY
  3. DISTINCT가 사용된 SELECT절
  4. GROUP BY, ORDER BY가 사용된 SELECT절
  5. 집합연산자가 사용된 QUERY(SELECT 문)
  6. SELECT문의 WHERE절 등

🌻 SYNONYM(동의어)

  • 오라클 객체에 부여한 또다른 이름
  • 보통 다른 소유자의 객체를 접근하는 경우 “스키마명.객체명”으로 접근해야 하므로 긴 서술구가 필요하고 이를 간단한 단어로 이름을 부여하여 사용할때
  • 쓰기 힘든 긴 객체명을 대신할 때
(사용형식)
CREATE [OR REPLACE] SYNONYM 동의어 FOR 객체명;

- '객체명''동의어'라는 이름을 하나 더 부여하여 모두 같은 기능으로 사용

(EX1)

CREATE OR REPLACE SYNONYM EMP FOR HR.EMPLOYEES;
CREATE OR REPLACE SYNONYM DEPT FOR HR.DEPARTMENTS;

SELECT*FROM EMP; // HR계정의 EMPLOYEES가 불러와진다! 언제 어디에서나 EMP로 불러올수 있게됨
SELECT*FROM DEPT;

0개의 댓글