Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL Server

SQL Server의 외래 키 외래 키

이 자습서에서는 구문 및 예제와 함께 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와 함께 사용합니다. 즉, 상위 데이터가 삭제되거나 업데이트될 때 하위 데이터가 기본값으로 설정됩니다.

  1. SQL Server의 외래 키(계단식 삭제)
  2. 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이라는 외래 키를 생성합니다.