资源描述
长 沙 学 院数据库实验报告题目数据库实验报告系(部)数学与计算机科学系专业(班级)软件工程姓名学号指导教师李妙祥实验1:关系数据库模式的设计一实验目的通过本实验使学生掌握根据需求说明设计概念模型的方法;掌握将概念模型转化为关系模型的方法;掌握创建数据库关系图的方法。二实验类型 设计型三实验学时 4学时四实验原理及知识点1概念模型。2将概念模型转化为关系模型。3创建数据库。4创建数据表。5创建数据库关系图。五实验环境1硬件设备要求:PC及其联网环境;2软件设备要求:Windows操作系统;MS SQL Server数据库管理系统。六实验内容及步骤假设要根据某大学的业务规则设计一个数据库,这个大学的业务规则如下: 1、该大学有多个学院:文学院、法学院,商学院、艺术学院等。每一个学院有一个院长,且每一位院长只能主管一个学院。学院包括学院编号、学院名称、学院地址等信息。院长包括院长编号、姓名、电话号码和办公室等信息。2、每一个学院有多个系。每一个系仅属于一个学院。系包括系代号、系名称、电话号码和系地址等信息。3、每一个系聘用多名教师,但每一位教师只属于一个系。教师包括教工号、姓名、学历、职称、工资、电话号码等信息。4、一位教师可能讲多门课,每一门课可由多位教师讲授。课程包括课程号、课程名称、学时数和学分等信息。5、每一个系有多名学生,且每一名学生只能属于一个系。学生包括学号、姓名、性别、出生年月、专业、电话号码等信息。6、每一名学生可选修多门课,且一门课有多名学生选。实验内容及步骤:1根据需求说明设计某大学数据库的概念模型。2将概念模型转化为关系模型。3创建大学数据库及其相关的数据表。4创建大学数据库关系图。Course表:Dean表:Department表:SC表:School表:Student表:TC表:Teacher表:数据库关系图七实验总结通过这次实验我学会了初步设计一个简单的数据库,把实体所具有的属性分析出来,然后根据属性之间的关系,画出ER图最后建一个简单的数据库,感觉收获很多。实验2:关系数据库标准语言SQL一实验目的通过本实验使学生掌握SQL语言的数据定义功能、数据查询功能和数据操纵功能。二实验类型 验证型三实验学时 4学时四实验原理及知识点1SQL语言的数据查询功能2SQL语言的数据定义功能3SQL语言的数据操纵功能五实验环境1硬件设备要求:PC及其联网环境;2软件设备要求:Windows操作系统;MS SQL Server数据库管理系统。六实验内容及步骤在STUDENT数据库中,根据要求使用SQL语言完成下列操作,将SQL语句以.sql文件的形式保存在自己的目录下。1查询选修了课程的学生的学号。 2查询学生学号和出生年份。3查询计算机系学生的学号、姓名。 4查询年龄在20岁与22岁之间(包括20和22岁)的学生姓名和年龄。 5查询学生姓名中含有“波”字的学生情况。6查询缺少学习成绩的学生学号和课程号。 7查询选修C601课程的学生的学号和成绩,并按分数的降序排列。 8求选修了课程的学生人数。 9求课程C601的平均成绩。10求选修课程超过2门的学生学号。 11查询参加学习的学生所学的课程号和总分。 12查询选修高等数学课程且成绩在80分以上的学生的学号、姓名。13查询每一课程的间接先行课(即先行课的先行课)。14查询年龄低于所有工程系学生的学生姓名、所在系、年龄。 15找出刘建平老师所开全部课程的课程号、课程名。16找出全部课程的任课教师。17求学生1203所学课程的总分。18找出所有姓张的学生的姓名和籍贯。19找出至少一门课程的成绩在90分以上的女学生的姓名。20求每一年龄上人数超过2的男生的具体人数,并按年龄从小到大排序。21把学生的学号及他的平均成绩定义为一个视图GRADE_VIEW。22创建一个从student、course、study表中查出计算机系的学生及其成绩的视图computer_view,要求显示学生的学号sno、姓名name、课程号cno、课程名称cname、成绩grade。23在Student表中依据学生姓名创建索引name_index。24在Study表中依据sno和cno创建索引main_index。25将课程C603的任课老师改为“赵明”。26在Student表中插入两个学生记录:1201,吴华, 女,20,成都,计算机系1102,张军, 男,21,上海,工程系27删除年龄在21岁以上的学生记录。-1SELECT DISTINCT Sno 学号FROM Student_course;-2SELECT Sno 学号,2015-Sage 出生年份FROM Student;-3SELECT Sno 学号,Sname 姓名FROM StudentWHERE Sdept = CS;-4SELECT Sname 姓名,Sage 年龄FROM StudentWHERE Sage =20 and Sage 2;-11SELECT Cno课程号, SUM(Grade)总分FROM Student_courseGROUP BY Cno;-12SELECT Student.Sno,Student.SnameFROM Student,Student_course,CourseWHERE Student.Sno = Student_course.Snoand Course.Cno = Student_course.Cnoand Course.Cname = 高等数学 and Student_course.Grade 80;-13SELECT FIRST.Cno,SECOND.CpnoFROM Course FIRST,Course SECONDWHERE FIRST.Cpno = SECOND.Cno;-14SELECT Sname,Sdept,SageFROM StudentWHERE Sage ANY(SELECT Sage FROM Student WHERE Sdept = EG);-15SELECTCno 课程号,Cname 课程名FROM CourseWHERE Cteacher = 刘剑平;-16SELECT DISTINCTCteacher 教师FROM CourseWHERE Cteacher is not NULL;-17SELECT SUM(Grade)总成绩FROM Student_courseGROUP BY SnoHAVING Sno = 201215122;-18SELECT Sname 姓名, Snative 籍贯FROM StudentWHERE Sname like 张%;-19SELECT Sname 姓名FROM StudentWHERE Ssex = 女 and Sno in(SELECT SnoFROM Student_courseWHERE 90 = 2)GROUP BY SageORDER BY Sage;-21CREATE VIEW GRADE_VIEWASSELECT Sno, AVG(Grade)SavgFROM Student_courseGROUP BY Sno;-22 CREATE VIEW COMPUTER_VIEWASSELECT Student.Sno, Student.Sname, Course.Cno, Course.Cname, Student_course.GradeFROM Student,Student_course,CourseWHERE Student.Sno = Student_course.Sno and Student_course.Cno = Course.Cno;-23CREATE INDEX NAME_INDEX ON Student(Sname);-24CREATE INDEX MAIN_INDEX ON Student_course(Sno,Cno);-25UPDATE CourseSET Cteacher = 赵明WHERE Cno = C603;-26INSERT INTO StudentVALUES (1201,吴华,女,20,成都,CS),(1102,张军,男,21,上海,EG);-27DELETEFROM StudentWHERE Sage 21;七实验总结通过这次实验学会使用SQL查询语句、使用SQL语句插入元组,使用SQL语句删除元组,使用SQL语句创建索引和删除索引,但任然不是很熟练,有很多地方需要查阅书籍才能完成,还是需要多加练习。实验3:数据库安全性的设计与实现一实验目的通过本实验使学生加深对数据库安全性的理解,并掌握数据库管理系统中有关用户、角色及操作权限的管理方法。二实验类型 验证型三实验学时 2学时四实验原理及知识点1安全模式的设置2服务器登录标识管理3数据库用户管理4权限管理五实验环境1硬件设备要求:PC及其联网环境;2软件设备要求:Windows操作系统;MS SQL Server数据库管理系统。六实验内容及步骤1使用企业管理器在你的SQL Server中创建一个登录名teacher,且1)它使用SQL Server 认证;2)能够创建和修改数据库; 3)能访问pubs数据库、student数据库和OrderCenter数据库,并且能够在这些库中分配语句和对象权限; 4)对OrderCenter数据库中的products表具有插入、修改和删除的权限。2在查询分析器中使用SQL语句完成下列任务:1)创建一个登录名student,口令为123,缺省数据库为student;2)将其加入到student数据库的用户中;3)将其加入到sysadmin角色中;4)将其加入到student数据库的db_owner角色中;5)授予他在student数据库中创建视图、创建表的权限;6)授予他对student数据库中的study表具有所有权限,且可将这些权限授予他人;7)撤销他对student数据库中的study表的修改权限;8)禁止他对student数据库中的study表的删除权限。七实验总结通过这次实验学会给不同的用户设置不同的角色,知道了数据库角色之间的不同,明白了数据库安全性的重要性。实验4:数据库完整性约束、规则、默认一实验目的通过本实验使学生加深对数据完整性的理解,熟悉通过SQL对数据进行完整性控制。二实验类型 验证型三实验学时 2学时四实验原理及知识点1约束2规则3默认五实验环境1硬件设备要求:PC及其联网环境;2软件设备要求:Windows操作系统;MS SQL Server数据库管理系统。六实验内容及步骤1. 将Student表中的Sno属性定义为码2. 将SC表中的Sno、Cno属性组定义为码3. 定义SC中的参照完整性4. 显示说明参照完整性的违约处理示例5. 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值6.建立部门表DEPT,要求部门名称Dname取值唯一部门编号Deptno列为主码7.Student表的Ssex只允许取男或女8.SC表的Grade的值应该在0和100之间9.当学生性别是男时,其名字不能以Ms.打头10.建立学生登记表Student,要求学号在9000099999之间,姓名不能去空值,年龄小于30,性别只能是男或女。11.建立教师表TEACHER,要求每个教师应发工资不低于3000元12.去掉10 Student表中的对性别的限制13.修改Student表中的约束条件,要求学号改为在900 000 999 999之间,年龄由小于30改为小于40-1CREATE TABLE Student(Sno CHAR(9), Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY(Sno) ); CREATE TABLE Course (Cno CHAR(4) NOT NULL, Cname CHAR(10) NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, PRIMARY KEY(Cno) );结果: -2 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT PRIMARY KEY(Sno,Cno), );结果:-3 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) );数据库关系图:-4 CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno)ON DELETE CASCADEON UPDATE CASCADE, FOREIGN KEY(Cno) REFERENCES Course(Cno)ON DELETE CASCADEON UPDATE CASCADE );表的设计:数据库关系图:-5 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(9) NOT NULL, Grade SMALLINT NOT NULL, PRIMARY KEY(Sno,Cno), );表的设计:-7 CREATE TABLE Stduent (Sno CHAR(9) NOT NULL, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (男,女), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY(Sno) );表的设计:当性别处填写男,女以外的值的时候,无法保存该元祖。-8 CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT CHECK(Grade = 0 AND Grade = 100), PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) );-9 CREATE TABLE Student (Sno CHAR(9), Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY(Sno), CHECK(Ssex = 女 OR Sname NOT LIKE MS.%) );-10 CREATE TABLE Student (Sno NUMERIC(6)CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 99999), Sname CHAR(20)CONSTRAINT C2 NOT NULL, Sage NUMERIC(3)CONSTRAINT C3 CHECK(Sage = 3000);-12drop constraint C4;-13alter table Studentdrop constraint C1;alter table Studentadd constraint C1 check(Sno between 9000000 and 999999);alter table Studentdrop constraint C3;alter table Studentadd constraint C3 check(Sage 40);七实验总结通过这次实验学会了定义各种完整性约束的定义,例如不能为空,取值唯一,还有CHECK约束,学会了用constraint语句定义约束,这种方式比在create语句中直接定义完整性约束更加灵活,主要是方便增加和删除一个完整性约束条件。实验5:数据库编程存储过程一实验目的通过本实验使学生掌握存储过程的基本概念和创建、执行、删除方法。二实验类型 验证型三实验学时 2学时四实验原理及知识点1Transact-SQL编程2存储过程的创建和执行3存储过程的修改和删除五实验环境1硬件设备要求:PC及其联网环境;2软件设备要求:Windows操作系统;MS SQL Server数据库管理系统。六实验内容及步骤利用存储过程实现下面的应用:从账户1转指定数额的款项到账户2中。假设账户关系表为Account(Accountnum,total)存储过程create procedure pro_transfer(inAccount int, outAccount int, amount float) as declare totalDepositOut float, totalDepositIn float, inAccountnum int; beginselect totalDepositOut = (select total from Account where accountnum = outAccount);if (totalDepositOut is null)beginrollback;return;endif (totalDepositOut amount)beginrollback;return;endselect inAccount = (select accountnum from Account where accountnum = inAccount)if(inAccountnum is null)beginrollback;return;endupdate Account set total = toal - amountwhere accountnum = outAccount;update Account set total = total + amountwhere accountnum = inAccount;commit; end 七实验总结通过这次实验学会写简单的存储过程,了解了在sql server 2008中的存储过程的基本语法,发现存储过程的语法和pascal有很大的相似之处,不过sql server 2008的语法和书上的语法有很大的不同,只能自己去网上找资料,不过这锻炼了我的自学能力,不过就写一个存储过程还是有很多不够,还是要勤加练习。实验7:数据库的备份与恢复一实验目的通过本实验使学生掌握数据库备份的方法和数据库恢复的方法。二实验类型 验证型三实验学时 2学时四实验原理及知识点1事务的基本概念2数据库恢复技术3数据库恢复策略4SQL Server 的恢复技术五实验环境1硬件设备要求:PC及其联网环境;2软件设备要求:Windows操作系统;MS SQL Server数据库管理系统。六实验内容及步骤-create deviceexec sp_addumpdevice disk, student_full, d:acmstudent_full.bak-full backupbackup database cldog to student_full with init-diff backupbackup database cldog to disk = d:acmstudent_diff.backwith noinit,differential-log backupbackup log cldog to disk = d:acmstudent_log.bak with noinit-full restorerestore database cldog from student_full执行命令前:执行命令后:-diff restorerestore database cldog from student_diff with norecovery-log restorerestore log cldog from student_log with recovery七实验总结通过这次实验学会了基本的数据库的备份与还原,了解了完全备份、差异备份和日志备份的差异,备份和恢复是一个经常使用的功能,感觉用的很不熟练,需要完全掌握还需多加练习。
展开阅读全文