SQL 12. 기타 데이터베이스 객체
관련링크
본문
데이터베이스 객체
대부분의 응용 프로그램에서는 고유 번호를 기본 키 값으로 사용해야 한다.
응용 프로그램에 코드를 작성하거나 오라클 server의 시퀀스나 MSSQL의 IDENTITY를 사용하여 고유 번호를 생성할 수 있다.
효율적으로 질의하려면 인덱스를 생성해야 하는데 인덱스를 사용하면 열 또는 열 collection의 고유성을 보존할 수도 있다.
동의어를 사용하면 객체에 다른 이름을 제공할 수 있다.
시퀀스란?
․ 고유 번호(정수)를 자동으로 생성한다.(MSSQL의 IDENTITY도 같다)
․ 공유 가능한 객체입니다.(MSSQL의 IDENTITY는 공유가능한 객체가 아니다.)
시퀀스 번호는 테이블과 별도로 저장 및 생성되므로 여러 테이블에 동일한 시퀀스를 사용할 수 있다.
․ 일반적으로 기본 키 값을 생성하는 데 사용한다.
SQL server 내부 루틴에 의해 생성되거나 증가 또는 감소된다.
․ 응용 프로그램 코드를 대체하여 응용 프로그램코드의 양을 줄여주므로 시간 절약 객체이다.
․ 오라클 서버의 시퀀스 값은 메모리에 캐시하면 액세스 효율이 높아진다.
CREATE SEQUENCE sequence[INCREMENT BY n][START WITH n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}];
sequence 시퀀스 생성기 이름입니다.
INCREMENT BY n 시퀀스 번호 사이의 간격을 지정합니다. 여기서 n은 정수다.
(이 절을 생략하면 시퀀스는 1씩 증가합니다.)
START WITH n 생성할 첫 번째 시퀀스 번호를 지정한다.(이 절을 생략하면 시퀀스는 1부터 시작됩니다.)
MAXVALUE n 시퀀스가 생성할 수 있는 최대값을 지정한다.
NOMAXVALUE 오름차순 시퀀스의 최대값으로 10의 27승을 지정하고 내림차순 시퀀스의 최대값으로 -1을 지정한다. (기본 옵션).
MINVALUE n 시퀀스의 최소값을 지정한다.
NOMINVALUE 오름차순 시퀀스위 최소값으로 1을 지정하고 내림차순 시퀀스의 최소값으로 -10의 26승을 지정한다. (기본 옵션).
CYCLE | NOCYCLE 최대값 또는 최소값에 도달한 이후에도 시퀀스가 계속 값을 생성할지 여부를 지정한다.(NOCYCLE이 기본 옵션입니다.)
CACHE n | NOCACHE Oracle server가 미리 할당하여 메모리에 저장할 값의 개수를 지정한다. (기본적으로 Oracle server는 20개의 값을 캐시합니다.)
예제) 시퀀스 생성
․ DEPARTMENTS 테이블의 기본 키로 사용할 DEPT_DEPTID_SEQ 시퀀스를 생성합니다.
․ CYCLE 옵션은 사용하지 마십시오.
오라클 디비 예제 :
CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 10
START WITH 120
MAXVALUE 9999
NOCACHE
NOCYCLE;
sequence created.
☞설명) 시퀀스 생성
예제는 DEPARTMENTS 테이블의 DEPARTMENT_ID 열에 사용할 DEPT_DEPTID_SEQ 시퀀스를 생성한다.
시퀀스 값은 120에서 시작하며 캐시를 허용하지 않고 순환하지 않는다.
시퀀스 순환보다 빠르게 이전 행을 지우는 안정적인 처리 방법이 없는 경우에는 시퀀스를 사용하여 기본 키 값을 생성할
때 CYCLE 옵션을 사용하지 말아야 한다.
참고 : 오라클의 시퀀스는 하나의 테이블에 전적으로 연결되어 있는 것이 아니다.
일반적으로 시퀀스는 용도에 따라 이름을 정하게 되지만 이름과 상관없이 어디서나 사용할 수 있다.
MSSQL의 IDENTITY는 하나의 테이블에 전적으로 연결되어 사용하는 것이므로 다른 테이블에서 공유할 수 없다.