SQL 강좌 44. SQL FOREIGN KEY Constraints

SQL FOREIGN KEY Constraint

FOREIGN KEY는 두 테이블은 연결한다.
FOREIGN KEY는 다른 테이블의 PRIMARY KEY를 참조하는 테이블의 필드이다.

foreign key를 포함하는 테이블은 자식 테이블(child table)으로 불리고 참조되는 테이블은 부모 테이블(parent table)이라고 불린다.

2018-02-17 4 58 59

Oders테이블의 PersonID는 Persons 테이블의 PersonID를 참조하고 있다. Persons의 PersonID는 PRIMARY KEY이며 Orders의 PersonID는 FOREIGN KEY이다.

FOREIGN KEY 제약조건은 카리키는 테이블에 포함된 값 중에 하나여야하기 때문에 잘못된 데이터가 foreign key column에 삽입되는 것을 방지한다.

SQL FOREIGN KEY on CREATE TABLE

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)
);

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)
);

SQL FOREIGN KEY on ALTER TABLE

이미 존재하는 테이블에 Foreign key를 설정할 때

MySQL / SQL Server / Oracle / MS Access:

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

Foreign key에 이름을 부여하고 여러개의 column에 Foreign key 제약을 걸때

MySQL / SQL Server / Oracle / MS Access:

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

DROP a FOREIGN KEY Constraint

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

Comments