ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/DataBase

[SQL] ์‹œํ€€์Šค Sequence

NaNaRin๐Ÿ™ƒ 2021. 3. 16. 12:00

1. ์‹œํ€€์Šค Sequence

- ์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ๊ทœ์น™์— ๋งž๋Š” ์—ฐ์† ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฐ์ฒด

- ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ„์† ๋‹ค์Œ ๋ฒˆํ˜ธ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์—ญํ• 

- ์ง€์†์ ์ด๊ณ  ํšจ์œจ์ ์ธ ๋ฒˆํ˜ธ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅ

 

2. ์‹œํ€€์Šค ์ƒ์„ฑ

- CREATE ๋ฌธ์œผ๋กœ ์ƒ์„ฑ

sql
๋‹ซ๊ธฐ
CREATE SEQUENCE ์‹œํ€€์Šค ์ด๋ฆ„ -- 1 [INCREMENT BY n] -- 2 [START WITH n] -- 3 [MAXVALUE n | NOMAXVALUE] -- 4 [MINVALUE n | NOMINVALUE] -- 5 [CYCLE | NOCYCLE] -- 6 [CACHE n | NOCACHE]; -- 7

  (1) ์ƒ์„ฑํ•  ์‹œํ€€์Šค ์ด๋ฆ„ ์ง€์ • (ํ•„์ˆ˜). (2)~(7)์ ˆ์„ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ 1๋งŒํผ ๊ณ„์† ์ฆ๊ฐ€ํ•˜๋Š” ์‹œํ€€์Šค๊ฐ€ ์ƒ์„ฑ๋จ

  (2) ์‹œํ€€์Šค์—์„œ ์ƒ์„ฑํ•  ๋ฒˆํ˜ธ์˜ ์ฆ๊ฐ€ ๊ฐ’. default 1 (์„ ํƒ)

  (3) ์‹œํ€€์Šค์—์„œ ์ƒ์„ฑํ•  ๋ฒˆํ˜ธ์˜ ์‹œ์ž‘ ๊ฐ’. default 1 (์„ ํƒ)

  (4) ์‹œํ€€์Šค์—์„œ ์ƒ์„ฑํ•  ๋ฒˆํ˜ธ์˜ ์ตœ๋Œ“๊ฐ’ ์ง€์ •. ์ตœ๋Œ“๊ฐ’์€ ์‹œ์ž‘๊ฐ’(START WITH n) ์ด์ƒ, ์ตœ์†Ÿ๊ฐ’(MINVALUE) ์ดˆ๊ณผ. NOMAXVALUE์ผ ๊ฒฝ์šฐ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋ฉด 10^23, ๋‚ด๋ฆผ์ฐจ์ˆœ์ด๋ฉด -1๋กœ ์„ค์ • (์„ ํƒ)

  (5) ์‹œํ€€์Šค์—์„œ ์ƒ์„ฑํ•  ๋ฒˆํ˜ธ์˜ ์ตœ์†Ÿ๊ฐ’ ์ง€์ •. ์ตœ์†Ÿ๊ฐ’์€ ์‹œ์ž‘๊ฐ’(START WITH n) ์ดํ•˜, ์ตœ๋Œ“๊ฐ’(MAXVALUE) ๋ฏธ๋งŒ. NOMINVALUE์ผ ๊ฒฝ์šฐ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋ฉด 1, ๋‚ด๋ฆผ์ฐจ์ˆœ์ด๋ฉด 10^-26๋กœ ์„ค์ • (์„ ํƒ)

  (6) ์‹œํ€€์Šค์—์„œ ์ƒ์„ฑํ•œ ๋ฒˆํ˜ธ๊ฐ€ ์ตœ๋Œ“๊ฐ’(MAXVALUE)์— ๋„๋‹ฌํ–ˆ์„ ๊ฒฝ์šฐ CYCLE์ด๋ฉด ์‹œ์ž‘๊ฐ’(START WITH n)์—์„œ ๋‹ค์‹œ ์‹œ์ž‘, NOCYCLE์ด๋ฉด ๋ฒˆํ˜ธ ์ƒ์„ฑ์ด ์ค‘๋‹จ๋˜๊ณ  ์ถ”๊ฐ€ ๋ฒˆํ˜ธ ์ƒ์„ฑ ์š”์ฒญ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ (์„ ํƒ)

  (7) ์‹œํ€€์Šค๊ฐ€ ์ƒ์„ฑํ•  ๋ฒˆํ˜ธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฏธ๋ฆฌ ํ• ๋‹นํ•ด ๋†“์€ ์ˆ˜๋ฅผ ์ง€์ •. NOCACHE๋Š” ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •. ์˜ต์…˜์„ ๋ชจ๋‘ ์ƒ๋žตํ•˜๋ฉด default 20 (์„ ํƒ)

