1-1. 기본키(PRIMARY KEY)

<aside> 💡

기본키는 데이터 무결성을 관계형 데이터 베이스에서 실질적으로 구현한 제약조건이다. 예를 들어 사원 테이블의 사번과 사원명이라는 컬럼이 있다고 하자. 여기서 사원명은 중복될 가능성이 있다. 따라서 사원 테이블에서 특정한 사원을 식별하려면 중복되지 않는 값을 가지는 사번이 필수적이다. 이러한 사번이 바로 기본키(NOT NULL + UNIQUE) 이다.

테이블 당 하나만 정의 가능하며, 유일하게 식별할 수 있는 컬럼. 고유 인덱스 생성됨.

</aside>

기본키는 유일한 식별자 개념으로 당연히 테이블 당 1개만 생성할 수 있다. 기본키로 사용할 수 있는 컬럼 개수는 최대 32개이다. 기본키는 CREATE, ALTER 구문에서 정의 가능하며 생성 방법은 다음과 같다.

-- CREATE 문 기본키 생성문 Syntax
CREATE TABLE 테이블명
( 
  컬럼1 데이터타입 null/not null
  컬럼2 데이터타입 null/not null
  ...
  
  CONSTRAINT 제약조건명 PRIMARY KEY(column1,column2,...)
  );
  
-- 생성 예시 
 CREATE TABLE supplier
(
  supplier_id numeric(10) not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);
 
--복수 컬럼 지정 기본키 생성
CREATE TABLE supplier
(
  supplier_id numeric(10) not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
);

img1.daumcdn.png

img1.daumcdn.png

ALTER문으로 테이블에 새로운 필드를 추가하거나 수정할 때도 기본키 제약 조건을 설정할 수 있다.

-- ALTER 문 기본키 제약조건 변경
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 PRIMARY KEY (column1, column2, ... column_n);
 
-- 예시
ALTER TABLE supplier
ADD CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name);

각각의 구문을 통해 테이블 기본키의 삭제, 해제, 활성화를 할 수 있다.

-- 기본키 제약조건 삭제
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;
 
--기본키 해제
ALTER TABLE 테이블명
DISABLE CONSTRAINT 제약조건명;
 
-- 기본키 활성화
ALTER TABLE 테이블명
ENABLE CONSTRAINT 제약조건명;