SQL Severのデータベースの制約

データベースの制約


まず、作成、変更、および制約を削除

  • 制約が自動的にSQL Serverが提供するデータの整合性を強制する方法で、列の値によって定義された規則は、必須整合性の標準的なメカニズムです。トリガ、ルール、デフォルトに優先して制約を使用します。

1、非空制約

  • その列のテーブルの行の空の列がNULL値を含むことができるかどうかを決定します。ヌル(NULL)が空白またはゼロ長ストリング0、異なっている、NULLは、入力が、NULL値が発生しないが、一般的に、未知の又は未定義の値であることを意味しません。

1.1、null以外の制約を作成

  • CREATE TABLEを使用する場合は、テーブルを作成することができ、NULL NOTキーワードが非NULL制約構文を指定する使用し、次のとおりです。

    [CONSTRAIN <约束名>]  NOT NULL
    

1.2、非空制約の変更

ALTER TABLE table_name
alter column_name column_type null | not null
table_name:要修改非空约束的表名
column_name:要修改非空约束的列名
column_type:要修改非空约束的列类型
null | not null:修改为空或非空
例:
USE TEST1
ALTER TABLE Agent
alter column Age int not null

2、主キー制約

  • PRIMARY KEYを定義することによって、主キー制約を作成するには

2.1、プライマリキー制約を作成

(1)テーブルを作成するときに主キー制約を作成します
USE TEST1
CREATE TABLE [dbo].[Tb1](
[ID][int]CONSTRAINT PK_ID PRIMARY KEY,
[Name][char](50),
[Sex][char](2),
[Age][int]
)
-- CONSTRAINT PK_ID PRIMARY KEY为创建一个主键约束,PK_ID为用户自定义的主键约束名称,该名称需是合法的标识符。
(2)主キー制約既存のテーブルを作成します
ALTER TABLE table_name
ADD 
CONSTRAINT constraint_name
PRIMARY KEY[CLUSTERED | NONCLUSTERED]
{(Columns[,...n])}
CONSTRAINT:创建约束的关键字
constraint_name:创建约束的名称
PRIMARY KEY:表示所创建的约束的类型为主键约束
CLUSTERED | NONCLUSTERED:是表示为 PRIMARY KEY或 UNIQUE约束创建集聚或非集聚索引的关键字。
例:
USE TEST1
ALTER TABLE Agent
ADD CONSTRAINT ZJ_ID PRIMARY KEY(ID)

2.2、主キー制約を変更

  • PRIMARY KEY制約を変更するには、制約の新しい定義を再作成し、既存のPRIMARY KEY制約を削除し、必要があります。

2.3、主キー制約を削除

  • 構文は次のとおりです。

    ALTER TABLE table_name
    DROP CONSTRAINT constraint_name[,...n]
    constraint_name:主键名
    例:
    USE TEST1
    ALTER TABLE Tb1
    DROP CONSTRAINT PK_ID
    

3、唯一の制約

  • のみ拘束条件一意の列の値を設定するために使用される固有。UNIQUE制約は、テーブルの列の任意の二つの行が同じ値を持っていません。さらに、プライマリ・キーの一意性を強制的実施形態であり、主キーはユニークな値NULLとして許可されていません。

3.1、テーブルを作成するときに一意制約を作成します

  • 例:

    USE TEST1
    CREATE TABLE[dbo].[Employee]( --创建表
    [ID][int]CONSTRAINT UQE_ID UNIQUE,  --设置唯一约束
    [Name][char](50),
    [Sex][char](2),
    [Age][int]
    )
    

3.2、既存のテーブルに一意性制約を作成します

  • 構文は次のとおりです。

    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name
    UNIQUE[CLUSTERED | NONCLUSTERED]
    {{column[,...n]}}
    
    参数说明
    table_name:要创建唯一约束的表名称
    constraint_name:唯一约束名称
    column:要创建唯一约束的列名称。
    例子:
    USE TEST1
    ALTER TABLE Agent
    ADD CONSTRAINT Unique1_ID  --设置唯一约束
    UNIQUE(ID)
    

3.3、ユニーク制約を変更

  • ユニーク制約を変更するには、最初に既存のUNIQUE制約を削除する必要があり、その後、新しい定義で再作成されました。

