SQL FOREIGN KEY 제약 조건

SQL FOREIGN KEY 제약 조건

한 테이블의 FOREIGN KEY는 다른 테이블의 PRIMARY KEY를 가리킵니다.

외래 키를 설명하기 위해 예제를 통해 설명해 보겠습니다. 아래 두 테이블을 보세요:

"Persons" 테이블:

Id_P LastName FirstName 주소 시티
1 아ダ姆斯 ジョohn Oxford Street 런던
2 버시 조지 Fifth Avenue 뉴욕
3 카터 토마스 창안 대로 베이징

"Orders" 테이블:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

주의하세요, "Orders"의 "Id_P" 열은 "Persons" 테이블의 "Id_P" 열을 가리킵니다.

"Persons" 테이블의 "Id_P" 열은 "Persons" 테이블의 PRIMARY KEY입니다.

"Orders" 테이블의 "Id_P" 열은 "Orders" 테이블의 FOREIGN KEY입니다.

FOREIGN KEY 제약 조건은 테이블 간의 연결을 파괴하는 작업을 방지하는 데 사용됩니다.

FOREIGN KEY 제약 조건은 불법 데이터가 외래 키 열에 삽입되지 않도록 방지할 수 있습니다. 왜냐하면 그것은 참조하는 테이블의 값 중 하나여야 합니다.

CREATE TABLE에 대한 FOREIGN KEY 제약 조건

"Orders" 테이블이 생성될 때 "Id_P" 열에 FOREIGN KEY를 생성하는 SQL:

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
외래 키 (Id_P) REFERENCES Persons(Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

FOREIGN KEY 제약 조건을 이름을 지정하거나 여러 열에 FOREIGN KEY 제약 조건을 정의하려면 다음 SQL 문법을 사용하십시오:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

ALTER TABLE에 SQL FOREIGN KEY 제약 조건

"Orders" 테이블에 "Id_P" 열에 FOREIGN KEY 제약 조건을 추가하려면 다음 SQL을 사용하십시오:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

FOREIGN KEY 제약 조건을 이름을 지정하거나 여러 열에 FOREIGN KEY 제약 조건을 정의하려면 다음 SQL 문법을 사용하십시오:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

FOREIGN KEY 제약 조건 취소

FOREIGN KEY 제약 조건을 취소하려면 다음 SQL을 사용하십시오:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders