Skip to content

11. FOREIGN KEY


1. FOREIGN KEY Constraint

  • FOREIGN KEY 제약 조건은 테이블 간의 링크를 파괴하는 연산을 방지하는 데 사용된다.
  • FOREIGN KEY는 다른 테이블의 PRIMARY KEY를 참조하는 한 테이블의 필드이다.
  • 외래 키가 있는 테이블을 자식 테이블이라고 하고 기본 키가 있는 테이블을 참조 또는 부모 테이블이라고 한다.


1) Persons Table

001


2) Orders Table

002


  • Orders 테이블의 PersonID 열은 Persons 테이블의 PersonID 열을 가리킨다.
  • Persons 테이블의 PersonID 열은 Persons 테이블의 PRIMARY KEY이다.
  • Orders 테이블의 PersonID 열은 Orders 테이블의 FOREIGN KEY이다.
  • FOREIGN KEY 제약 조건은 부모 테이블에 포함된 값 중 하나여야 하기 때문에 외래 키 열에 잘못된 데이터가 삽입되는 것을 방지한다.


2. FOREIGN KEY on CREATE TABLE

  • 다음은 Orders 테이블이 생성될 때 PersonID 열에 FOREIGN KEY 제약 조건을 생성한다.


1) MySQL

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);


2) SQL Server / Oracle / MS Access

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);


  • FOREIGN KEY 제약 조건의 이름을 지정하고, 여러 열에 대한 FOREIGN KEY 제약 조건을 정의하려면 다음 SQL 문을 사용한다.


CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID in,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);


3. FOREIGN KEY Constraint on ALTER TABLE

  • Orders 테이블이 이미 생성된 경우 PersonID 열에 FOREIGN KEY 제약 조건을 생성하려면 다음 SQL 문을 사용한다.


ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);


  • FOREIGN KEY 제약 조건의 이름을 지정하고, 여러 열에 대한 FOREIGN KEY 제약 조건을 정의하려면 다음 SQL 문을 사용한다.


ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);


4. DROP a FOREIGN KEY Constraint

  • FOREIGN KEY 제약 조건을 삭제하려면 다음 SQL 문을 사용한다.


1) MySQL

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;


2) SQL Server / Oracle / MS Access

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

References