3.4ユニーク制約をドロップ

  • 構文は次のとおりです。

    ALTER TABLE table_name
    DROP CONSTRAINT constraint_name[,..n]
    
    --例子
    USE TEST1
    ALTER TABLE Tb1
    DROP CONSTRAINT Unique_ID
    

4、チェック制約

  • ドメインを強制してもよいインテグリティチェック制約をチェックし、同様のFOREIGN KEY制約が列の値に制御することができる制約をチェックするが、それらはRMSを決定するように異なる:別のテーブルから取得FOREIGN KEY制約をRMSリスト、およびチェック制約式は、有効な値ではない他の列の熱心な論理データによって決定されます。

4.1、チェック制約を作成します

テーブルを作成する際に、(1)チェック制約を作成します
  • 例:

    USE TEST
    CREATE TABLE [dbo].[Employee1](
    [ID][int]CONSTRAINT Unique2_ID UNIQUE,
    [Name][char](50),
    [Sex][char](2)CONSTRAINT CK_Sex Check(sex in('男','女')),
    [Age][int]
    )
    
(2)検査制約既存のテーブルを作成します
  • 構文は次のとおりです。

    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name
    CHECK(logical_expression)
    
    参数说明
    table_name:要创建检查约束的表名称
    constraint_name:检查约束名称
    logical_expression:要检查约束的条件表达式
    
    例子:
    USE TEST
    ALTER TABLE [Tb_student]
    --ADD CONSTRAINT Check_Sex Check(性别 in('男','女'))
    ADD CONSTRAINT CK_tz Check(统招否 in(1,0))
    
3251331-a90aedd96279952b.PNG
チェック制約.PNG

4.2、チェック制約を変更

  • テーブルに使用される列CHECK制約式を変更CHECK制約を修正するためには、まず既存のチェック制約を削除する必要があり、その後、新しい定義を使用して再作成しました。

4.3、チェック制約を削除

  • チェック制約の構文を削除し、次のとおりです。

    ALTER TABLE table_name
    DROP CONSTRAINT constraint_name[,...n]
    
    --例子
    USE TEST
    ALTER TABLE Employee1
    DROP CONSTRAINT CK_Sex
    

5、デフォルトの制約

  • あなたは、テーブルを作成または変更する場合、デフォルトの制約DEFAULTでデフォルトを作成することができます。デフォルト値は、演算定数が行ごとに設けられているいずれかの値がデフォルト値は、デフォルト値列で割り当てられることができます。

5.1、デフォルトの制約を作成

(1)テーブルを作成するときに、デフォルトの制約を作成するには
  • 構文は次のとおりです。

    USE TEST
    CREATE TABLE[dbo].[temp](   --创建表
    [ID][int],
    [Name][char](50),
    [Sex][char](2)CONSTRAINT Default_Sex Default'男', --设置默认约束
    [Age][int]
    )
    USE TEST
    INSERT INTO Temp(ID,Name,Age)VALUES(1, '彭友聪', 21)
    /****** Script for SelectTopNRows command from SSMS  ******/
    SELECT TOP (1000) [ID]
          ,[Name]
          ,[Sex]
          ,[Age]
      FROM [TEST].[dbo].[Temp]
    
3251331-24a8f3a953ae2431.PNG
デフォルトの制約.PNG
(2)既存のテーブルにデフォルトの制約を作成するには
  • 構文は次のとおりです。

    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name
    DEFAULT constraint_expression[FOR column_name]
    --参数说明
    --table_name:要创建默认约束的表名称
    --constraint_name:默认约束名称
    --constraint_expression:默认值
    --例子
    USE TEST
    ALTER TABLE [Tb_student]
    ADD CONSTRAINT Default_age --设置默认约束
    DEFAULT 22 FOR 年龄
    

5.2、デフォルトの制約を変更します

  • デフォルトの制約を使用して、テーブルの列式を変更するデフォルトの制約を変更するためには、まず既存のデフォルトの制約を削除する必要があり、その後、新しい定義を使用して再作成しました。

5.3、デフォルトの制約を削除します

  • デフォルトの制約構文を削除し、次のとおりです。

    ALTER TABLE table_name
    DROP CONSTRAINT constraint_name[,...n]
    
    --例子
    USE TEST
    ALTER TABLE Temp
    DROP CONSTRAINT Default_Sex
    

6、外部キー制約

6.1、外部キー制約を作成

