博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库表的约束
阅读量:6733 次
发布时间:2019-06-25

本文共 2271 字,大约阅读时间需要 7 分钟。

       在设计数据库时。为了确保数据库表中数据的质量。须要考虑数据的完整性(数据的完整性是指数据的正确性和一致性)。

举个样例:当你要为学生建立一个基本信息表StudentInfo时,这个表中学生的名字能够同样可是学号必须不一样,而他的年龄也得限制在一定范围内,像这样类似的“限制”有非常多,假设违反了这些限制就制造了与现实不符的失真数据即破坏了数据的完整性。由于数据库不能自行推断哪些数据失真,所以须要觉得加入一些约束来保证数据的完整性。

数据库中对表的约束有五种:

1.主键约束(Primary Key constraint):主键列数据唯一。而且不同意为空。

       语法:Constraint 主键约束名 Primary Key [ Clustered | Nonclustered ] ( 列名1,[ 列名2。……。列名n ] )

      主键是表中的一列或一组列,它们的值能够唯一地标识表中的每一行。

2.唯一约束(Unique constraint):该列数据唯一,同意为空。但仅仅能出现一个空值(不反复性)。

      语法:Constraint 约束名 Unique [ Clustered | Nonclustered ] ( 列名1。[ 列名2,…… 列名n] )

      唯一性约束保证了除主键外的其他一个或一组列的数据具有唯一性。以防止在列中输入反复的值。

(一个表仅仅能够有一个主键约束。假设其他列也不希望有反复就能够使用唯一性约束。)

3.检查约束(Check constraint):范围限制、格式限制

      语法:Constraint 约束名 Check [ Not For Replication ] ( 逻辑表达式 )

      检查约束使指定表中一列或一组列能够接受的数据值或格式。

4.默认约束(Default constraint):

      语法:Constraint 约束名 Default 约束表达式 [ For 列名 ]

      为指定列定义一个默认值。在输入数据时。假设没有输入该列的值,则将该列的值设置为默认值。

5.外键约束(Foreign Key constraint):表间约束。确保数据的參照完整性

      语法:Constraint 约束名 Foreign Key ( 列名1。[ 列名2,……列名n ] )     References 关联表 ( 关联列名1。[ 关联列名2,……关联列名n ] )  

      将当前表中的某一列或一组列关联到还有一个表的主键列。可创建两个表之间的连接。

当前表中的列就成为外键。

外键涉及到两个表,一个主表。一个从表 。主表中的外键是从表中的主键

以下以“学生信息”表为例。加入约束

Create table StudentInfo(	StudentNo int not null,	StudentID int,	StudentName nvarchar(50) ,	Sex varchar(2) ,	Score float Default(0),			--为学生的成绩设定默认值0,在没有数据输入时。系统自己主动分配为0.	DepartmentNo varchar(10),		Constraint PK_Student Primary Key (StudentNo),		 --用“学号”作主键。仅仅要有学号就能够唯一确定一位学生 	Constraint IX_Student Unique(StudentID),		     --'为“身份证”加入唯一性约束,当输入的身份证号有反复时会自己主动检查出错误 	Constraint CK_Student Check (Sex In ('男','女')),	    --'检查学生的性别是否为男或女 	--'“学生信息”表与“院系”表建立外键约束,外键为学生信息表的"所属院系",从表的主键或候选键列为“院系”表的“记录编号” 	Constraint FK_Student Foreign Key(DepartmentNo) References Department(RecordNo)		 )

约束的创建主要有两种,以加入主键为例:

      (1)创建表的时候创建约束,即在CreateTable中定义约束

             Create StudentInfo(StudentNo vchar Primary Key。……)

            或者

            Create StudentInfo(StudentNo vchar,……Constraint PK_Student Primary Key(StudentNo)……)

      (2)是向已经创建 好的表中加入约束,即在Alter Table中创建约束

             Alter Table StudentInfo add Constraint PK_Student Primary Key (StudentNo)

删除约束:对于存在外键约束的表,假设进行删除非空的外键,可能会出现错误

            Alter Table StudentInfo Drop Constraint PK_Student

        约束是SQL Server提供的自己主动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。

对于数据库来说,约束也可分为列约束(Column Constraint)和表约束(Table Constraint)。列约束作为列定义的一部分仅仅作用于此列本身。表约束作为表定义的一部分能够作用于多个列。约束仅仅是数据库对表管理的一种,这些在曾经学过。可是不太会用,所以对约束先做一个小结。

 

转载地址:http://vofqo.baihongyu.com/

你可能感兴趣的文章
万物互联时代,Check Point开启网络安全新未来
查看>>
JavaScript Promise迷你书(中文版)--再学习
查看>>
MapReduce原理
查看>>
中国信通院:为让区块链信息披露可信,我们做了一套黑盒标准
查看>>
对象的组合(第四章)
查看>>
乌云首届安全峰会即将开幕
查看>>
Active Directory权限持久控制之恶意的安全支持提供者(SSP)
查看>>
BIM的一小步,工程造价的一大步
查看>>
ABB鼎力支持中国实现2020年风力发电目标
查看>>
18atcskd2w这种密码竟然还是弱口令?
查看>>
大数据时代下 OA助力企业决策更智慧
查看>>
Mac OS X 下搭建 Java 开发环境图解
查看>>
智慧城市是趋势 文化产业不可失
查看>>
程序员要有持续产出
查看>>
农业赶潮互联网+,发展新热点应运而生
查看>>
《中国人工智能学会通讯》——11.25 单目视频下运动物体建模及分析
查看>>
齐聚一堂:共话网络安全人才培养新模式
查看>>
公有云盈利了 阿里Q3财报云服务抢眼!
查看>>
实现VDI灾难恢复的四种方式
查看>>
NetSarang的Xmanager和Xshell多种产品被植入后门 绿盟科技发布分析与防护方案
查看>>