欢迎来到天天文库
浏览记录
ID:44944417
大小:149.50 KB
页数:36页
时间:2019-11-05
《第11章_数据完整性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、约束约束定义了必须遵循的用于维护数据一致性和正确性的规则,是强制实现数据完整性的主要途径。约束有5种类型,包括:主键约束、唯一性约束、检查约束、默认约束、外键约束(参照约束)。约束可以在两个层次上实施:列级:用户定义的约束只对表中的一列起作用;表级:用户定义的约束对表中的多列起作用。强制数据完整性的约束机制一、主键约束(PRIMARYKEY)(实体)二、聚集约束(CLUSTERED)(实体)三、唯一性约束(UNIQUE)(实体)四、检查约束(CHECK)(域)五、默认约束(DEFAULT)(域)六、外键约束(FOREIGNKEY)(参照)七、不为空约束(NOTNULL)(域
2、)1.约束的创建、修改(1)使用CREATETABLE语句创建约束使用CREATETABLE语句创建约束是在创建表时定义约束,约束是表格定义的一部分。其语法形式为:CREATETABLEtable_name(column_namedata_type[[CONSTRAINTconstraint_name]constraint_type][,…n])constraint_name:要创建的约束的名字。若缺省约束名,则SQLServer会自动为约束提供一个名字。constraint_type:要创建的约束类型。(2)使用ALTERTABLE语句创建约束在已有的表上创建、修改约束可
3、以使用ALTERTABLE命令。其语法形式为:ALTERTABLEtable_name[WITHCHECK
4、WITHNOCHECK]ADD[CONSTRAINTconstraint_name]constraint_typeWITHCHECK
5、WITHNOCHECK:新加入的约束对表中现有的数据是否进行检查。CONSTRAINTconstraint_name:强制起索引文件名2.约束的删除语法形式为:ALTERTABLEtable_nameDROPCONSTRAINTconstraint_name一、主键约束(PRIMARYKEY)主键用于唯一地标识表中每一条记录。我们可以定
6、义表中的一列或多列为主键,则主键列上没有两行具有相同值,也不能为空值。1.使用T-SQL语句创建主键约束创建主键约束的语法形式:[CONSTRAINTconstraint_name]PRIMARYKEY[CLUSTERED
7、NONCLUSTERED](col_name[,…n])例1创建Orders表,包括OrderID、CustomerID、SaleID和OrderDate四个字段,其中OrderID字段设为主键。CREATETABLEOrders(OrderIDintPRIMARYKEY,CustomerIDchar(3),SaleIDchar(3),OrderDate
8、datetime)或CREATETABLEOrders(OrderIDintCONSTRAINTpk_orderidPRIMARYKEY,CustomerIDchar(3),SaleIDchar(3),OrderDatedatetime)例2已有Salers表,包含SaleID、SaleName、Sex等字段,将该表中SaleID字段设为主键。注意:即使在创建主键约束时带有WITHNOCHECK选项,系统总要对现存数据进行检查,若现有数据在该列上出现重复或空值,SQLServer会提示错误信息,并拒绝执行创建主键约束操作。ALTERTABLESalersADD[CONSTR
9、AINTpk_saleid]PRIMARYKEY(Saleid)例3OrderDetails表包含OrderID、ProductID和Quantity三个字段,在OrderID和ProductID上创建主键。ALTERTABLEOrderDetailsADD[CONSTRAINTpk_order_product]PRIMARYKEY(orderid,productid)主键约束定义在不止一列上时,一列中的值可以重复,但主键约束定义中的所有列的组合值必须唯一。例4删除例3-21中创建的主键约束。ALTERTABLESalersDROPCONSTRAINTpk_saleid2.
10、使用企业管理器创建主键约束在企业管理器下也可创建、修改、删除主键约束。只需进入企业管理器,选中需要添加主键约束的表,右键单击,在系统弹出的快捷菜单中选择“设计表”命令,在弹出的窗口中设置、取消主键即可。二、聚集约束(CLUSTERED)将表中的记录在物理数据页中的位置按索引字段值重新排序,再将重排后的结果写回到磁盘上。每个表只能有一个聚集索引。聚集性约束和主键约束的区别:聚集性约束允许在该列上存在NULL值,而主键约束限制更严格,不但不允许有重复,而且也不允许有空值。聚集性约束有排序功能,而主键约束无有排序功能。1
此文档下载收益归作者所有