あなたがテーブルを作成するときに(1)が作成されます
CREATE TABLE Pyc(
    [ID][int],
    [Wage][money],
    CONSTRAINT FKEY_ID
    FOREIGN KEY(ID)
    REFERENCES Temp(ID)   --外键约束
    )
(2)既存のテーブル内に作成
  • 構文

    ALTER TABLE table_name
    ADD CONSTRAINT constraint_name
    [FOREIGN KEY]{(column_name[,..n])}
    REFERENCES ref_table[(ref_column_name[,...n])]
    
  • 次の表のパラメータ

    パラメータ 説明
    TABLE_NAME 外部キーテーブルの名前を作成するには
    CONSTRAINT_NAME 外部キー制約の名前
    FOREIGN KEY REFERENCES データ列には、参照整合性制約を提供しています。ROFEIGN KEY制約は、参照列で参照され、対応するテーブルの列の各値が存在することを必要とし、参照テーブルの行を参照できるFOREIGN KEY制約は、UNIQUEまたはPRIMARY KEY制約または表UNIQUE INDEXで参照されています参照される列内。
    ref_table FOREIGN KEY制約で参照テーブル名
    (ref_column_name [、... N]) 表FOREIGN KEY制約の1つ以上の列の参照
  • 例:

    USE TEST1
    ALTER TABLE Tb1
    ADD CONSTRAINT Fkey_ID
    FOREIGN KEY(ID)
    REFERENCES Agent(ID)
    

6.2、外部キー制約を変更

  • テーブルの外部キー制約を変更するには、まず既存の外部キー制約を削除し、外部キー制約の新しい定義を作成する必要があります。

6.3、外部キー制約を削除

  • 構文は次のとおりです。

    ALTER TABLE table_name
    DROP CONSTRAINT constraint_name[,..n]
    
    --例子
    USE TEST
    ALTER TABLE Pyc
    DROP CONSTRAINT FKEY_ID
    

第二に、創造との関係の維持

  • SQL Serverの2017は、データベースが複数のテーブルが含まれている場合、リレーショナルデータベース管理システムである、あなたは、主キーにより各種テーブル作業間の調整をテーブル間の関係を構築する必要があります。

  • 関係は、キー列が2つのテーブル間、典型的であるが、鍵データ列を照合することによって、同じ列名を持つ動作、テーブル内のデータ間の関係を作成する表の表の列の別の列への接続を表示することができます。

  • テーブルとテーブルの間に関係があります

    1)1つの関係

    2)多くの関係

    3)多くの関係

1、1対1の関係

  • それは、レコードが一つだけの一致を持たず、それぞれ、表Bに記録されている表に1対1の関係を指します。
  • この関係は、次のような特徴を持っています
  • 1)列の数を含むテーブルを分割します。
  • 2)セキュリティ上の理由から、テーブルの一部の単離。
  • 3)ストレージだけで簡単にデータを削除するデータテーブルを削除し、一時的なデータを削除することができます。
  • 4)のみ店舗情報マスタサブセットに適用されます。
  • 5)は、2つの場合、主キー列に関連するユニークな制約があります。

1.1、1対1の関係を作成します

  • 1)SQL Server Management Studioを起動し、2017 SQL Serverでデータベースに接続します
  • 2)データベーステーブルの関係を作成する必要性を選択
  • 、選択したデータテーブルとの間の関係を確立する権利「デザイン」コマンドをクリックして選択し、テーブルデザインウィンドウを開き、IDフィールドを右クリックし、ショートカットメニュー、「関係」コマンドを選択し、「外部キー関係」ダイアログを開くには、3)の必要性
  • 4)外部キー関係]ダイアログボックスで、「テーブルと列」ダイアログボックスを開き、テキストボックス、従来の「テーブルと列の規範」は、以下の[参照]ボタンをクリックし、ダイアログボックスでテーブルを設定しての名前との間の主な外部キー関係
  • 5)「テーブルと列」ダイアログボックスで、[OK]ボタンをクリックし、外部キー関係]ダイアログボックスで、[閉じる]をクリックします。
3251331-abf23781011b01bf.PNG
集計の関係.PNG
  • 多くの、多くの多くの関係を作成するには上記の方法と同様。

ます。https://www.jianshu.com/p/58b1b875c2caで再現

おすすめ

転載: blog.csdn.net/weixin_33797791/article/details/91331686