11. FOREIGN KEY
1. FOREIGN KEY
Constraint
FOREIGN KEY
제약 조건은 테이블 간의 링크를 파괴하는 연산을 방지하는 데 사용된다.
FOREIGN KEY
는 다른 테이블의 PRIMARY KEY
를 참조하는 한 테이블의 필드이다.
- 외래 키가 있는 테이블을 자식 테이블이라고 하고 기본 키가 있는 테이블을 참조 또는 부모 테이블이라고 한다.
1) Persons
Table
2) Orders
Table
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