数据库中的五种约束

上传人:kms****20 文档编号:40985528 上传时间:2018-05-27 格式:DOC 页数:7 大小:31.50KB
返回 下载 相关 举报
数据库中的五种约束_第1页
第1页 / 共7页
数据库中的五种约束_第2页
第2页 / 共7页
数据库中的五种约束_第3页
第3页 / 共7页
数据库中的五种约束_第4页
第4页 / 共7页
数据库中的五种约束_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《数据库中的五种约束》由会员分享,可在线阅读,更多相关《数据库中的五种约束(7页珍藏版)》请在金锄头文库上搜索。

1、数据库中的五种约束数据库中的五种约束数据库中的五种约束及其添加方法五大约束1.-主键约束(Primay Key Coustraint) 唯一性,非空性2.-唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个3.-检查约束 (Check Counstraint) 对该列数据的范围、格式的限制(如:年龄、性别等)4.-默认约束 (Default Counstraint) 该数据的默认值5.-外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列五大约束的语法示例1.-添加主键约束(将 stuNo 作为主键)alter table

2、 stuInfoadd constraint PK_stuNo primary key (stuNo)2.-添加唯一约束(身份证号唯一,因为每个人的都不一样)alter table stuInfoadd constraint UQ_stuID unique(stuID)3.-添加默认约束(如果地址不填 默认为“地址不详” )alter table stuInfoadd constraint DF_stuAddress default (地址不详) for stuAddress4.-添加检查约束 (对年龄加以限定 15-40 岁之间)alter table stuInfoadd constrai

3、nt CK_stuAge check (stuAge between 15 and 40)alter table stuInfoadd constraint CK_stuSex check (stuSex=男 or stuSex=女)5.-添加外键约束 (主表 stuInfo 和从表 stuMarks 建立关系,关联字段 stuNo)alter table stuInfoadd constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)约束(Constraint)是 Microsoft SQL Server 提供的自动保持数据

4、库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第 9 章) 。在 SQL Server 中有 5 种约束:主关键字约束(Primary Key Constraint) 、外关键字约束(Foreign Key Constraint) 、惟一性约束(Unique Constraint) 、检查约束(Check Constraint)和缺省约束(Default Constraint) 。1 主关键字约束主关键字约束指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只能有一列被指定为主关键字,且 IMAGE 和 TEXT 类型的

5、列不能被指定为主关键字,也不允许指定主关键字列有 NULL 属性。定义主关键字约束的语法如下:CONSTRAINT constraint_namePRIMARY KEY CLUSTERED | NONCLUSTERED(column_name1, column_name2,column_name16)各参数说明如下:constraint_name指定约束的名称约束的名称。在数据库中应是惟一的。如果不指定,则系统会自动生成一个约束名。CLUSTERED | NONCLUSTERED指定索引类别,CLUSTERED 为缺省值。其具体信息请参见下一章。column_name指定组成主关键字的列名。主

6、关键字最多由 16 个列组成。例 7-3: 创建一个产品信息表,以产品编号和名称为主关键字create table products (p_id char(8) not null,p_name char(10) not null ,price money default 0.01 ,quantity smallint null ,constraint pk_p_id primary key (p_id, p_name) on primary2 外关键字约束外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设

7、定它适合哪个表中哪些列相关联。这样,当在定义主关键字约束的表中更新列值,时其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的值时,系统会拒绝插入数据。与主关键字相同,不能使用一个定义为 TEXT 或 IMAGE 数据类型的列创建外关键字。外关键字最多由 16 个列组成。定义外关键字约束的语法如下:CONSTRAINT constraint_nameFOREIGN KEY (column_name1, column_name2,column_name16)R

8、EFERENCES ref_table (ref_column1,ref_column2, ref_column16 ) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION NOT FOR REPLICATION 各参数说明如下:REFERENCES指定要建立关联的表的信息。ref_table指定要建立关联的表的名称。ref_column指定要建立关联的表中的相关列的名称。ON DELETE CASCADE | NO ACTION指定在删除表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,

9、如果指定了值CASCADE,则在删除父表数据行时会将子表中对应的数据行删除;如果指定的是 NO ACTION,则 SQL Server 会产生一个错误,并将父表中的删除操作回滚。NO ACTION 是缺省值。ON UPDATE CASCADE | NO ACTION指定在更新表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在更新父表数据行时会将子表中对应的数据行更新;如果指定的是 NO ACTION,则 SQL Server 会产生一个错误,并将父表中的更新操作回滚。NO ACTION 是缺省值。NOT FOR REPLIC

10、ATION指定列的外关键字约束在把从其它表中复制的数据插入到表中时不发生作用。例 7-4:创建一个订货表,与前面创建的产品表相关联create table orders(order_id char(8),p_id char(8),p_name char(10) ,constraint pk_order_id primary key (order_id) ,foreign key(p_id, p_name) references products(p_id, p_name) on primary注意:临时表不能指定外关键字约束。惟一性约束惟一性约束指定一个或多个列的组合的值具有惟一性,以防止在列

11、中输入重复的值。惟一性约束指定的列可以有 NULL 属性。由于主关键字值是具有惟一性的,因此主关键字列不能再设定惟一性约束。惟一性约束最多由 16 个列组成。定义惟一性约束的语法如下:CONSTRAINT constraint_nameUNIQUE CLUSTERED | NONCLUSTERED(column_name1, column_name2,column_name16)例 7-5:定义一个员工信息表,其中员工的身份证号具有惟一性。create table employees (emp_id char(8),emp_name char(10) ,emp_cardid char(18),

12、constraint pk_emp_id primary key (emp_id),constraint uk_emp_cardid unique (emp_cardid) on primary7.2.4 检查约束检查约束对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性。可以对每个列设置符合检查。定义检查约束的语法如下:CONSTRAINT constraint_nameCHECK NOT FOR REPLICATION(logical_expression)各参数说明如下:NOT FOR REPLICATION指定检查约束在把从其它表中复制的数据插入到表中时不发生作用

13、。logical_expression指定逻辑条件表达式返回值为 TRUE 或 FALSE。例 7-6: 创建一个订货表其中定货量必须不小于 10。create table orders(order_id char(8),p_id char(8),p_name char(10) ,quantity smallint,constraint pk_order_id primary key (order_id),constraint chk_quantity check (quantity=10) ,) on primary注意:对计算列不能作除检查约束外的任何约束。7.2.5 缺省约束缺省约束通过

14、定义列的缺省值或使用数据库的缺省值对象绑定表的列,来指定列的缺省值。SQL Server 推荐使用缺省约束,而不使用定义缺省值的方式来指定列的缺省值。有关绑定缺省约束的方法请参见“数据完整性”章节。定义缺省约束的语法如下:CONSTRAINT constraint_nameDEFAULT constant_expression FOR column_name例 7-7:constraint de_order_quantity default 100 for order_quantity注意:不能在创建表时定义缺省约束,只能向已经创建好的表中添加缺省约束。7.2.6 列约束和表约束对于数据库来说

15、,约束又分为列约束(Column Constraint)和表约束(Table Constraint) 。列约束作为列定义的一部分只作用于此列本身。表约束作为表定义的一部分,可以作用于多个列。下面举例说明列约束与表约束的区别。例 7-8:create table products (p_id char(8) ,p_name char(10) ,price money default 0.01 ,quantity smallint check (quantity=10) , /* 列约束 */constraint pk_p_id primary key (p_id, p_name) /* 表约束 */

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号