FOREIGN KEY 제약 조건
FOREIGN KEY 제약 조건은 테이블 간의 링크를 파괴하는 작업을 방지하는 데 사용된다.
FOREIGN KEY 는 다른 테이블에서 참조하는 한 테이블의 PRIMARY KEY 필드(또는 필드 모음)이다 .
FOREIGN KEY가 있는 테이블을 자식 테이블이라고 하고 PRIMARY KEY가 있는 테이블을 참조 또는 부모 테이블이라고 한다.
예시
사람 테이블
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
주문 테이블
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
“Orders” 테이블의 “PersonID” 열은 “Persons” 테이블의 “PersonID” 열을 가리킨다.
“Persons” 표의 “PersonsID” 열은 “Persons” 표의 PRIMARY KEY이다.
“Orders” 표의 “PersonsID” 열은 “Orders” 표의 FOREIGN KEY이다.
FOREIGN KEY 제약 조건은 FOREIGN KEY 열에 잘못된 데이터가 삽입되는 것을 방지한다.
FOREIGN KEY 열은 부모 테이블에 포함된 값 중 하나여야 하기 때문이다.
CREATE TABLE의 FOREIGN KEY
“주문” 테이블이 만들어질 때 “PersonsID”열에 FOREIGN KEY를 생성
MySQL
CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) );
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 제약 조건을 정의
MySQL / SQL Server / Oracle / MS Access
CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) );
ALTER TABLE의 FOREIGN KEY
“Orders” 테이블이 이미 생성된 경우 “PersonID” 열에 대한 FOREIGN KEY 제약 조건을 생성
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Orders ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
FOREIGN KEY 제약 조건 의 이름을 지정 하고 여러 열에 FOREIGN KEY 제약 조건을 정의
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Orders ADD CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
FOREIGN KEY 제약 조건 삭제
MySQL
ALTER TABLE Orders DROP FOREIGN KEY FK_PersonOrder;
SQL Server / Oracle / MS Access
ALTER TABLE Orders DROP CONSTRAINT FK_PersonOrder;
참고
W3C School - SQL FOREIGN KEY Constraint
W3C School - SQL Tutorial