이 글에서는 SQL Server에서 기본 키(PRIMARY KEY)를 생성하고, 삭제하며, 비활성화하거나 다시 활성화하는 방법을 구문과 실제 예제와 함께 자세히 살펴봅니다.
SQL Server에서 기본 키란 무엇인가?
SQL Server(Transact-SQL)에서 기본 키는 하나의 필드 또는 여러 필드의 조합으로, 테이블 내 각 레코드를 고유하게 식별하는 역할을 합니다. 기본 키에 포함된 필드에는 NULL 값이 허용되지 않으며, 하나의 테이블에는 오직 하나의 기본 키만 존재할 수 있습니다. 기본 키는 CREATE TABLE 문 또는 ALTER TABLE 문을 사용하여 정의할 수 있습니다.
기본 키 생성 – CREATE TABLE 문 사용
기본 구문
CREATE TABLE ten_bang ( cot1 kieu_du_lieu [ NULL | NOT NULL ] [ PRIMARY KEY ], cot2 kieu_du_lieu [ NULL | NOT NULL ], ... );
또는 CONSTRAINT 절을 사용하여 다음과 같이 작성할 수도 있습니다.
CREATE TABLE ten_bang ( cot1 kieu_du_lieu [ NULL | NOT NULL ], cot2 kieu_du_lieu [ NULL | NOT NULL ], ... CONSTRAINT ten_rang_buoc PRIMARY KEY (cot1, cot2, ... cot_n) );
예제 1: 단일 컬럼 기본 키
CREATE TABLE nhanvien ( nhanvien_id INT PRIMARY KEY, ho VARCHAR(50) NOT NULL, ten VARCHAR(50) NOT NULL, luong MONEY );
위 예제에서 nhanvien(직원) 테이블의 기본 키는 nhanvien_id라는 단일 필드로 구성됩니다. 같은 결과를 CONSTRAINT 절을 이용해 다음과 같이 만들 수도 있습니다.
CREATE TABLE nhanvien ( nhanvien_id INT, ho VARCHAR(50) NOT NULL, ten VARCHAR(50) NOT NULL, luong MONEY, CONSTRAINT nhanvien_pk PRIMARY KEY (nhanvien_id) );
예제 2: 복합 기본 키 (여러 컬럼)
이번에는 두 개 이상의 필드로 구성된 기본 키를 생성하는 예제입니다.
CREATE TABLE nhanvien ( ho VARCHAR(50) NOT NULL, ten VARCHAR(50) NOT NULL, luong MONEY, CONSTRAINT nhanvien_pk PRIMARY KEY (ho, ten) );
이 예제에서는 ho(성)과 ten(이름) 두 컬럼으로 기본 키를 구성했습니다. 이 두 필드의 조합이 테이블 내 레코드를 고유하게 식별합니다.
기본 키 생성 – ALTER TABLE 문 사용
ALTER TABLE 문으로 기본 키를 생성하려면 해당 컬럼이 반드시 NOT NULL로 정의되어 있어야 합니다. 컬럼이 NULL 값을 허용하도록 되어 있다면, 테이블을 삭제한 후 다시 생성하거나 컬럼 정의를 변경하기 전까지는 기본 키를 추가할 수 없습니다.
기본 구문
ALTER TABLE ten_bang ADD CONSTRAINT ten_rang_buoc PRIMARY KEY (cot1, cot2, ... cot_n);
예제 1: 단일 컬럼 기본 키 추가
ALTER TABLE nhanvien ADD CONSTRAINT nhanvien_pk PRIMARY KEY (nhanvien_id);
이 예제에서는 nhanvien 테이블에 nhanvien_id 필드를 기준으로 하는 기본 키를 생성합니다. 주의할 점은 nhanvien_id 필드가 미리 NOT NULL로 정의되어 있어야 한다는 것입니다. 그렇지 않다면 테이블을 삭제 후 재생성하면서 해당 필드를 NOT NULL로 정의해야 합니다.
예제 2: 복합 기본 키 추가
여러 필드로 구성된 기본 키도 다음과 같이 생성할 수 있습니다.
ALTER TABLE nhanvien ADD CONSTRAINT nhanvien_pk PRIMARY KEY (ho, ten);
이 기본 키는 ho(성)과 ten(이름) 두 필드로 구성되며, 두 필드 모두 사전에 NOT NULL로 정의되어 있어야 합니다.
SQL Server에서 기본 키 삭제하기
기본 구문
ALTER TABLE ten_bang DROP CONSTRAINT ten_rang_buoc;
예제
ALTER TABLE nhanvien DROP CONSTRAINT nhanvien_pk;
위 예제는 nhanvien 테이블에서 nhanvien_pk라는 이름의 기본 키 제약 조건을 삭제합니다.
SQL Server에서 기본 키 비활성화하기
기본 키는 인덱스 형태로 관리되므로, ALTER INDEX 문을 사용하여 일시적으로 비활성화할 수 있습니다.
기본 구문
ALTER INDEX ten_rang_buoc ON ten_bang DISABLE;
예제
ALTER INDEX nhanvien_pk ON nhanvien DISABLE;
위 예제는 nhanvien 테이블의 기본 키 인덱스를 비활성화합니다. 비활성화된 동안에는 해당 제약 조건에 의한 데이터 무결성 검사가 수행되지 않습니다.
SQL Server에서 기본 키 다시 활성화하기
비활성화된 기본 키를 다시 활성화하려면 REBUILD 옵션을 사용하여 인덱스를 재구축해야 합니다.
기본 구문
ALTER INDEX ten_rang_buoc ON ten_bang REBUILD;
예제
ALTER INDEX nhanvien_pk ON nhanvien REBUILD;
위 예제는 nhanvien 테이블의 기본 키 인덱스를 재구축하여 다시 활성화합니다.
정리
지금까지 SQL Server에서 기본 키의 개념과 함께 CREATE TABLE 및 ALTER TABLE 문을 활용한 생성 방법, DROP CONSTRAINT를 통한 삭제, 그리고 ALTER INDEX의 DISABLE과 REBUILD 옵션을 이용한 비활성화 및 재활성화 방법까지 살펴보았습니다. 기본 키는 데이터베이스 무결성의 핵심 요소이므로, 컬럼의 NULL 허용 여부와 제약 조건 이름 관리에 항상 유의하는 것이 좋습니다.