MySQL 외래 키 제약 조건
MySQL 외래 키 제약 조건
FOREIGN KEY
제약 조건은 테이블 간의 링크를 파괴하는 작업을 방지하는 데 사용됩니다 .
A 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" 테이블의 "PersonID" 열은 "Persons" 테이블의 열입니다 PRIMARY KEY
.
"Orders" 테이블의 "PersonID" 열은
FOREIGN KEY
"Orders" 테이블에 있습니다.
제약 조건 은 FOREIGN KEY
외래 키 열에 잘못된 데이터가 삽입되는 것을 방지합니다. 외래 키 열은 부모 테이블에 포함된 값 중 하나여야 하기 때문입니다.
CREATE TABLE의 외래 키
다음 SQL은 FOREIGN KEY
"Orders" 테이블이 생성될 때 "PersonID" 열에 생성합니다.
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
제약 조건 의 이름을 지정 하고 여러 열에 제약 조건 FOREIGN KEY
을 정의
FOREIGN KEY
하려면 다음 SQL 구문을 사용합니다.
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" 열에 대한 제약 조건을 생성하려면 다음 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);
외래 키 제약 조건 삭제
제약 조건 을 삭제하려면 FOREIGN KEY
다음 SQL을 사용합니다.
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;