Kim VamPa

[Oracle 기본사용법][05]시퀀스(SEQUENCE) 본문

공부/데이터베이스

[Oracle 기본사용법][05]시퀀스(SEQUENCE)

Kim VamPa 2020. 4. 8. 09:33
728x90
반응형

"생활코딩 Oracle"을 개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다.


목표

  • 시퀀스가 무엇인지 이해합니다.
  • 시퀀스를 직접 sQL Plus 에서 사용해봅니다.

*해당 글의 실습은 Oracle XE 버전을 환경을 바탕으로 진행 행하였습니다..

목차

1. 시퀀스(SEQUENCE)

2. 실습

3. 시퀀스 현재값

1. 시퀀스(SEQUENCE)

 

  시퀀스란 자동으로 순차적 증가하는 순번을 반환하는 데이터베이스 객체.

 

 [Oracle 기본사용법]포스팅에서 지속적으로 사용한 테이블을 

id title description created
1 ORACLE ORACLE is ... 2020.04.03
2 MySQL MySQL is .... 2020.04.03
3 NoSQL NoSQL is ... 2020.04.03

 해당 표를 보시면 id컬럼은 보시면 다른 레코드 들을 구분 할 수 있는 식별자의 역할을 위해서 의도적으로 순차적으로 1씩 증가 시킨 것을 볼 수 있습니다. 다음 레코드가 만들어진다면 4 이고, 새로 만든다면 계속 1씩 증가 할 것 입니다. 본래는 아래 명령어와 같이 직접 번호를 입력

INSERT INTO topic (id, title, description, created) values(4, 'MSSQL', 'MSSQL IS ...', SYSDATE);

해주 어야만 합니다. 시퀀스는 레코드를 새로 생성(INSERT INTO)할때마다 사용자가 값을 일일이 계산해서 주지 않더라도 자동으로 +1 된 값을 추가시켜줍니다.

 

사용방법

시퀀스를 사용하기 위해선 먼저 "시퀀스를 생성"하는 명령어가 먼저 선행되어야합니다.

- SEQ_TOPIC는 생성 하는 시퀀스의 이름 입니다.

CREATE SEQUENCE 시퀀스명;

 생성되어진 시퀀스를 삽입할 데이터 명령문에 사용하면됩니다. 다음 명령문은 아래 실습에서 사용할 시퀀스를 사용한 명령문입니다.

INSERT INTO topic (SEQ_TOPIC.NEXTVAL, 'MSSQL', 'MSSQL IS ...', SYSDATE);

 

2. 실습

 지금까지 지속적으로 만들었떤 아래의표를 시퀀스를 통해 만들어 보겠습니다.

id title description created
1 ORACLE ORACLE is ... 2020.04.03
2 MySQL MySQL is .... 2020.04.03
3 NoSQL NoSQL is ... 2020.04.03

 

1. 먼저 테이블을 만듭니다. (앞선 포스팅에서 생성햇던 명령문과 동일합니다.

CREATE TABLE topic(
          id NUMBER NOT NULL,
          title VARCHAR2(50) NOT NULL,
          description VARCHAR(4000),
          created DATE NOT NULL,
          CONSTRAINT PK_TOPIC PRIMARY KEY(id)

);

그림 2-1

 

2. 사용할 시퀀스를 생성합니다.

CREATE SEQUENCE SEQ_TOPIC;

그림 2-2

 

3. 데이터 삽입문을 실행합니다. . 기존 포스팅에서 계속 사용햇던 명령은 id칼럼에 직접 번호를 부여해서 데이터를 넣엇지만 이번엔 시퀀스 객체를 삽입하겠습니다.

 

INSERT INTO topic (id, title, description, created) values(SEQ_TOPIC.NEXTVAL, 'ORACLE', 'ORACLE is...', SYSDATE);
INSERT INTO topic (id, title, description, created) values(SEQ_TOPIC.NEXTVAL, 'MySQL', 'MySQL is...', SYSDATE);
INSERT INTO topic (id, title, description, created) values(SEQ_TOPIC.NEXTVAL, 'SQL Server', 'SQL Server is...', SYSDATE);
INSERT INTO topic (id, title, description, created) values(SEQ_TOPIC.NEXTVAL, 'MSSQL', 'MSSQL is...', SYSDATE);
INSERT INTO topic (id, title, description, created) values(SEQ_TOPIC.NEXTVAL, 'MongoDB', 'MongoDB is...', SYSDATE);

그림 2-3

4. 명령문 commit;을 실행합니다. 실행하지 않는다면 데이터베이스에 온전히 등록되지 않습니다.

COMMIT;

 

5. 시퀀스를 사용한 데이터가 어떤 형식으로 삽입되었는지 SELECT 문을 통해서 확인합니다.

SELECT id, title FROM topic;

그림 2-4

- 우리는 id 데이터에 시퀀스명을 삽입했음에도 불구하고 1, 2, 3, 4, 5가 자동으로 삽입되었음을 알 수 있습니다. 

 

 

*주의사항

테이블에 시퀀스를 사용하지 않고 데이터 삽입을 한 상태에에서 시퀀스문을 사용한 데이터 삽입문을 사용한다면 에러가 날 수 있습니다. 따라서 테이블을 생성해서 첫 데이터 삽입때부터 시퀀스를 사용하거나, 아니면 데이터를 모두 지운뒤 첫 행부터 사용해야 합니다.

 

Reference

Date

  • 2020.04.08 작성

 

 

 

 

728x90
반응형
Comments