본문 바로가기
TIL - 프로그래밍/SQL

MySQL FOREIGN KEY 기본 (설정, 삭제)

by chaemj97 2024. 7. 23.
728x90

FOREIGN KEY

  • 제약 조건을 설정한 필드는 외래 키라고 부르며, 한 테이블을 다른 테이블과 연결해주는 역할
  • 외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력
    • 하나의 테이블이 다른 테이블에 의존
  • FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정
  • 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일

 

1. 외래키 설정

  • CREATE 문으로 설정
CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...,
    FOREIGN KEY (필드이름) REFERENCES 부모테이블이름 (필드이름)
);
  • ALTER 문으로 설정
ALTER TABLE 테이블이름 ADD FOREIGN KEY (필드이름)
EFERENCES 테이블이름 (필드이름);

 

2. 외래키 삭제

ALTER TABLE [Table_Name]
DROP CONSTRAINT [CONSTRAINT_NAME];

ALTER TABLE [Table_Name]
DROP FOREIGN KEY [CONSTRAINT_NAME];

 

3. 외래키 옵션

  • 외래키에 의해 참조되는 테이블에서 데이터의 수정이나 삭제가 발생하면, 참조하고 있는 테이블의 데이터도 영향
  • ON DELETE, ON UPDATE 키워드를 이용하여 설정
CASCADE 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어집니다.
SET NULL 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 NULL로 변경됩니다.
NO ACTION  참조되는 테이블에서 데이터를 삭제하거나 수정해도, 참조하는 테이블의 데이터는 변경되지 않습니다.
SET DEFAULT 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 필드의 기본값으로 설정됩니다.
RESTRICT 참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없습니다.
CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...,
    FOREIGN KEY (필드이름) REFERENCES 부모테이블이름 (필드이름) ON DELETE CASCADE
);
728x90
반응형

댓글