이 자습서에서는 구문 및 예제와 함께 SQL Server에서 외래 키 외래 키를 사용하는 방법을 소개합니다.
SQL Server의 외래 키는 무엇입니까?
외래 키는 SQL Server 데이터베이스에서 참조를 늘리는 데 사용됩니다. 외래 키는 이 테이블의 값이 다른 테이블에 나타나야 함을 의미합니다.
참조 테이블을 부모 테이블이라고 하고 외래 키를 포함하는 테이블을 자식 테이블이라고 합니다. 자식 테이블의 외래 키는 일반적으로 부모 테이블의 기본 키 PRIMARY KEY를 참조합니다.
외래 키는 CREATE TABLE 명령 또는 ALTER TABLE 명령으로 생성할 수 있습니다.
CREATE TABLE 명령을 사용하여 외래 키 생성
구문
CREATE TABLE bang_con ( cot1 kieudulieu [ NULL | NOT NULL ], cot2 kieudulieu [ NULL | NOT NULL ], … CONSTRAINT fk_ten FOREIGN KEY (cot_con1, cot_con2, … cot_con_n) REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n) [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] );
뱅_콘
생성하려는 하위 테이블의 이름입니다.
cot1, cot2
테이블에 생성하려는 열입니다. 각 열에는 1개의 데이터 유형이 있으며 NULL 또는 NOT NULL 값을 포함하도록 지정해야 합니다. 그렇지 않으면 기본값은 NULL입니다.
SQL Server의 데이터 유형
fk_ten
생성할 외래 키 제약 조건의 이름입니다.
cot_con1, cot_con2, . cot_con_n
bang_con의 열이 bang_me의 기본 키를 참조하려고 합니다.
bang_me
상위 테이블의 이름은 bang_con에서 사용되는 기본 키를 포함합니다.
cot_me1, cot_me2, . cot_me_n
bang_me에서 기본 키를 구성하는 열입니다. 외래 키는 데이터와 열 cot_con1, cot_con2, . cot_con_n in bang_con.
삭제 시
옵션. 상위 데이터가 삭제될 때 하위 데이터로 수행할 작업을 나타냅니다. NO ACTION, CASCADE, SET NULL 및 SET DEFAULT 옵션이 있습니다.
업데이트 중
옵션. 상위 데이터가 업데이트될 때 하위 데이터로 수행할 작업을 나타냅니다. NO ACTION, CASCADE, SET NULL 및 SET DEFAULT 옵션이 있습니다.
조치 없음
ON DELETE 또는 ON UPDATE와 함께 사용합니다. 즉, 상위 데이터가 삭제되거나 업데이트될 때 하위 데이터에 아무 작업도 수행하지 않습니다.
캐스케이드
ON DELETE 또는 ON UPDATE와 함께 사용합니다. 즉, 상위 데이터가 삭제되거나 업데이트될 때 하위 데이터가 삭제되거나 업데이트됩니다.
SET NULL
ON DELETE 또는 ON UPDATE와 함께 사용합니다. 즉, 상위 데이터가 삭제되거나 업데이트될 때 하위 데이터가 NULL로 설정됨을 의미합니다.
기본 설정
ON DELETE 또는 ON UPDATE와 함께 사용합니다. 즉, 상위 데이터가 삭제되거나 업데이트될 때 하위 데이터가 기본값으로 설정됩니다.
- SQL Server의 외래 키(계단식 삭제)
- SQL Server의 외래 키(Null 설정) 외래 키
예:
CREATE TABLE sanpham (id_sanpham INT PRIMARY KEY, ten_sanpham VARCHAR(50) NOT NULL, phan_loai VARCHAR(25) ); CREATE TABLE hangtonkho ( id_hangtonkho INT PRIMARY KEY, id_sanpham INT NOT NULL, soluong INT, luong_toithieu INT, luong_toida INT, CONSTRAINT fk_htk_id_sanpham FOREIGN KEY (id_sanpham) REFERENCES sanpham (id_sanpham) );
위의 예에서 id_sanpham의 필드로 구성된 기본 키로 부모 테이블인 sanpham 테이블을 만듭니다. 다음은 항톤호 서브테이블입니다.
hangtonkho 테이블의 외래 키를 생성하는 데 사용되는 CREATE TABLE 문은 fk_htk_id_sanpham으로 명명됩니다. 외래 키는 hangtonkho 테이블의 id_sanpham 열과 sanpham 테이블의 id_sanpham 간의 연결을 형성합니다.
위의 예는 1개의 컬럼으로 구성된 외래 키를 생성하는 방법을 보여줍니다. 이제 1개 이상의 정보 필드가 있는 외래 키를 만듭니다.
예:
CREATE TABLE sanpham ( ten_sanpham VARCHAR(50) NOT NULL, diadiem VARCHAR(50) NOT NULL, phanloai VARCHAR(25) CONSTRAINT sanpham_pk PRIMARY KEY (ten_sanpham, diadiem) );
CREATE TABLE hangtonkho ( id_hangtonkho INT PRIMARY KEY, ten_sanpham VARCHAR(50) NOT NULL, diadiem VARCHAR(50) NOT NULL, soluong INT, luong_toithieu INT, luong_toida INT, CONSTRAINT fk_htk_sanpham FOREIGN KEY (ten_sanpham, diadiem) REFERENCES sanpham (ten_sanpham, diadiem) );
이 예에서 sanpham 상위 테이블에는 2열 기본 키 ten_sanpham 및 diadiem이 있습니다. 자식 테이블과 외래 키는 이 두 열을 참조해야 합니다.
ALTER TABLE 명령을 사용하여 외래 키 생성
구문
ALTER TABLE bang_con ADD CONSTRAINT fk_ten FOREIGN KEY (cot_con1, cot_con2, … cot_con_n) REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n);
뱅_콘
생성하려는 하위 테이블의 이름입니다.
fk_ten
생성할 외래 키 제약 조건의 이름입니다.
cot_con1, cot_con2, . cot_con_n
bang_con의 열이 bang_me의 기본 키를 참조하려고 합니다.
bang_me
상위 테이블의 이름은 bang_con에서 사용되는 기본 키를 포함합니다.
cot_me1, cot_me2, . cot_me_n
bang_me에서 기본 키를 구성하는 열입니다. 외래 키는 데이터와 열 cot_con1, cot_con2, . cot_con_n in bang_con.
예:
ALTER TABLE hangtonkho ADD CONSTRAINT fk_htk_id_sanpham FOREIGN KEY (id_sanpham) REFERENCES sanpham (id_sanpham);
이 예는 id_sanpham 열을 기반으로 sanpham 테이블을 참조하는 fk_htk_id_sanpham이라는 hangtonkho 테이블에 외래 키를 생성합니다.
아래 예와 같이 2개 이상의 필드로 외래 키를 생성할 수 있습니다.
ALTER TABLE hangtonkho ADD CONSTRAINT fk_htk_sanpham FOREIGN KEY (ten_sanpham, diadiem) REFERENCES sanpham (ten_sanpham, diadiem);
위의 예는 ten_sanpham 및 diadiem 열을 기반으로 하는 대시보드를 참조하여 hangtonkho 테이블에 대해 fk_htk_sanpham이라는 외래 키를 생성합니다.