SELECT * FROM userA.employees;
- 고유 번호를 자동으로 생성 가능
- 공유할 수 있는 객체
- Primary key값을 생성하는데 사용 가능
- 응용 프로그램 코드를 대체함
- 시퀀스 값이 메모리에서 캐시된 경우, 액세스 속도가 향상됨
-- 괄호 안에 있는 건 전부 생략가능
CREATE SEQUENCE [ schema. ] sequence
[ { START WITH | INCREMENT BY } integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
];
START WITH
: sequence 시작점INCREMENT BY
: sequence 증가치 설정 (default 값은 1 (1씩 증가))MAXVALUE
: 최댓값 지정MINVALUE
: 최솟값 지정
- MAX/MINVALUE 설정 시 CYCLE과 함께 쓰임 (default는 NOCYCLE)
- CYCLE을 지정하면 MAXVALUE에 도달 시 MINVALUE부터 재생성(CYCLE)
CACHE
: 메모리에 해당 수치만큼 데이터를 적재
(데이터 불러오는 속도 개선)ORDER
: sequence 번호가 요청 순서대로 생성되는지 여부 지정
CREATE SEQUENCE dept_deptid_seq
START WITH 280
INCREMENT BY 10
MAXVALUE 9999
NOCACHE
NOCYCLE;
NEXTVAL: nextvalue
CURRVAL: currentvalue
NEXTVAL
은 사용가능한 다음 시퀀스 값을 반환CURRVAL
은 가장 최근에 발생된 숫자값을 보여줌CREATE SEQUENCE dept_deptid_seq
START WITH 280
INCREMENT BY 10
MAXVALUE 9999
NOCACHE
NOCYCLE;
-- 280
SELECT dept_deptid_seq.NEXTVAL
FROM dual;
-- 290
SELECT dept_deptid_seq.NEXTVAL
FROM dual ;
-- 290
SELECT dept_deptid_seq.CURRVAL
FROM dual ;
insert into departments(department_id,
department_name, location_id)
values (dept_deptid_seq.nextval,
'Support', 2500);
select dept_deptid_seq.currval
from dual;
캐시
: 메모리에 적재 해놓겠다는 의미
ALTER
권한이 있어야 함START WITH
는 수정 불가능DROP
문 사용-- 오류 발생: 현재 시퀀스가 290이기 때문에
-- 300으로 하면 실행가능
ALTER SEQUENCE dept_deptid_seq
MAXVALUE 280 ;
-- 시퀀스 제거
DROP SEQUENCE dept_deptid_seq ;
DESCRIBE user_sequences
- 데이터베이스 객체
- 테이블 또는 기타 데이터베이스 객체에 대체 이름을 제공하기 위해 생성할 수 있음
- 데이터 딕셔너리 정보만 저장하고 다른 저장공간 필요 x
- 기본 스키마 객체의 ID 및 위치를 숨기는데 유용함
- 다른 유저가 소유한 테이블을 쉽게 참조 가능
- 긴 객체 이름을 짧게 만들 수 있음
CREATE [PUBLIC] SYNONYM synonym
FOR object;
매번 이렇게 붙이기 번거롭기 때문에
select * from ora1.emp;
-- 이렇게 synonym을 정의하면
CREATE SYNONYM emp FOR ora1.emp ;
-- 유저이름 안붙여도 검색됨
SELECT * FROM emp ;
-- 동의어 제거
DROP SYNONYM emp ;
DESCRIBE user_synonyms
SELECT * FROM user_synonyms;
- 스키마 객체
- 오라클 서버에서 포인터를 사용하여 행 검색 속도를 높이는데 사용가능
- 신속한 경로 액세스 방식을 사용하여 데이터를 빠르게 찾아
디스크 I/O(입출력)를 줄일 수 있음- 인덱스의 대상인 테이블에 종속적임
- 오라클 서버에서 자동으로 사용되고 유지 관리됨
테이블 정의에서 PRIMARY KEY
또는 UNIQUE
제약 조건을 정의하면
고유 인덱스가 자동 생성됨
행에 액세스하는 속도를 높이기 위해
유저가 열의 고유/비고유 인덱스를 생성할 수 있음
CREATE [UNIQUE] INDEX index
ON table (column[, column]...);
UNIQUE: 중복 허용하지 않겠다
DESCRIBE user_indexes
DROP INDEX index;