sql
๋‹ซ๊ธฐ
-- 1. CREATE SEQUENCE SEQ_DEPT_SEQUENCE โ€ŒINCREMENT BY 10 โ€‹โ€‹โ€‹โ€‹START WITH 10 โ€‹โ€‹โ€‹โ€‹MAXVALUE 90 โ€‹โ€‹โ€‹โ€‹MINVALUE 0 โ€‹โ€‹โ€‹โ€‹NOCYCLE โ€‹โ€‹โ€‹โ€‹CACHE 2;

  (1) 10๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด 10์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ  ์ตœ์†Ÿ๊ฐ’ 0 ์ตœ๋Œ“๊ฐ’ 90์ด๋ฉฐ ์ตœ๋Œ“๊ฐ’์— ๋„๋‹ฌํ•˜๋ฉด ๋ฒˆํ˜ธ ์ƒ์„ฑ์ด ์ค‘๋‹จ๋˜๋Š” ์บ์‹œ 2์˜ ์‹œํ€€์Šค. 90 ์ดํ›„ ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ

 

3. ์‹œํ€€์Šค ์‚ฌ์šฉ

- [์‹œํ€€์Šค ์ด๋ฆ„.CURRVAL] : ์‹œํ€€์Šค์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฒˆํ˜ธ ๋ฐ˜ํ™˜. ์‹œํ€€์Šค ์ƒ์„ฑ ํ›„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ

- [์‹œํ€€์Šค ์ด๋ฆ„.NEXTVAL] : ์‹œํ€€์Šค์˜ ๋‹ค์Œ ๋ฒˆํ˜ธ ๋ฐ˜ํ™˜

sql
๋‹ซ๊ธฐ
-- 1. INSERT INTO DEPT_SEQUENCE ( DEPTNO, DNAME, LOC) โ€Œโ€Œโ€Œโ€Œโ€‹โ€‹โ€‹VALUES (SEQ_DEPT_SEQUENCE.NEXTVAL, 'DATABASE', 'SEOUL'); โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹ -- 2. SELECT SEQ_DEPT_SEQUENCE.CURRVAL FROM DUAL;

  (1) ์‹œ์ž‘๊ฐ’์„ 10์œผ๋กœ ์„ค์ •ํ•˜์˜€์œผ๋ฏ€๋กœ DEPTNO์— 10์ด ์‚ฝ์ž…๋จ

  (2) ๋ฐ”๋กœ ์ด์ „์— 10์„ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฏ€๋กœ 10์ด ๋ฐ˜ํ™˜๋จ

 

3. ์‹œํ€€์Šค ์ˆ˜์ •

- ALTER ๋ช…๋ น์–ด๋กœ ์‹œํ€€์Šค ์ˆ˜์ •

- ์˜ต์…˜์„ ์žฌ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ. START WITH ๊ฐ’์€ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅ

sql
๋‹ซ๊ธฐ
ARTER SEQUENCE ์‹œํ€€์Šค ์ด๋ฆ„ [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE]; -- 1. ARTER SEQUENCE SEQ_DEPT_SEQUENCE โ€ŒINCREMENT BY 3 โ€‹โ€‹โ€‹โ€‹MAXVALUE 99 โ€‹โ€‹โ€‹โ€‹CYCLE;

  (1) ์ตœ๋Œ“๊ฐ’์„ 99๋กœ, ์ฆ๊ฐ€๊ฐ’์„ 3์œผ๋กœ, NOCYCLE ๋Œ€์‹  CYCLE ์˜ต์…˜์œผ๋กœ ๋ณ€๊ฒฝ. 99 ์ดํ›„ ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 0(MINVALUE)๋ถ€ํ„ฐ ๋‹ค์‹œ 3์”ฉ ์ฆ๊ฐ€

 

3. ์‹œํ€€์Šค ์‚ญ์ œ

- DROP ๋ช…๋ น์–ด๋กœ ์‹œํ€€์Šค ์‚ญ์ œ

- ์‹œํ€€์Šค๋ฅผ ์‚ญ์ œํ•˜๋”๋ผ๋„ ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Œ

sql
๋‹ซ๊ธฐ
DROP SEQUENCE ์‹œํ€€์Šค ์ด๋ฆ„; -- 1. DROP SEQUENCE SEQ_DEPT_SEQUENCE;