合肥师范学院实验报告册2013/2014学年第2学期系别计算机科学与技术系实验课程数据库原理专业计算机软件班级软件一班姓名罗晓薇学号1211431015指导教师潘洁珠实验名称课时实验报告成绩实验(一)——数据库基本操作2实验(二)——SQL语句6实验(三)——数据库完整性与安全性实验4实验(四)——数据库编程4备注:《数据库原理》实验班级:学号:姓名:1实验一——数据库基本操作一、实验目的1.熟悉MSSQLSERVER运行界面,掌握服务器的基本操作。2.掌握界面操作方法完成用户数据库建立、备份和还原。3.建立两个实验用的数据库,使用企业管理器和查询分析器对数据库和表进行基本操作。二、实验预习内容在认真阅读教材及实验指导书的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。1.熟悉SQLSERVER2000的运行环境,练习服务器基本操作:打开、停止、关闭。2.使用SQLSERVER2000中的企业管理器完成以下任务。数据库名称:STC表:STU(snochar(9),snamevarchar(50),ssexchar(2),sageint,sdeptchar(2));COUTSES(cnochar(3),cnamevarchar(50),cpnochar(3),creditint);SC(snochar(9),cnochar(3),gradeint);说明:以上为表结构,以snochar(9)为例,说明sno属性设置为字符类型,宽度为9,int指整型数据。1)建立数据库STC,分别建立以上三张表,并完成数据录入。(表结构及数据参见教材)2)分析并建立各表的主码,用下划线在上面表结构中标出主码。3)建立各表之间的关联,请简述操作步骤。答:1)《数据库原理》实验班级:学号:姓名:22)3)4)参考实验指导书的【第5章数据库的备份和还原】,使用企业管理器对数据库STC进行备份,并尝试在个人电脑与机房电脑上进行还原,请简述备份、还原操作的步骤。答:备份:右击STC数据库出现菜单,点击任务,选择还原操作,出现对话框后,输入备份名称backstc,在目标中选择添加,选择备份数据库所在位置,再点击确定即可备份。还原:右击数据库,在所有任务中选择还原数据库,再新的对话框内输入所要还原数据库的名称,再选择从设备还原,按添加键,选择备份所在磁盘,选中备份,点击确定还原数据库。3.在SQLSERVER2000的查询分析器中使用SQL语言完成以下任务。《数据库原理》实验班级:学号:姓名:3参考实验指导书《数据库系统实验指导教程》【实验1.1数据定义】,建立数据库SCHOOL,分别建立students、teachers、courses、choices四张表,表结构见实验指导书P236【附录A】。1)用SQL语言创建数据库、建表。建表时为各表建立关键字、设置外码,数据暂不录入,请写出对应的SQL命令。创建数据库Createdatabasestc;Createtablestudents(sidchar(10)uniqueprimarykey,Snamechar(30)notnull,Emailchar(30),Gradeint,);创建教师表Createtableteachers(tidchar(10)uniqueprimarykey,Tnamechar(30)notnull,Emailchar(30),Salaryint,);创建课程表Createtablecourses(cidchar(10)uniqueprimarykey,Cnamechar(30)notnull,Hourint,);创建选课表Createtablechoices(nochar(10)uniqueprimarykey,Sidchar(10)notnull,Tidchar(10),Cidchar(10),Scoreint,Foreignkey(sid)referencesstudents(sid),Foreignkey(tid)referencesteachers(tid),Foreignkey(cid)referencescourses(cid),);2)为students表、courses建立按主键増序排列的索引,请写出相应的SQL命令。Createindexstusnoonstudents(snoasc);Createindexcoucnooncourses(cnoasc);《数据库原理》实验班级:学号:姓名:43)删除course上的索引,请写出相应的SQL命令。Dropindexcoucno;4)在SCHOOL数据库中的students表中增加一个“出生日期”字段,类型为日期时间型,请写出对应的SQL命令。Altertablestudentsadd'出生日期'date;5)删除students中的“出生日期”字段,请写出对应的SQL命令。Altertablestudentsdropcolumn'出生日期';6)删除SCHOOL数据库中的students表,请写出对应的SQL命令。Droptablestudentscascade;4.使用企业管理器创建数据库SCHOOL,实现内容与实验预习内容3完全相同。5.使用企业管理器,将SCHOOL数据库分离出MSSQLSERVER,请简述步骤。答:选中需要分离的数据库右击,所有任务菜单里有选项分离数据库,直接选择确定.6.使用企业管理器,使用【数据库/所有任务/附加数据库】将SCHOOL数据库添加进SQLSERVER,并查看数据。图《数据库原理》实验班级:学号:姓名:5《数据库原理》实验班级:学号:姓名:67.使用查询分析器,删除数据库STC,请写出对应的SQL命令。Deletedatabasestc;8.结束本次实验三、实验课后训练1.使用企业管理器练习数据的导入导出。1)将SCHOOL数据库students表中的数据导出到STC数据库对应的stu表中;2)向STC数据库courses表导入SCHOOL数据库courses表中的数据;3)自行练习实验指导书【实验5.3SQLSERVER数据库的导入与导出】部分;2.自行练习实验指导书【实验1.1数据定义】部分。答:1.1)《数据库原理》实验班级:学号:姓名:72)实验报告1.简述本次实验所用到的SQL命令及其功能。答:1.创建数据库createdatabase数据库名称2.创建基本表createtable表名(列名数据类型[列级完整性约束])3.建立表的索引createindex索引名on表名(列名[次序])4.修改基本表altertable表名[add新列名数据类型[完整性约束]]5.删除索引dropindex索引名6.删除表中某一属性altertable表名dropcolumn列名7.删除表droptable表名8.删除数据库deletedatabase数据库名2.在MSSQLSERVER中数据库的“分离|添加”与“备份|还原”是相同的功能吗?答:数据库的备份是数据库结构,对象和数据的副本,使得数据库系统发生事故时能还原和恢复数据库中的数据。实现快速的移动数据库。将数据库的附加的逆过程,就是把完整地数据库文件和日志文件从服务器上分离下来,分离后的数据库文件在拷贝和移动后可以附加在其他的计算机上,附加是分离的逆过程。《数据库原理》实验班级:学号:姓名:83.实验总结(实验过程中出现的问题、解决方法、结果如何或其它)答:问题:在附加数据库时数据不是sqlserver能用的数据头,没有认清字符型的概念,即字符出生日期应输入'出生日期'。删除数据库时应用delete语句,而不是drop语句,当导入数据时,要注意两个对话框的用处不同。解决方法:两个对话框一个是需导入的数据库,另一个是从哪儿导入数据库,和是否是在需导入的数据库还是在要导出的数据库库中操作无关。《数据库原理》实验班级:学号:姓名:9《数据库原理》实验班级:学号:姓名:10实验二——SQL语句一、实验目的1.熟悉SQL的数据查询语言,能使用SQL进行单表查询、连接查询、嵌套查询、集合查询和统计查询,能理解空值的处理;2.熟悉数据库的数据更新操作,能使用SQL语句对数据库进行数据的插入、更新、删除操作;3.熟悉SQL支持的有关视图的操作,能创建、查询及取消视图;4.了解NULL在数据库中的特殊含义,掌握使用SQL进行与空值相关的操作;二、实验预习内容在认真阅读教材及实验指导书【实验1.2数据查询】、【实验1.3数据更新】、【实验1.4视图】和【实验1.6空值和空集的处理】的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。1.使用SCHOOL数据库,在SQLSERVER2000的查询分析器中使用SQL语言完成以下操作。请在空白处填写相应的SQL命令。1)查询年级为2001的所有学生的名称,按编号升序排列;selectsnamefromstudentswheregrade=2001orderbysidasc2)查询所有课程名称中含有data的课程编号;selectcidfromcourseswherecnamelike'%data%'3)统计所有老师的平均工资;selectavg(salary)fromteachers4)查询至少选了3门课的学生编号;selectsidfromchoicesgroupbysidhavingcount(*)=3;《数据库原理》实验班级:学号:姓名:115)查询学号为80009026的学生的姓名、所选课名及成绩;selectchoices.sname,cname,scorefromstudents,choices,courseswherechoices.cid=courses.cidandchoices.sid=students.sidandsid=’80009026’6)查询没有学生选的课程编号;selectcourses.cidfromchoices,courseswherechoices.cid=courses.cidandsidisnull;7)查询既选了C++又选了Java课程的学生编号;selectsidfromchoices,courseswherecourses.cid=choices.cidandcourses.cname='c++'andsidin(selectsidfromchoices,courseswherecourses.cid=choices.cidandcname='java')8)查询选了C++但没选Java课程的学生编号;selectsidfromchoices,courseswherecourses.cid=choices.cidandcname='c++'andsidnotin(selectsidfromchoices,courseswherechoices.cid=courses.cidandcname='java')《数据库原理》实验班级:学号:姓名:129)向STUDENTS表中插入“LiMing”的个人信息(编号:700045678,名字:LiMing,Email:LX@cdemg.com,年级:1992);selectsidfromchoices,courseswherecourses.cid=choices.cidandcname='c++'andsidnotin(selectsidfromchoices,courseswherechoices.cid=courses.cidandcname='java')10)将“LiMing”的年级改为2002;updatestudentssetgrade=2002wheresname='liming'11)删除所有选了Java课程的学生选课记录;deletefromchoiceswhere'java'=(selectcnamefromcourseswherecourses.cid=choices.cid)12)求出