본문 바로가기
Data/MySQL

[MySQL] PRIMARY KEY, FOREIGN KEY 설정하는 다양한 방법

by prinha 2021. 1. 4.
반응형
반응형

PRIMARY KEY

기본키 설정을 하면 해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가진다.

 

1) CREATE문으로 설정(생성)

CREATE TABLE 테이블이름
(
    필드이름 필드타입 PRIMARY KEY,
    ...
)
CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...,
    [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
)

 

2) ALTER문으로 설정(추가, 수정)

-- 추가

ALTER TABLE 테이블이름
ADD 필드이름 필드타입 PRIMARY KEY

ALTER TABLE 테이블이름
ADD [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
-- 수정
ALTER TABLE 테이블이름
MODIFY COLUMN 필드이름 필드타입 PRIMARY KEY

ALTER TABLE 테이블이름
MODIFY COLUMN [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)

 

3) 제약조건 삭제

ALTER TABLE 테이블이름
DROP PRIMARY KEY

FOREIGN KEY

테이블들을 연결해주는 역할을 한다.

외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력된다.

하나의 테이블을 다른 테이블에 의존하게 만드는 성격을 가지고 있다.

FOREIGN 키를 설정할 때에는 참조되는 테이블의 필드가 반드시 UNIQUE나 PRIMARY KEY가 설정되어 있어야 한다.

 

1) CREATE문으로 설정(생성)

CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...,
    [CONSTRAINT 제약조건이름]
    FOREIGN KEY (필드이름)
    REFERENCES 테이블이름 (필드이름)
)

 

2) ALTER문으로 설정(추가, 수정)

ALTER TABLE 테이블이름
ADD [CONSTRAINT 제약조건이름]
FOREIGN KEY (필드이름)
REFERENCES 테이블이름 (필드이름)

 

3) 제약조건 삭제

ALTER TABLE 테이블이름
DROP FOREIGN KEY 제약조건이름

 

4) ON DELETE, ON UPDATE

외래키에 의해 참조되는 테이블에서 데이터의 수정이나 삭제가 발생하면, 참조하고 있는 테이블의 데이터도 영향을 받는다.

이때 참조하고 있는 테이블의 동작을 ON DELETE, ON UPDATE 키워드를 이용하여 미리 설정할 수 있다.

CASCADE 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어집니다.
SET NULL 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 NULL로 변경됩니다.
NO ACTION  참조되는 테이블에서 데이터를 삭제하거나 수정해도, 참조하는 테이블의 데이터는 변경되지 않습니다.
SET DEFAULT 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 필드의 기본값으로 설정됩니다.
RESTRICT 참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없습니다.
CREATE TABLE Test2
(
    ID INT,
    ParentID INT, 
    FOREIGN KEY (ParentID)
    REFERENCES Test1(ID) ON UPDATE CASCADE ON DELETE RESTRICT
);

 

 

반응형