SQL FOREIGN KEY 제약 조건
다른 테이블의 PRIMARY KEY 하나의 테이블 점에서 FOREIGN KEY.
다음의 예제와 외부 키를 설명 할 수 있습니다. 다음 두 개의 테이블 봐 :
"Persons" 테이블 :
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
"Orders" 테이블 :
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
참고이 "P_Id" 의 칼럼 "Orders" 받는 테이블 점 "P_Id" 에서 열 "Persons" 테이블.
"P_Id" 에서 열 "Persons" 표에있는 PRIMARY KEY 인 "Persons" 테이블.
"P_Id" 의 칼럼 "Orders" 표에 FOREIGN KEY이다 "Orders" 테이블.
외래 키 제약 조건은 테이블 간의 링크를 파괴 할 작업을 방지하는 데 사용됩니다.
그것이 가리키는 테이블에 포함 된 값 중 하나 일하기 때문에 외래 키 제약은 또한, 외부 키 컬럼에 삽입되는 잘못된 데이터를 방지 할 수 있습니다.
테이블 만들기에 SQL FOREIGN KEY 제약 조건
다음 SQL은에 FOREIGN KEY 만듭니다 "P_Id" 때 열을 "Orders" 테이블이 작성 :
MySQL:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
, 다음과 같은 SQL 구문을 사용, 여러 열에서 FOREIGN KEY 제약 조건을 정의하는 FOREIGN KEY 제약 조건의 이름을 허용하려면 :
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
ALTER 표에 SQL FOREIGN KEY 제약 조건
에 FOREIGN KEY 제약 조건을 만들려면 "P_Id" 열 "Orders" 테이블이 이미 생성되어, 다음 SQL을 사용 :
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
, 다음과 같은 SQL 구문을 사용, 여러 열에서 FOREIGN KEY 제약 조건을 정의하는 FOREIGN KEY 제약 조건의 이름을 허용하려면 :
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
외래 키 제약 조건을 삭제하려면
외국 KEY 제약 조건을 삭제하려면 다음 SQL을 사용 :
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders