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で使用します。これは、親データが削除または更新されたときに子データがデフォルト値に設定されることを意味します。
- 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サブテーブルです。
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という名前の外部キーを作成します。
-
RDBMSの外部キー
外部キーはテーブル間のリンクを作成します。別のテーブルの主キーを参照してリンクします。 たとえば、EmployeeテーブルのDeptIDは外部キーです- EmpID EmpName EmpAge DeptID DeptID DeptName DeptZone DeptID 部門テーブルの主キーは部門テーブルの主キーです。 DeptID Employeeテーブルの外部キーはEmployeeテーブルの外部キーです。 下の図は同じ-を表しています 上に、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