SQL Server
 Computer >> コンピューター >  >> プログラミング >> SQL Server

SQLServerの外部キー外部キー

このチュートリアルでは、SQLServerで外部キーの外部キーを使用する方法と構文と例を紹介します。

SQL Serverの外部キーとは何ですか?

外部キーは、SQLServerデータベースでの参照を増やすために使用されます。外部キーは、このテーブルの値が別のテーブルに表示される必要があることを意味します。

参照テーブルは親テーブルと呼ばれ、外部キーを含むテーブルは子テーブルと呼ばれます。子テーブルの外部キーは通常、親テーブルの主キーPRIMARYKEYを参照します。

外部キーは、CREATETABLEコマンドまたはALTERTABLEコマンドを使用して作成できます。

CREATETABLEコマンドを使用して外部キーを作成します

構文

  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 )[ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}] [ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}]);  

bang_con

作成する子テーブルの名前。

cot1、cot2

テーブルに作成する列。各列には1つのデータ型があり、NULLまたはNOT NULL値を含めるように指定する必要があります。それ以外の場合、デフォルトはNULLです。

SQLServerのデータ型

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、の間に制約を作成します。 bang_conのcot_con_n。

削除時

オプション。親データが削除されたときに子データをどのように処理するかを示します。オプションNOACTION、CASCADE、SET NULL、SETDEFAULTがあります。

更新中

オプション。親データが更新されたときに子データをどのように処理するかを示します。オプションNOACTION、CASCADE、SET NULL、SETDEFAULTがあります。

アクションなし

ONDELETEまたはONUPDATEで使用します。つまり、親データが削除または更新された場合、子データには何もしません。

CASCADE

ONDELETEまたはONUPDATEで使用します。つまり、親データが削除または更新されると、子データが削除または更新されます。

SET NULL

ONDELETEまたはONUPDATEで使用します。これは、親データが削除または更新されるときに子データがNULLに設定されることを意味します。

デフォルトに設定

ONDELETEまたはONUPDATEで使用します。これは、親データが削除または更新されたときに子データがデフォルト値に設定されることを意味します。

  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サブテーブルです。

hangtonkhoテーブルの外部キーを作成するために使用されるCREATETABLEステートメントの名前はfk_htk_id_sanphamです。外部キーは、hangtonkhoテーブルのid_sanpham列とsanphamテーブルのid_sanphamの間のリンクを形成します。

上記の例は、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_san sanpham(ten_sanpham、diadiem));  

この例では、sanpham親テーブルに2列の主キーten_sanphamとdiadiemがあります。子テーブルと外部キーは、これら2つの列を参照する必要があります。

ALTERTABLEコマンドを使用して外部キーを作成します

構文

  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);  

bang_con

作成する子テーブルの名前。

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、の間に制約を作成します。 bang_conのcot_con_n。

  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テーブルに外部キーを作成します。

以下の例のように、複数のフィールドを持つ外部キーを作成できます。

  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という名前の外部キーを作成します。


  1. RDBMSの外部キー

    外部キーはテーブル間のリンクを作成します。別のテーブルの主キーを参照してリンクします。 たとえば、EmployeeテーブルのDeptIDは外部キーです- EmpID EmpName EmpAge DeptID DeptID DeptName DeptZone DeptID 部門テーブルの主キーは部門テーブルの主キーです。 DeptID Employeeテーブルの外部キーはEmployeeテーブルの外部キーです。 下の図は同じ-を表しています 上に、2つのテーブル

  2. SQLServerのPIVOT句

    SQL Server(Transact-SQL)では、PIVOT句を使用すると、クロス集計を使用して、あるテーブルから別のテーブルにデータを転送できます。つまり、集計結果を取得して行から列に移動できます。 この例では、合計を計算してから、データテーブルの列に行を渡します。 PIVOT句の構文 SELECT cot_ dautien AS , [giatri_chuyen1], [giatri_chuyen2], … [giatri_chuyen_n] FROM () AS PIVOT ( ham_tong () FOR IN ([giatri_chuyen