Home  >  Article  >  Database  >  mssqlserver中约束详细介绍

mssqlserver中约束详细介绍

WBOY
WBOYOriginal
2016-06-07 17:49:121148browse

sql 约束是数据库开发中不可少的一部份,下面我们来详细介绍sql约束的使用方法吧。

约束主要有一下几种:

NOT NULL : 用于控制字段的内容一定不能为空(NULL)。


UNIQUE : 控件字段内容不能重复,一个表允许有多个 Unique 约束。

PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。

FOREIGN KEY: FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

CHECK: 用于控制字段的值范围。

DEFAULT: 用于设置新记录的默认值。


1、not null : 用于控制字段的内容一定不能为空(NULL)。

    用法 :Create table MyTable
               (
                   id varchar(32) not null,
                   name varchar (32)
               )
2、Unique :控件字段内容不能重复,一个表允许有多个 Unique 约束。

新建:
      在Sql Server、Orcale、MS Access 支持的添加 Unique 语法:
             Create table MyTable
                (
                    id varchar(32) not null unique,
                    name varchar (32)
                )
      在Sql Server、 My Sql 支持的添加 Unique 语法:可同时添加几个字段为约束 如: unique (id,name)
             Create table MyTable
                (
                    id varchar(32) not null,
                    name varchar (32),
                    unique (id,.....)
                 )
      在Sql Server、Orcale、MS Access、My Sql 都支持的添加 Unique 语法:
              Create table MyTable
                  (
                      id varchar(32) not null,
                      name varchar (32),
                     Constraint uniqueName unique(UniqueColumn,.....)
                   )

删除:
   在Sql Server、Oracle、MS Access 删除 Unique 约束语法:drop constraint UniqueName;
   在My Sql 删除 Unique 约束语法:drop index UniqueName;

修改:

ALTER TABLE EPlatform
ADD CONSTRAINT Unique_EPlatform
unique ([UserId],[Platform]);

 

3、Primary Key :也是用于控件字段内容不能重复,但它在一个表只允许出现一个。
      在Sql Server、Orcale、MS Access 支持的添加Primary Key语法:
              Create table myTB1
             (
                 id nvarchar(32) not null primary key,
                 name nvarchar(32)
              )
      在Sql Server、My Sql 支持的添加Primary Key 语法:
             Create table myTB1
             (
                 id nvarchar(32) not null,
                 name nvarchar(32),
primary key (id)
             )
       在Sql Server、Orcale、MS Access、My Sql 支持的添加Primary Key 语法:
             Create table myTB1
             (
                  id nvarchar(32) not null,
                 name nvarchar(32),
constraint PrimaryName primary key (id)
              )
在Sql Server、Orcale、MS Access、My Sql 表已存在的情况下,添加表的Primary Key约束语法:
              Alter table myTB1
ADD Primary Key (id,......) --这样的写法,系统会自定义约束名称
              Alter table myTB1
Add Constaint PrimaryName primary key (id) --这样的写法,自己可以自定义约束名称
在Sql Server、Orcale、MS Access 删除表已存在的 Primary Key 约束的语法:
              Alter table myTB1
Drop Constraint PrimaryName
在My Sql 删除表已存在的 Primary Key 约束的语法:
              Alter table myTB1
Drop Primary Key
Unique 与 Primary 的相同之处:UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
Unique 与 Primary 的不同之处:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束,Unique允许有NULL值,而 Primary key 不允许有NULL值。
注:在同一个数据库中,就算在不同的表中,约束名称是不允许相同的。
4、Foreign Key :FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
   在Sql Server、My Sql 支持的添加Foreign Key语法:
              Create table myTB1
              (
                   id nvarchar(32) not null primary key,
                   name nvarchar(32),
foreign key(id) references myTB(id)
              )
   在Sql Server、Orcale、MS Access 支持的添加Foreign Key语法:
              Create table myTB1
              (
                   id nvarchar(32) not null foreign key references myTB(id),
                   name nvarchar(32)
              )
   在Sql Server、Orcale、MS Access、My Sql 都支持的添加Foreign Key语法:
              Create table myTB1
              (
                   id nvarchar(32) not null primary key,
                   name nvarchar(32),
                    Constraint foreignName foreign key(id) references myTB(id)
              )
在Sql Server、Orcale、MS Access、My Sql 的表已存在情况下,向表添加外键约束的语法:
              Alter table myTB1
Add foreign key(id) references myTB(id) --这样写系统会自定义约束名称
               Alter table myTB1
Add Constraint foreignName foreign key(id) references myTB(id) --这样写自己可以自定义约束名称
在Sql Server、Orcale、MS Access 中删除外键约束的语法:
              Alter table myTB1
Drop Constraint foreignName;
在My Sql 中删除外键约束的语法:
              Alter table myTB1
Drop foreign key foreignName;
5、Check :用于控制字段的值范围。
      在Sql Server、My Sql 支持的添加check 语法:
              Create table myCheck
              (
                   id nvarchar(32) not null,
                   age int not null,
check (age>15 and age               )
       在Sql Server、Orcale、MS Access 支持的添加 check 语法:
              Create table myCheck
              (
                   id nvarchar(32) not null,
age int not null check (age>15 and age               )
      在Sql Server、Orcale、MS Access、My Sql 都支持的添加 check 语法:
               Create table myCheck
              (
                   id nvarchar(32) not null,
                   age int not null,
constraint checkName check (age30)
              )
在Sql Server、Orcale、MS Access、My Sql 的表已存在情况下,向表添加check约束的语法:
              Alter table myCheck
              add check (id='celly'); --这样定义是系统自定义 check约束名称。
              Alter table myCheck
               add constraint checkName check(id='celly'); --这样定义是自己自定义 check约束名称。
在 Sql Server、Orcale、MS Access 删除表已存在的 check 约束的语法:
              Alter table myCheck
drop constraint checkName
6、Default :用于设置新记录的默认值。
      在Sql Server、Orcale、MS Access、My Sql 添加default约束的语法:
              Create table myDefault
              (
                  id int,
name nvarchar(32) default 'celly'
              )
      在My Sql 的已存在表中添加 字段默认值:
               Alter table myDefault
              Alter [id] set default 0
      在 Sql Server、Orcale、MS Access 的已存在表中添加 字段默认值:
              Alter table myDefault
              Alter column [id] set default 0
      在 My Sql 中删除字段默认值语法:
              Alter table myDefault
              Alter ColumnName drop default

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn