SEQUENCE 란,
순차적으로 정수 값을 자동으로 생성하는 객체로 자동 번호 발생기 역할을 합니다.
SEQUENCE 의 표현식은 아래와 같습니다.
예시를 통해 자세히 살펴보도록 합시다.
▶ 예시
입력된 SQL문을 해석해보면,,
SEQ_EMPID 라는 이름을 갖는 SEQUENCE를 생성하는데,
시작번호는 300으로 하고,
5씩 증가시키며,
최대 값은 310으로 지정하고,
반복을 설정하지 않으며(최대 값 도달 시 더이상 증가시키지 않음),
메모리 상에서 시퀀스 값을 특별히 관리하지 않는다..
는 의미입니다.
전체 시퀀스를 검색해보면,,
위와 같이 나옴을 알 수 있습니다.
▷ NEXTVAL/CURRVAL 사용 가능 여부
▷ SEQUENCE 수정하기
SEQUENCE 수정은 테이블 수정과 비슷하게 동작합니다.
표현식은 아래와 같습니다.
▷ SEQUENCE 삭제하기
일반적인 테이블 삭제와 같이
DROP SEQUENCE '시퀀스이름'
위와 같이 해주면 됩니다.
※ SEQUENCE는 한 번 값이 조회되면 그대로 값이 유지되기에
재사용하기보다는 삭제 후 재생성을 통해
새로운 SEQUENCE를 사용하는 것이 좋습니다.
확인차 간단한 SEQUENCE 예제를 풀어봅시다.
SQL(VIEW) 예제
난이도 ★
예제 1
Q : 1. TB_STUDENT 테이블의 데이터를 사용하여
휴학중인 학생의 정보를 저장하기 위한 테이블을 생성한다.
(테이블 이름은 STUDENT_ABSENCE_TABLE 로 한다.)
2. 생성한 테이블은 학번, 학과코드, 이름, 담당교수 정보가 저장 될 수 있게한다.
3. 생성한 테이블은 STD_ABC 이름의 동의어로도 사용할 수 있도록 만든다.
풀이 :
CREATE TABLE STUDENT_ABSENCE_TABLE(
id NUMBER NOT NULL,
학번 VARCHAR2(10) NOT NULL,
학과코드 VARCHAR2(10) NOT NULL,
이름 VARCHAR2(50) NOT NULL,
담당교수코드 VARCHAR2(10)
);
ALTER TABLE STUDENT_ABSENCE_TABLE ADD CONSTRAINT SAB_ID_PK PRIMARY KEY(ID);
INSERT INTO STUDENT_ABSENCE_TABLE(
SELECT STU_ABSENCE_SEQ2.NEXTVAL AS ID,
STUDENT_NO AS 학번,
DEPARTMENT_NO AS 학과코드,
STUDENT_NAME AS 이름,
COACH_PROFESSOR_NO AS 담당교수코드
FROM TB_STUDENT
WHERE ABSENCE_YN='Y'
);