[Oracle SQL] 오라클 기본키의 정의와 선언하는 방법

2021-02-19


Photo by Esther Tuttle on Unsplash

- 정의

 

기본키는 테이블을 구성하는 여러 후보 키들 중에서 선택되어 테이블의 각 튜플(행 / 데이터)을 식별하는 역할을 하게 된다. 여기서 기본키는 UNIQUE이기 때문에 유일성이라는 특징을 가지고 있으며, 또한 NOT NULL의 속성도 가지고 있어 NULL의 값도 허용하지 않는다. 오늘은 이러한 기본키를 선언하는 방법을 알아보자.

 


- 방법 1 CREATE

 

첫번째 방법은 테이블의 선언과 동시에 기본키를 부여 (설정) 하는 방법이다.

-- 컬럼선언과 함께 기본키 설정
CREATE TABLE INFO (
    INFONO NUMBER PRIMARY KEY,
    NAME VARCHAR2(10),
    AGE NUMBER
);

-------------------------------
DROP TABLE INFO;
-- 다시 생성해보기 위한 테이블 삭제문
---------------------------------

-- 컬럼을 모두 선언한 후 마지막에 
-- 기본키를 부여하는 방법
CREATE TABLE INFO (
    INFONO NUMBER, 
    NAME VARCHAR2(10),
    AGE NUMBER,
    
    PRIMARY KEY(INFONO)
);

 

위와 같이 두 가지 방법으로 테이블 생성과 동시에 기본키를 선언할 수 있다. 코드 스타일에 따라 원하는 방법을 사용하면 된다. ( 개인적으로 가독성 면에서는 아무래도 두 번째 방법이 조금 더 눈에 들어오는 것 같다. )


- 방법 2 ALTER

 

테이블과 동시에 기본키를 선언하면 좋겠지만, 기본키로 정할 컬럼(속성)을 정하지 못했거나, 테이블 생성 후 기본키 컬럼(속성)이 새롭게 추가되면, 상황이 난감해질 수 도 있다. 

 

이러한 경우를 대비해서 ALTER 구문을 사용해 테이블 생성 이후에도 기본키를 부여할 수 있다. 코드는 아래와 같다.

 

-- 기본키를 지정하지 않은 테이블
CREATE TABLE INFO (
    INFONO NUMBER, 
    NAME VARCHAR2(10),
    AGE NUMBER
);


-- ALTER를 이용한 기존테이블 
-- 기본키 설정
ALTER TABLE INFO ADD PRIMARY KEY (INFINO);

 

방법 1 에서 사용한 테이블과 동일하며, 이번에는 기본키를 선언하지 않고 테이블을 만들어 주었다. 때문에 기본키를 설정해 주어야 하는데, 이때 바로 ALTER 구문을 사용해주면 된다.

 

코드는 ALTER TABLE INFO ADD PRIMARY KEY (INFINO); 이러하다. 코드를 풀이하면 이렇다.

 

ALTER TABLE INFO ADD PRIMARY KEY (INFINO);

바꿔라 / 테이블 중 'INFO' / 추가한다 / 기본키를 ( INFINO ) 에

-> " 테이블 중 INFO에 기본키를 (INFONO)로 추가하도록 바꿔라. "  정도로 해석하면 된다. 

 

다음에는 이러한 기본키를 수정 삭제 하는 방법을 알아보도록 하자.


메인 이미지 출처: Photo by Esther Tuttle on Unsplash