数据库约束课件_第1页
数据库约束课件_第2页
数据库约束课件_第3页
数据库约束课件_第4页
数据库约束课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基础知识复习51数据库约束52数据库约束练习数据库约束什么是数据库约束

是为了保证数据的完整性而实现的一套机制。将约束放置在列或表上,可以保证数据满足某种完整性规则。◆约束包括:检查约束(CHECK)、主键约束(PRIMARYKEY)、外键约束(FOREIGNKEY)、唯一约束(UNIQUE)和默认约束(DEFAULT)。●CHECK约束

通过数据库表里,在字段级或表级加入的检查约束,使其满足特定的要求。比如下面的表定义:例:在职员表staff中,职员的考勤分数需要大于0。

CRATETABLEstaff(

Snoint,

SNamevarchar(10),

scoreintCHECK(scrore>0));定义考勤分数不能小于等于0。●FOREIGNKEY约束

外键约束是确保数据完整性并显示表之间关系的一种方法。在一张表上添加一个外键,也就是在创建定义外部键的表参照表(referencingtable)和外部键引用表(referencedtable)之间的信赖关系。定义外键后,插入到参照表中的任何记录要么在引用表的引用列中有记录,要么将外部键列的值设置为NULL。外键的例子:在学生的成绩系统中,现有学生信息表,学生成绩表。如果学生退学了或其他原因需要删除某学生记录,同时要求删除该学生的成绩记录。建立的三个表如下:CREATETABLEstudent(snointprimarykeyidentity(20050301,1),snamevarchar(20)notnull,ssexchar(2)check(ssex=‘男’orssex=‘女’),sagesmallintcheck(sage>=16),sdepvarchar(20)default‘计算机系’)CREATETABLEcourse( cnochar(4)primarykey,cnamevarchar(50)uniquenotnull, ccreditsmallintcheck(ccredit>0));CREATETABLESC(

snointreferencesstudent(sno),

cnochar(4)referencescourse(cno),

gradesmallintCHECK(gradebetween0and100));CREATETABLEsc(

snointreferencesstudentONUPDATECASCADEONDELETECASCADE,//希望在学生记录改变时自动改变分数记录,在删除学生时,级联删除分数记录。

cnochar(4)referencescourseONUPDATECASCADE,//希望在改变课程时自动改变分数记录表里关于课程的引用,但是不希望删除课程时级联删除分数。

gradesmallintCHECK(gradebetween0and100));例1:创建一个表SC,同时使用CONSTRANT子句将sno,cno字段定义为主键,主键名为:PK_Student1。方法一:CREATETABLESC

(snointNOTNULL,cnochar(4)NOTNULL,gradeintNULL,CONSTRANTPK_Student1PRIMARYKEY(sno,cno))注意:如果不指定主键名,系统将自动分配名称。●增加外键约束基本语法:ALTERTABLE表名ADDCONSTRAINT

外键约束名FOREIGNKEY(列名1【,列名2,…列名n)】

REFERENCES

关联表(关联列名1,【关联列名2,…,关联列名n】●增加检查约束基本表达式:ALTERTABLE表名ADDCONSTRAINT约束名CHECK[NOTFORREPLICATION]—用于指定从其他表中复制数据时,不检查约束条件。(逻辑表达式)例:使用CREATETABLE语句建表SC

,同时创建检查约束,定义列grade的值大于等于0。CREATETABLESC(snointNOTNULL,cnochar(4)NOTNULL,gradesmallint,

CONSTRAINTFK_student1FOREIGNKEY(sno)referencesstudent(sno),

CONSTRAINTFK_courseforeignkey(cno)referencescourse(cno),CONSTRAINTCK_gradeCHECK(grade>=0))例:使用CREATETABLE语句创建表course,同时创建检查约束,定义列cno只能以大写的两个字母开始,其余几位只能是数字。CREATETABLEcourse(cnochar(4)NOTNULL,cnamevarchar(40)NOTNULL,ccreditsmallint,CONSTRAINTFK_coursePRIMARYKEY(cno),CONSTRAINTCK_courseCHECK(cnoLIKE‘[A-Z][A-Z][0-9][0-9]’))例:给SC表增加一个检查约束,要求成绩grade>0.altertablescaddconstraintck_sccheck(grade>=0)●增加唯一性约束基本语法:ALTERTABLEADDCONSTRAINT

约束名UNIQUE[CLUSTERED|NONCLUSTERED]—指定创建聚集或非聚集索引(列名1【,列名2,…列名n】)方法二:1.CREATETABLEstudent(Snointnotnull,Snamevarchar(10))2.altertablestudentaddCONSTRAINTIX_student1UNIQUE(sname)增加默认约束基本语法:ALTER

TABLE

table_name

ADD

CONSTRAINT

constraint_name

DEFAULT

default_val

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论