




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基础知识复习,5,1,数据库约束,5,2,数据库约束练习,数据库约束,什么是数据库约束是为了保证数据的完整性而实现的一套机制。将约束放置在列或表上,可以保证数据满足某种完整姓规则。约束包括:检查约束(CHECK)、主键约束(PRIMARYKEY)、外键约束(FOREIGNKEY)、唯一约束(UNIQUE)和默认约束(DEFAULT)。,CHECK约束通过数据库表里,在字段级或表级加入的检查约束,使其满足特定的要求。比如下面的表定义:例:在职员表staff中,职员的考勤分数需要大于0。CRATETABLEstaff(Snoint,SNamevarchar(10),scoreintCHECK(scrore0);定义考勤分数不能小于等于0。,PRIMARYKEY约束列内容不能重复,且不能为空。UNIQUE约束定义一个唯一约束但是它并不包括NULL值。直接在字段定义后加入UNIQUE即可定义一个唯一约束。DEFAULT约束每列只能有一个DEFAULT定义。DEFAULT定义可以包含常量值、函数、或NULL。,FOREIGNKEY约束外键约束是确保数据完整性并显示表之间关系的一种方法。在一张表上添加一个外键,也就是在创建定义外部键的表【参照表(referencingtable)】和外部键引用表(referencedtable)之间的信赖关系。定义外键后,插入到参照表中的任何记录要么在引用表的引用列中有记录,要么将外部键列的值设置为NULL。,外键的例子:在学生的成绩系统中,现有学生信息表,学生成绩表。如果学生退学了或其他原因需要删除某学生记录,同时要求删除该学生的成绩记录。建立的三个表如下:/学生信息表CREATETABLEstudent(snonchar(12)primarykey,snamenvarchar(50),sphonenchar(15),/学生课程表CREATETABLEcourse(cnonvarchar(10)primarykey,cnamenvarchar(50),desc1nvarchar(50)),CREATETABLESC(snonchar(12)referencesstudent,cnonvarchar(10)referencescourse,scoreintCHECK(score0);,CREATETABLEsc(snonchar(12)referencesstudentONUPDATECASCADEONDELETECASCADE,/希望在学生记录改变时自动改变分数记录,在删除学生时,级联删除分数记录。cnonvarchar(10)referencescourseONUPDATECASCADEONDELETERESTRICT,/希望在改变课程时自动改变分数记录表里关于课程的引用,但是不希望删除课程时级联删除分数。scoreintCHECK(score0);,约束的创建、查看、删除增加主键约束基本语法:ALTERTABLE表名ADDCONSTRAINT主键约束名PRIMARYKEYCLUSERED|NONCLUSTERED(列名1【,列名2,列名n)】注意:如果不指定主键名,系统将自动分配名称。,例1:创建一个表SC,同时使用CONSTRANT子句将sno字段定义为主键,主键名为:PK_Student1。方法一:CREATETABLESC(snonchar(12)NOTMULL,cnonvarchar(10)NOTMULL,cnointNULL,CONSTRANTPK_Student1PRIMARYKEY(sno),方法二:1.建表CREATETABLESC(snonchar(12)NOTMULL,cnonvarchar(10)NOTMULL,scoreintNULL)2.增加主键约束ALTERTABLEscoreADDCONSTRAINTPK_student1PRIMARYKEY(sno),增加外键约束基本语法:ALTERTABLE表名ADDCONSTRAINT外键约束名FOREIGNKEY(列名1【,列名2,列名n)】REFERENCES关联表(关联列名1,【关联列名2,,关联列名n】,例:将SC表中的cno字段增加为外键,该值参照course表中cno字段的值,外键名为:FK_course1。ALTERTABLESCADDCONSTRAINTFK_course1FOREIGNKEY(cno)REFERENCEScourse(cno),增加检查约束基本表达式:ALTERTABLE表名ADDCONSTRAINT约束名CHECKNOTFORREPLICATION用于指定从其他表中复制数据时,不检查约束条件。(逻辑表达式),例:使用CREATETABLE语句建表SC,同时创建检查约束,定义列score的值大于等于0。CREATETABLESC(snonchar(12)NOTNULL,cnonvarchar(10)NOTNULL,scorefloat,CONSTRAINTFK_student1FOREIGNKEY(sno)referencesstudent(sno),CONSTRAINTFK_courseforeignkey(cno)referencescourse(cno),CONSTRAINTCK_scoreCHECK(cno=0),例:使用CREATETABLE语句创建表student,同时创建检查约束,定义列Sno只能以大写的两个字母开始,其余几位只能是数字。CREATETABLEstudent(Snonchar(6)NOTNULL,Snamevarchar(10)NOTNULL,Sexvarchar(2),CONSTRAINTFK_studentPRIMARYKEYCONSTRAINTCK_studentCHECK(SnoLIKEA-ZA-Z0-90-90-90-9),例:给SC表增加一个检查约束,要求成绩score0.altertablescaddconstraintck_sccheck(score=0),增加唯一性约束基本语法:ALTERTABLEADDCONSTRAINT约束名UNIQUECLUSTERED|NONCLUSTERED指定创建聚集或非聚集索引(列名1【,列名2,列名n】),例:创建表student,将sname列设置唯一性约束。方法一:CREATETABLEstudent(Snonchar(6)notnull,Snamevarchar(10),CONSTRAINTPK_student1PRIMARYKEY(Sno),CONSTRAINTIX_student1UNIQUE(Sname),方法二:1.CREATETABLEstudent(Snonchar(6)notnull,Snamevarchar(10))2.altertablestudentaddCONSTRAINTIX_student1UNIQUE(sname),增加默认约束基本语法:ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameDEFAULTdefault_valueFORcolumn_name,例:为student表的sbithday建立默认约束,默认为系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级工程师机械设计与制造方向考试题库及答案解析
- 2025年初级产品经理面试秘籍及预测题
- 2025年初级人事专员面试问题与预测答案大揭秘
- 2025年CATV QAM调制器项目发展计划
- 2025年票务服务合作协议书
- 2025年U型荧光灯管项目合作计划书
- 辽宁省沈文新高考研究联盟2025-2026学年高二上学期开学质量监测数学试卷(含解析)
- 广西部分学校2025-2026学年高一上学期开学质量检测生物试题(有答案)
- 安徽省滁州市定远三中2025-2026学年高三开学摸底物理试卷(含答案)
- 2025年氮氧化铝晶体(ALON)项目建议书
- 股骨骨折病人护理要点
- 日历表2026年日历中文版纵向排版周日开始带周数带节假日调休安排
- 学生会综合事务部述职报告
- 《鲍曼不动杆菌》课件
- 2025年上海合伙企业协议模板
- Unit 1 Making friends Section A How do we greet friends 第一课时(说课稿)-2024-2025学年人教PEP版(2024)英语三年级上册
- DB11-T 1211-2023 中央空调系统运行节能监测
- 《肺动脉高压的护理》课件
- 《继电保护知识培训》课件
- 《英语测试与评价》教学大纲
- 新疆生产建设兵团第六师五家渠市事业单位公开招聘284人高频重点提升(共500题)附带答案详解
评论
0/150
提交评论