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