여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. SQL - FOREIGN KEY 제약 조건
SQL – FOREIGN KEY 제약 조건
2년전 작성
1년전 수정

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;

참고

Mingg`s Diary
밍구
밍구
공부 목적 블로그