<시퀀스>
-
기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성해주는 오라클 객체
-
테이블과는 독립적으로 저장, 생성 (테이블을 삭제해도 관련 시퀀스는 삭제되지 않음)
-
시퀀스 생성
1
2
3
4
5
6
7
|
CREATE SEQUENCE 시퀀스1; --생성
--DROP SEQUENCE 시퀀스1; --삭제
--시퀀스 이름으로 시퀀스 정보출력
SELECT * FROM USER_SEQUENCES
WHERE sequence_name = '시퀀스1';
--MIN_VALUE부터 MAX_VALUE까지 사용 가능
--INCREMENT_BY씩 증가
|
cs |
1
2
3
4
|
--시퀀스 테스트 듀얼 테이블에서
SELECT 시퀀스1.NEXTVAL FROM DUAL; --시퀀스 사용.nextval
실행하는 만큼 증가
|
cs |
1
2
3
|
SELECT 시퀀스1.CURRVAL FROM DUAL;
--시퀀스의 현재값(값을 증가하지 않고 현재값) 현재값이 출력됨
|
cs |
-
시퀀스 테스트용 테이블 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
CREATE TABLE 부서_테스트 (
부서번호 NUMBER PRIMARY KEY,
부서이름 VARCHAR2(100)
);
--시퀀스 초기화
DROP SEQUENCE 시퀀스1; --삭제
CREATE SEQUENCE 시퀀스1; --생성
INSERT INTO 부서_테스트 (부서번호, 부서이름)
VALUES (시퀀스1.NEXTVAL, '영업부');
INSERT INTO 부서_테스트 (부서번호, 부서이름)
VALUES (시퀀스1.NEXTVAL, '개발부');
INSERT INTO 부서_테스트 (부서번호, 부서이름)
VALUES (시퀀스1.NEXTVAL, '회계부');
COMMIT;
SELECT * FROM 부서_테스트;
|
cs |
-
시퀀스 옵션 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
--시퀀스2 생성 - 시작값을 10, 증가값을 20
CREATE SEQUENCE 시퀀스2
START WITH 10 --10번부터 시작
INCREMENT BY 20; --증가값이 20
INSERT INTO 부서_테스트 (부서번호, 부서이름)
VALUES (시퀀스2.NEXTVAL, '영업부');
INSERT INTO 부서_테스트 (부서번호, 부서이름)
VALUES (시퀀스2.NEXTVAL, '개발부');
INSERT INTO 부서_테스트 (부서번호, 부서이름)
VALUES (시퀀스2.NEXTVAL, '회계부');
INSERT INTO 부서_테스트 (부서번호, 부서이름)
VALUES (시퀀스2.NEXTVAL, '마케팅부');
INSERT INTO 부서_테스트 (부서번호, 부서이름)
VALUES (시퀀스2.NEXTVAL, '교육부');
COMMIT; --영구저장
SELECT * FROM 부서_테스트;
|
cs |
-
시퀀스 1로 부서번호를 업데이트
1
2
|
UPDATE 부서_테스트
SET 부서번호 = 시퀀스1.NEXTVAL;
|
cs |
1
|
SELECT * FROM 부서_테스트;
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
|
DROP TABLE 부서_테스트;
DROP SEQUENCE 시퀀스1;
DROP SEQUENCE 시퀀스2;
DROP TABLE DEPT CASCADE CONSTRAINTS; --제약조건도 같이 삭제
DROP TABLE EMP;
DROP TABLE EMP1;
DROP TABLE EMP2;
DROP TABLE E_EMP2;
DROP TABLE EX_DATE;
DROP TABLE 직원테이블;
DROP TABLE STMANS;
DROP TABLE MEMBERS;
|
cs |
'Learning > SQL' 카테고리의 다른 글
JDBC Test (0) | 2020.06.23 |
---|---|
DCL: 데이터 제어어 (0) | 2020.06.23 |
인덱스 (0) | 2020.06.22 |
뷰 (0) | 2020.06.22 |
테이블 컬럼(열)의 추가/수정/삭제 (0) | 2020.06.22 |