본문 바로가기

IT/SQL

SQL 제약조건 Constraints - Primary key

PRIMARY KEY의 가장 큰 특징은 중복값을 갖지 않는다는 점이다. 물론 NULL 값도 갖지 않는다. 쉽게 말해서 테이블 안에 각각의 레코드가 담겨 있는데, 그 각 레코드를 특정하는 키 값을 Primary key라고 보면 된다. 더 쉽게 이야기를 해보자. 요즘에는 인터넷에서 개인 인증하는 방법으로 핸드폰 번호를 많이 이용한다. 11자리 핸드폰 자릿수가 모두 일치하는 사람은 없을 것이다. 대한민국 국민이라는 테이블에서 핸드폰 번호를 PRIMARY KEY로 써서 개인인증에 사용하는 것이다. 물론 실제로는 핸드폰번호, 이름, 생년월일, 성별을 PRIMARY KEY로 쓰고 있지만...

PRIMARY KEY는 컬럼 하나로도 지정할 수 있지만, 여러개의 컬럼을 PRIMARY KEY로 설정하고 사용할 수도 있다.

 

 

CREATE TABLE에서 PRIMARY KEY 설정하기 (mysql)

지금부터 members라는 테이블을 만들고, ID 컬럼을 primary key로 설정해보자.

 

CREATE TABLE members (
    ID int NOT NULL,
    name varchar(255) NOT NULL,
    cellphone int,
    PRIMARY KEY (ID)
);

 

 

Oracle, MS Access, SQL Server에서는 이렇게 설정한다.

 

CREATE TABLE members (
    ID int NOT NULL PRIMARY KEY,
    name varchar(255) NOT NULL,
    cellphone varchar(20)
);

 

 

이제는 두 개 이상의 컬럼을 PRIMARY KEY로 설정해보자.
ID라는 컬럼이랑 name이라는 컬럼을 PRIMARY KEY로 설정해보자.

 

CREATE TABLE members (
    ID int NOT NULL,
    name varchar(255) NOT NULL,
    cellphone varchar(20),
    age int,
    CONSTRANT PK_members PRIMARY KEY (ID, name)
);

 

 

 

 

ALTER TABLE에서 PRIMARY KEY 설정하기

이미 테이블이 만들어져 있는 상태에서 primary key를 설정하고 싶은 경우... 테이블을 다시 만들어야 할까?
ALTER TABLE을 이용해서 primary key의 설정을 변경할 수 있다.

 

* MySql, Oracle, SQL Server, MS Access 모두 동일한 방법으로 적용이 가능하다.
* ALTER TABLE을 사용해 primary key를 추가할 경우, 해당 컬럼은 null 값을 가지고 있어서는 안된다.

 

ALTER TABLE members
ADD PRIMARY KEY (ID);

 

 

자, 그럼 이제는 기존의 테이블에 두 개 이상의 컬럼을 primary key로 추가하는 방법을 알아보자.

 

* MySql, Oracle, SQL Server, MS Access 모두 동일한 방법으로 적용이 가능하다.

* ALTER TABLE을 사용해 primary key를 추가할 경우, 해당 컬럼은 null 값을 가지고 있어서는 안된다.

 

ALTER TABLE members
ADD CONSTRAINT PK_members PRIMARY KEY (ID, name);

 

 

 

PRIMARY KEY 삭제하기

이번에는 생성되어 있는 primary key 설정을 삭제해보자.

↓ MySQL

ALTER TABLE members
DROP PRIMARY KEY;

 

 

↓ Oracle, SQL Server, MS Access 

ALTER TABLE members
DROP CONSTRAINT PK_members;