资源描述:
《SQL-约束.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQLSERVER数据库程序设计约束的应用约束的相关概念1、约束用于确保数据库数据满足特定的商业规则。约束就是指对插入到表中数据的各种限制。例如:人的性别只能为男或女,人的学号不能为空且不能重复,人的年龄只能在0~150岁之间。2、约束可以对数据库中的数据进行保护。约束的相关概念3、约束可以在建表的时候直接声明,也可以为已建好的表添加约束。4、在SQLSERVER中,约束包括:notnull、default、unique,primarykey,foreignkey,和check六种。在建表的时候声明约束CREA
2、TETABLE表名(列名1数据类型,列名2数据类型,……列名n数据类型,约束子句1,……约束子句N);在表建好后添加约束ALTERTABLE表名ADD约束子句;各种约束介绍Default(默认值)约束:用于为列设置默认值例1:CREATETABLESTUDENT(SIDCHAR(8)NOTNULL,SNAMECHAR(12),SEXNCHAR(1)DEFAULT‘男’);例2:ALTERTABLESTUDENTADDCONSTRAINT学生表_姓名_DFDEFAULT‘王一’FOR姓名各种约束介绍unique(
3、唯一)约束:当定义了唯一约束后,该列值是不能重复的,但是可以为null。例1:CREATETABLESTUDENT(SIDCHAR(8),SNAMECHAR(12),SEXNCHAR(1),CONSTRAINTAUNIQUE(SID));各种约束介绍unique(唯一)约束:当定义了唯一约束后,该列值是不能重复的,但是可以为null。例2:ALTERTABLESTUDENTADDCONSTRAINTBUNIQUE(SNAME)各种约束介绍小练习:要求为学生表添加一个约束,要求学号和姓名的组合值不能重复.各种约束
4、介绍小练习:要求为学生表添加一个约束,要求学号和姓名的组合值不能重复.ALTERTABLESTUDENTADDCONSTRAINTBUNIQUE(SID,SNAME)思考题:如果在建学生表的时候就要求学号和姓名的组合值不能重复,如何创建该约束。各种约束介绍primarykey(主键)约束:用于唯一的标示表行的数据,也就是用于确保数据表中不能存在重复的记录。当定义主键约束后,该列不但不能重复而且不能为null。需要说明的是:一张表最多只能有一个主键,但是可以有多个unqiue约束。例CREATETABLESTUD
5、ENT(SIDCHAR(8),SNAMECHAR(8),CONSTRAINTDPRIMARYKEY(SID));各种约束介绍练习1:将课程表的课程号添加为主键练习2:创建SCORES表,要求把学号和课程号的组合设置为主键.各种约束介绍练习1:将课程表的课程号添加为主键ALTERTABLECOURSEADDCONSTRAINTEPRIMARYKEY(COUID);练习2:创建SCORES表,要求把学号和课程号的组合设置为主键.CREATETABLESCORES(SIDCHAR(10),COUIDCHAR(10
6、),SCORENUMERIC(5,2),CONSTRAINTFPRIMARYKEY(SID,COUID));各种约束介绍Check约束:用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000-2000之间,那么在sal列输入的数据如果不在1000-2000之间系统就会提示出错。各种约束介绍Check约束:用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000-2000之间,那么在sal列输入的数据如果不在1000-2000之间系统就
7、会提示出错。例1:CREATETABLESTUDENT(SIDCHAR(10),SEXNCHAR(1),CONSTRAINTGCHECK(SEX=‘男’ORSEX=‘女’);各种约束介绍练习1:创建用户表USER(NAME,LOGNAME,PASSWORD)要求同一行的NAME和LOGNAME值不能相同要求LOGNAME只能为英文字符且不能为空串练习2:为SCORE表添加约束,要求SCORE字段值只能介于0-100之间练习1:创建用户表USER1(NAME,LOGNAME,PASSWORD)要求同一行的NAME
8、和LOGNAME值不能相同要求LOGNAME只能为英文字符且不能为空串CREATETABLEUSER1(NAMEVARCHAR(10),LOGNAMEVARCHAR(8),PASSWORDVARCHAR(8),CHECK(NAME<>LOGNAME),CHECK(PATINDEX('%[^a-zA-Z]%',LOGNAME)=0),CHECK(LEN(LOGNAME)>0))各种约束介