SQL 외래 키
SQL FOREIGN KEY 제약 조건
한 테이블의 FOREIGN KEY는 다른 테이블의 PRIMARY 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 |
"Orders" 테이블의 "P_Id" 열은 "Persons" 테이블의 "P_Id" 열을 가리킵니다.
"Persons" 테이블의 "P_Id" 열은 "Persons" 테이블의 기본 키입니다.
"주문" 테이블의 "P_Id" 열은 "주문" 테이블의 FOREIGN KEY입니다.
FOREIGN KEY 제약 조건은 테이블 간의 조인을 중단하는 동작을 방지하는 데 사용됩니다.
FOREIGN KEY 제약 조건은 외래 키 열이 가리키는 테이블의 값 중 하나여야 하기 때문에 잘못된 데이터가 외래 키 열에 삽입되는 것을 방지합니다.
CREATE TABLE 시 SQL FOREIGN KEY 제약 조건
다음 SQL은 "Orders" 테이블이 생성될 때 "P_Id" 열에 FOREIGN KEY 제약 조건을 생성합니다.
MySQL:
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY(O_Id),
외래 키(P_Id) REFERENCES 개인(P_Id)
)
SQL Server/Oracle/MS 액세스:
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
FOREIGN KEY 제약 조건의 이름을 지정하고 여러 열에 대한 FOREIGN KEY 제약 조건을 정의하려면 다음 SQL 구문을 사용하십시오.
MySQL / SQL Server / Oracle / MS Access:
(
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 TABLE
"주문" 시 SQL FOREIGN KEY 제약 조건" 테이블이 생성되었습니다. "P_Id" 열에 FOREIGN KEY 제약 조건을 생성해야 하는 경우 다음 SQL을 사용하세요.
MySQL / SQL Server / Oracle / MS Access:
ADD FOREIGN KEY(P_Id)
REFERENCES Persons(P_Id)
FOREIGN KEY 제약 조건의 이름을 지정하고 FOREIGN을 정의해야 하는 경우 여러 열 KEY 제약 조건이 있는 경우 다음 SQL 구문을 사용하세요.
MySQL / SQL Server / Oracle / MS 액세스:
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY(P_Id)
REFERENCES Persons(P_Id)
FOREIGN KEY 제약 조건 취소
FOREIGN KEY 제약 조건을 취소하려면 아래 SQL을 사용하세요:
MySQL:
DROP FOREIGN KEY fk_PerOrders
SQL 서버/Oracle/MS 액세스:
DROP CONSTRAINT fk_PerOrders