数据库原理与使用技术原理实验六
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学软件学院
实验报告
课程:数据库原理与实用技术实验任课教师:包崇明,朱艳萍
姓名:冉荣华学号:20121070074 专业:数字媒体技术成绩:
实验6 数据库完整性
实验6-1 完整性约束
1、在学生表上面创建下列约束
(1)创建入学日期约束“Enter_University_date_rule”,假定该学校于1923年4月30日创建。要求:入学日期必须大于等于学校创建日期,并且小于等于当前日期
alter table学生表
add constraint Enter_University_date_rule
check (入学日期>'1923-04-30'and入学日期 (2)创建学生年龄约束“Age_rule”。要求:学生年龄必须在15~30岁之间alter table学生表 add constraint Age_rule check (年龄>15 and年龄<30) (3)创建学生性别约束“Sex_rule”。要求:性别只能为“男”或“女” alter table学生表 add constraint Sex_rule check (性别='男'or性别='女') (4)创建学生成绩约束“Score_rule”。要求:学生成绩只能在0~100之间 alter table成绩表 add constraint Score_rule check (成绩>=0 and成绩<=100) (5)用图形方法查看学生成绩约束“Score_rule”,截图为: 2、删除约束Enter_University_date_rule alter table学生表 drop constraint Enter_University_date_rule 3、创建声明式默认约束:在创建表的过程中创建声明式默认约束 (1)创建表“default_example”,表中包含字段pid、name、sex、age。要求设定sex的默认值为“男”、age的默认值为18。 创建语句: create table default_example ( 编号int, 姓名char(12), 性别char(5)constraint sex_default default'男', 年龄int constraint age_default default 18) insert into default_example(编号,姓名,性别) values(101,'苏晴','女') insert into default_example(编号,姓名,年龄) values(201,'马拯山','20') 执行结果为:查看:select*from default_example 表(图形查看)的结果 (2)插入一条编号为100 的记录,执行结果为: alter table default_example add default 100 for编号 结果: (3)修改默认值 一般先删除老的默认约束,再新建一个默认约束 删除约束:alter TABLE default_example drop 约束名 新建默认约束:alter TABLE default_example add constraint df_age default(19) for age 请将年龄默认值更改为19,执行结果为: 删除约束:alter table default_example drop age_default 更改约束(默认值) alter table default_example add constraint age_default default 19 for年龄 图形化查看: 4、在“学生管理数据库”各个数据表中建立相应的主键、外键、惟一值、以及check约束,要求:学生的年龄必须是两位数,其中第一位是1或2: 学生表 授课表: 课程表: 成绩表: 删除check 约束: 删除check 约束: 学生表: 授课表: 课程表: 成绩表: 5、完成教科书456页如下习题: [7.1]a: 实验6-2 触发器 1、使用触发器 (1)创建一个触发器trig_update,返回对“学生表”进行更新操作后,被更新的记录条数create trigger trig_update on学生表 after update as print'Trigger Output:'+convert(varchar(5),@@rowcount)+'rows were updated.' (2)执行触发器 update学生表 set年龄='20'where姓名='李涛' (3)修改触发器trig_update,除返回被更新的记录条数外,再返回学生的所有基本信息alter trigger trig_update on学生表for update as print'Trigger Output:'+convert(varchar(5),@@rowcount)+'rows were updated.' print'Inserted:' select*from inserted update学生表set年龄='19'where姓名='李涛' 2、使用触发器的两个特殊表:插入表(inserted)和删除表(deleted)。 (1)在“学生表”上创建触发器ins_del_sample,在对学生表进行插入、删除或更新操作后,分别从inserted表和deleted表中查询学生学号、姓名、性别、年龄和所在院系。 (请同学们在做删除操作时,注意备份) create trigger ins_del_sample on学生表for update,insert, delete as print'Inserted:' select学号,姓名,性别,年龄,所在院系 from inserted print'Deleted:' select学号,姓名,性别,年龄,所在院系 from deleted return (2)执行插入、删除和更新操作后返回的表有什么区别? insert into学生表 values('20091202','张三','男','21','计算机','软件班','2009/8/26')