SQL SERVER 创建约束图解

来源:互联网 发布:贵阳大数据呼叫中心 编辑:程序博客网 时间:2024/06/09 17:09
SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的创建和使用的方法。

1Primary Key约束

    在表中常有一列或多列的组合,其值能唯一标识表中的每一行。

    这样的一列或多列成为表的主键(PrimaryKey)。一个表只能有一个主键,而且主键约束中的列不能为空值。只有主键列才能被作为其他表的外键所创建。

   创建主键约束可以右键单击表,选择设计


 

   选中要创建主键的列,然后单击上面的小钥匙。


 

   也可以右键需要创建主键的列,然后单击小钥匙。



   语法:

 Create table myTB1                 (                         id nvarchar(32) not null primary key,                         name nvarchar(32)                 ) Create table myTB1              (                   id nvarchar(32) not null,                  name nvarchar(32), constraint PrimaryName primary key (id)               )  Create table myTB1                 (                  id nvarchar(32) not null,                  name nvarchar(32), primary key (id)                  ) Alter table myTB1 Add Primary Key (id) Alter table myTB1 Add Constaint PrimaryName primary key (id)Alter table myTB1 Drop Primary Key  Alter table myTB1 Drop Constraint PrimaryName     


2Foreign Key约束

    外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的。创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。

   右键单击需要设置外键的列(此时的表是作为从表在外键中出现),选择关系。


   接下来点击添加-->表和列规范。


   在主键表中选择主表和主表的主键列。


 

   设置完后保存即可。


   语法:

Create table myTB1               (                    id nvarchar(32) not null foreign key references myTB(id),                    name nvarchar(32)               )  Create table myTB1               (                    id nvarchar(32) not null primary key,                   name nvarchar(32),    foreign key(id) references myTB(id)               )  Alter table myTB1 Add foreign key(id) references myTB(id)  Alter table myTB1 Add Constraint foreignName foreign key(id) references myTB(id)Alter table myTB1 Drop foreign key foreignNameAlter table myTB1 Drop Constraint foreignName

3Unique约束

    唯一约束确保表中的一列数据没有相同的值。与主键约束类似,唯一约束也强制唯一性,但唯一约束用于非主键的一列或者多列的组合,且一个表可以定义多个唯一约束。

   右键单击要设置的列选择索引/键。


   然后单击添加按钮。


   选择需要设置的列,可以是一列也可以是多列的组合。


   关闭并保存设置。

   语法:

Create table MyTable                 (                     id varchar(32) not null unique,                     name varchar (32)                 )  Create table MyTable                 (                     id varchar(32) not null,                     name varchar (32),                     unique (id,.....)                  ) Create table MyTable                  (                      id varchar(32) not null,                      name varchar (32),                      Constraint uniqueName unique(UniqueColumn,.....)                  )Drop constraint UniqueName ALTER TABLE EPlatform ADD CONSTRAINT Unique_EPlatform unique ([UserId],[Platform])


4Default约束

    若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL

  以学生信息表为例,在表设计器中,为性别sex列填写默认值男。



   语法:

Create table myDefault               (                   id int,   name nvarchar(32) default 'celly'               ) Alter table myDefault         Alter column [id] set default 0  Alter table myDefault         Alter ColumnName drop default


5Check约束

    Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。

   以学生信息表中的sex为例,我们要限制sex列的值只能为男或女。


   关闭并保存设计。

   语法:

Create table myCheck              (                    id nvarchar(32) not null,                    age int not null, check (age>15 and age <30)               ) Create table myCheck               (                    id nvarchar(32) not null, age int not null check (age>15 and age<30)               )  Create table myCheck               (                    id nvarchar(32) not null,                    age int not null, constraint checkName check (age<15 and age>30)               )  Alter table myCheck         add check (id='celly'); --这样定义是系统自定义 check约束名称。         Alter table myCheck         add constraint checkName check(id='celly'); --这样定义是自己自定义 check约束名称。         Alter table myCheck drop constraint checkName 


   致此,数据库中的五种约束情况又复习了一遍,约束确保了数据库中数据的完整性,但只有约束远远不够的。

0 0
原创粉丝点击