数据库 SQL语言中 列级约束和表级约束

你知道吗?约束分为列级约束和表级约束。

 

如果我们了解了这件事情,那么当我们用T—SQL语句创建约束时,思路就会更加清晰。了解了这件事,相信我们会对约束有更进一步的理解。

 

大家都知道,在SQL Server 2000中有5种约束:

     主键约束(primary key )

      唯一性约束(unique)

    检查约束(check)

    缺省约束(default)

    外部键约束(foreign)

 

 

 

 

 由上图可知,1,主键、外键、唯一、检查这四项,既可以创建列约束,也可以创建表约束。而缺省 和 非空只能创建列约束。

                                         2,列级约束与表级约束的区别:

(1)列级约束只能应用于一列上。

           表级约束:可以应用于一列上,也可以应用在一个表中的多个列上。

即:如果你创建的约束涉及到该表的多个属性列,则必须创建的是表级约束(必须定义在表级上);否则既可以定义在列级上也可以定义在表级上此时只是SQL语句格式不同而已)

(2)列级约束:包含在列定义中,直接跟在该列的其它定义之后 ,用空格分隔;不必指定列名  

          表级约束:与列定义相互独立,不包含在列定义中;与定义用‘,’分隔;必须指出要约束的列的名称

因为在创建列级约束时,只需将创建列约束的语句添加到该字段(列)的定义子句后面;而在创建表级约束时,需要将创建表级约束的语句添加到各个字段(列)定义语句的后面,因为并不是每个定义的字段都要创建约束,所以必须指明需要创建的约束的列名。)

     举例说明:Create Table project

                        (

                             项目编号 int

                              Constraint  pk_pno  primary  key,

                              项目名称 char(20),

                              项目负责人 char(20),

                              Constraint  un_pname_pm  unique(项目名称,项目负责人)

                              )

     分析:“项目编号”字段设置为主键,主键约束名为pk_pno,此主键约束为列主键约束“项目名称”和“项目负责人”的组合字段设置唯一性约束,此约束为表级约束)

 

各约束在创建列约束和表约束时的具体说明:

一:既可以创建列级约束又可以创建表级约束的:

 1,主键约束(primary  key  constraint):

       (1)定义列约束:Constraint <约束名> Primary Key

        (2)定义表约束[Constraint <约束名>] Primary Key( <列名> [{<列名>}])        

 

 2,唯一性约束(unique key constraint):

       (1)定义列约束:[Constrain <约束名>] Unique

       (2)定义表约束:Constrain <约束名>  Unique  ( <列名> [{<列名>}])        

 

 3,检查约束(check constraint):

        既可以用于列约束,也可以用于表约束:  [Constraint <约束名>]  Check (<条件>)

       (注意:一个列级检查约束只能与限制的字段有关;一个 表级约束只能与限制的表中的字段有关)

4外键约束(foreign  key constrain:

            定义 列级约束:[Constraint <约束名>] Foreign key  References <外表名>

            定义表级约束:[Constraint <约束名>] Foreign key  References <外表名>( <列名> [{<列名>}])        

二:只能创建列级约束的:

1,缺省约束(default constraint):

                [Constraint <约束名>] Default  约束条件

   

 2,Null 约束

                [Constraint <约束名>] [Null | Not Null]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值