《数据库原理 实验 答案资料》由会员分享,可在线阅读,更多相关《数据库原理 实验 答案资料(28页珍藏版)》请在金锄头文库上搜索。
1、 实 验 报 告 课程名称: 数据库原理 系部名称: 计算机 专业班级: 网络工程 学生姓名: 学 号: 指导教师: 实验( 一 )实验名称: 数据库表的建立 实验时间: 2013-3-4 一、实验目的:本实验的目的是使熟悉SQL SERVER的常用数据类型,加深对SQL和SQL语言的查询语句的理解。1、熟练掌握简单表的创建。2、掌握主键约束、外键约束及及check约束的用法;3、掌握默认值约束的应用;4、了解规则、触发器的使用。二、实验内容:1、 使用查询分析器,用ddl建立studentinfo数据库2、 在studentinfo 数据库中定义3个表,students, courses,和
2、sc,表的具体要求如下:用ddl建立上述3个表并增加如下约束: students,表列名说明数据类型约束说明Sno学号字符串,长度为10主键Sname姓名字符串,长度为8非空值Ssex性别字符串,长度为2非空值Sage年龄整数允许空值Sdept所在系字符串,长度为15非空值Courses表列名说明数据类型约束说明Cno课程号字符串,长度为6主键Cname课程名字符串,长度为20非空值PreCno先修课程号字符串,长度为6允许为空值Credits学分整数允许为空值SC表列名说明数据类型约束说明Sno学号字符串,长度为10主键Cno课程号字符串,长度为6主键Grade成绩整数允许为空值具体约束为:
3、1、 请用至少2种方法定义stu数据库中student表的主键sno;2、 为表course中的字段cname添加唯一值约束;3、 对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表course的主码cno对应,实现如下参照完整性:1) 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录;2) 修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;3) 修改course表cno字段值时,该字段在sc表中的对应值也应修改;4) 删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记
4、录;5) 向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入;4、定义check约束,要求学生学号sno必须为10位字符,且不能以0开头,第二三位皆为0;check(sno like000_ )5、定义stu数据库中student表中学生年龄值在16-25范围内;6、定义stu数据库中student表中学生姓名长度在2-8之间;check(len(sname)=2 and len(Sname)=16 and Sage=25) default 20,Sdept char(15) not null)create table Courses(Cno char(6) p
5、rimary key,Cname char(20) unique,PreCno char(6) null,Credits int null)create table SC(Sno char(10),Cno char(6),Grade int null,primary key(Sno,Cno),foreign key(Sno) references Students(Sno)on delete cascade,foreign key(Cno) references Courses(Cno)on delete cascadeon update cascade)四、主要问题和解决方法:我们都对数据库
6、不陌生,但是使用sql语句来使用数据库的还是第一次,感觉挺新鲜。第一次使用,问题的难度不大,都可以自主完成。五、测试数据及结果:与预测结果一样。6、 心得体会与自我评价: 首次使用sql,感觉还好,但是我知道这只是一个开始,后面还有更加复杂的指令,这些都是从基础开始的,所以,即使这一次简单,还是要认真的对待。实验( 二 )实验名称: 数据库的完整性约束 实验时间: 2013-3-18 一、实验目的:1.掌握主键约束、外键约束及及check约束的用法;2.掌握默认值约束的应用;3.了解规则、触发器的使用。2、 实验内容:1、 使用查询分析器,用ddl建立studentinfo数据库2、 在stu
7、dentinfo 数据库中定义3个表,students, courses,和sc,表的具体要求如下:用ddl建立上述3个表并增加如下约束: students,表列名说明数据类型约束说明Sno学号字符串,长度为10主键Sname姓名字符串,长度为8非空值Ssex性别字符串,长度为2非空值Sage年龄整数允许空值Sdept所在系字符串,长度为15非空值Courses表列名说明数据类型约束说明Cno课程号字符串,长度为6主键Cname课程名字符串,长度为20非空值PreCno先修课程号字符串,长度为6允许为空值Credits学分整数允许为空值SC表列名说明数据类型约束说明Sno学号字符串,长度为10
8、主键Cno课程号字符串,长度为6主键Grade成绩整数允许为空值具体约束为:1、 请用至少2种方法定义stu数据库中student表的主键sno;2、 为表course中的字段cname添加唯一值约束;3、 对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表course的主码cno对应,实现如下参照完整性:1) 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录;2) 修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;3) 修改course表cno字段值时,该字段在sc表中的对应值也应修改;4)
9、删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;5) 向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入;4、定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0;(不用做)5、定义stu数据库中student表中学生年龄值在16-25范围内;6、定义stu数据库中student表中学生姓名长度在2-8之间;7、定义stu数据库中student表中学生性别列中只能输入“男”或“女”;8、定义stu数据库student表中学生年龄值默认值为20;三、源程序:create database stud
10、entinfocreate table students(Sno char(10)primary key,Sname char(8),Ssex char(2),Sage smallint,Sdept char(15)create table courses(Cno char(6)primary key,Cname char(20)not null,PreCno char(6),Ccredits smallint);create table SC(Sno char(10),Cno char(6),Grade smallint,primary key(Sno,Cno),foreign key(Sn
11、o)references students(Sno),foreign key(Cno)references courses(Cno);INSERTINTO Students(Sno,Sname,Ssex,Sage,Sdept)VALUES(20010101,Hone,M,19,Computer);INSERTINTO Students(Sno,Sname,Ssex,Sage,Sdept)VALUES(20010102,Sue,F,20,Computer);INSERTINTO Students(Sno,Sname,Ssex,Sage,Sdept)VALUES(20010103,Smith,M,19,Math);INSERTINTO Students(Sno,Sname,Ssex,Sage,