오라클 INDEX, 고유/비고유 인덱스(Unique/Non Unique Index)
고유 인덱스unique indexes는 칼럼의 값들이 유일한 경우에 만들 수 있는 인덱스이고, 비고유 인덱스non unique indexes는 칼럼 값에 중복된 값이 있는 경우 만드는 인덱스 입니다.
다음 실습에서 고유/비고유 인덱스를 생성해 보겠습니다.
실습
이번 실습에서 생성한 두개의 인덱스를 삭제하고 고유 인덱스를 생성해 보겠습니다. DROP INDEX 명령으로 인덱스를 삭제할 수 있습니다.
IDX_ENAME, IDX_ENAME_SAL 2개의 인덱스를 삭제 하세요. |
DROP INDEX IDX_EMP_ENAME;
DROP INDEX IDX_EMP_ENAME_SAL;
<실행결과>
Index IDX_EMP_ENAME이(가) 삭제되었습니다.
Index IDX_EMP_ENAME_SAL이(가) 삭제되었습니다.
EMP 테이블의 ename 컬럼에 고유인덱스를 생성하세요. |
CREATE UNIQUE INDEX IDX_EMP_ENAME ON EMP(ENAME);
<실행결과>
INDEX IDX_EMP_ENAME이(가) 생성되었습니다.
현재 EMP 테이블의 ename 컬럼은 중복되는 값이 없어서 인덱스가 잘 생성 되었습니다. 만약 중복되는 값이 있다면 어떻게 될까요? 다음 실습에서 확인 하세요.
EMP 테이블에 이미 존재하는 사원인 “SMITH” 라는 이름으로 데이터를 입력하고 고유인덱스를 생성하세요. 먼저 이전에 생성한 IDX_EMP_ENAME 인덱스를 삭제하세요. |
DROP INDEX IDX_EMP_ENAME;
INSERT INTO EMP(EMPNO, ENAME) VALUES (9999, 'SMITH');
CREATE UNIQUE INDEX IDX_EMP_ENAME ON EMP(ENAME);
<실행결과>
ORA-01452: 중복 키가 있습니다. 유일한 인덱스를 작성할 수 없습니다.
“SMITH”라는 이름의 사원이 중복되므로고유 인덱스를 생성 할 수 없습니다.
실습
비고유 인덱스를 생성해 보겠습니다.
EMP 테이블에서 job 칼럼에 대해 비고유인덱스(Non Unique Index)를 생성 하세요. |
CREATE INDEX IDX_EMP_JOB ON EMP(JOB);
<실행결과>
Index IDX_EMP_JOB이(가) 생성되었습니다.
일반적으로 오라클의 CREATE INDEX 구문은 중복되는 값이 있더라고 인덱스를 생성하므로 대부분의 인덱스는 비고유 인덱스 입니다. 주민등록번호 처럼 값이 중복되지 않음을 확신 할 수 있는 컬럼에 대해 고유 인덱스를 생성해야 합니다.
#인덱스, #오라클인덱스, #고유인덱스, #유니크인덱스, #비고유인덱스, #오라클강좌, #오라클, #ORACLE