2023年数据结构实验报告9_第1页
2023年数据结构实验报告9_第2页
2023年数据结构实验报告9_第3页
2023年数据结构实验报告9_第4页
2023年数据结构实验报告9_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

合肥师范学院实验报告册2023/2023学年第2学期系别计算机科学与技术系实验课程数据库原理专业计算机软件班级软件一班姓名罗晓薇学号指导教师潘洁珠ﻬ实验名称课时实验报告成绩实验(一)——数据库基本操作2实验(二)——SQL语句6实验(三)——数据库完整性与安全性实验4实验(四)——数据库编程4备注:实验一——数据库基本操作实验目的熟悉MSSQLSERVER运营界面,掌握服务器的基本操作。掌握界面操作方法完毕用户数据库建立、备份和还原。建立两个实验用的数据库,使用公司管理器和查询分析器对数据库和表进行基本操作。实验预习内容在认真阅读教材及实验指导书的基础上,上机前请预习以下内容,并在空白处填写相应的环节或命令。熟悉SQLSERVER2023的运营环境,练习服务器基本操作:打开、停止、关闭。使用SQLSERVER2023中的公司管理器完毕以下任务。数据库名称: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指整型数据。建立数据库STC,分别建立以上三张表,并完毕数据录入。(表结构及数据参见教材)分析并建立各表的主码,用下划线在上面表结构中标出主码。建立各表之间的关联,请简述操作环节。答:2)3)参考实验指导书的【第5章数据库的备份和还原】,使用公司管理器对数据库STC进行备份,并尝试在个人电脑与机房电脑上进行还原,请简述备份、还原操作的环节。答:备份:右击STC数据库出现菜单,点击任务,选择还原操作,出现对话框后,输入备份名称backstc,在目的中选择添加,选择备份数据库所在位置,再点击拟定即可备份。还原:右击数据库,在所有任务中选择还原数据库,再新的对话框内输入所要还原数据库的名称,再选择从设备还原,按添加键,选择备份所在磁盘,选中备份,点击拟定还原数据库。在SQLSERVER2023的查询分析器中使用SQL语言完毕以下任务。参考实验指导书《数据库系统实验指导教程》【实验1.1数据定义】,建立数据库SCHOOL,分别建立students、teachers、courses、choices四张表,表结构见实验指导书P236【附录A】。用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),);为students表、courses建立按主键増序排列的索引,请写出相应的SQL命令。Createindexstusnoonstudents(snoasc);Createindexcoucnooncourses(cnoasc);删除course上的索引,请写出相应的SQL命令。Dropindexcoucno;在SCHOOL数据库中的students表中增长一个“出生日期”字段,类型为日期时间型,请写出相应的SQL命令。Altertablestudentsadd'出生日期'date;删除students中的“出生日期”字段,请写出相应的SQL命令。Altertablestudentsdropcolumn'出生日期';删除SCHOOL数据库中的students表,请写出相应的SQL命令。Droptablestudentscascade;使用公司管理器创建数据库SCHOOL,实现内容与实验预习内容3完全相同。使用公司管理器,将SCHOOL数据库分离出MSSQLSERVER,请简述环节。答:选中需要分离的数据库右击,所有任务菜单里有选项分离数据库,直接选择拟定.使用公司管理器,使用【数据库/所有任务/附加数据库】将SCHOOL数据库添加进SQLSERVER,并查看数据。图使用查询分析器,删除数据库STC,请写出相应的SQL命令。Deletedatabasestc;结束本次实验实验课后训练使用公司管理器练习数据的导入导出。将SCHOOL数据库students表中的数据导出到STC数据库相应的stu表中;向STC数据库courses表导入SCHOOL数据库courses表中的数据;自行练习实验指导书【实验5.3SQLSERVER数据库的导入与导出】部分;自行练习实验指导书【实验1.1数据定义】部分。答:1.1)2)实验报告简述本次实验所用到的SQL命令及其功能。答:1.创建数据库createdatabase<数据库名称>2.创建基本表createtable<表名>(<列名><数据类型>[列级完整性约束])3.建立表的索引createindex<索引名>on<表名>(<列名>[顺序])4.修改基本表altertable<表名>[add<新列名><数据类型>[完整性约束]]5.删除索引dropindex<索引名>6.删除表中某一属性altertable<表名>dropcolumn<列名>7.删除表droptable<表名>8.删除数据库deletedatabase<数据库名>在MSSQLSERVER中数据库的“分离|添加”与“备份|还原”是相同的功能吗?答:数据库的备份是数据库结构,对象和数据的副本,使得数据库系统发生事故时能还原和恢复数据库中的数据。实现快速的移动数据库。将数据库的附加的逆过程,就是把完整地数据库文献和日记文献从服务器上分离下来,分离后的数据库文献在拷贝和移动后可以附加在其他的计算机上,附加是分离的逆过程。实验总结(实验过程中出现的问题、解决方法、结果如何或其它)答:问题:在附加数据库时数据不是sqlserver能用的数据头,没有认清字符型的概念,即字符出生日期应输入'出生日期'。删除数据库时应用delete语句,而不是drop语句,当导入数据时,要注意两个对话框的用处不同。解决方法:两个对话框一个是需导入的数据库,另一个是从哪儿导入数据库,和是否是在需导入的数据库还是在要导出的数据库库中操作无关。ﻬ实验二——SQL语句实验目的熟悉SQL的数据查询语言,能使用SQL进行单表查询、连接查询、嵌套查询、集合查询和记录查询,能理解空值的解决;熟悉数据库的数据更新操作,能使用SQL语句对数据库进行数据的插入、更新、删除操作;熟悉SQL支持的有关视图的操作,能创建、查询及取消视图;了解NULL在数据库中的特殊含义,掌握使用SQL进行与空值相关的操作;实验预习内容在认真阅读教材及实验指导书【实验1.2数据查询】、【实验1.3数据更新】、【实验1.4视图】和【实验1.6空值和空集的解决】的基础上,上机前请预习以下内容,并在空白处填写相应的环节或命令。使用SCHOOL数据库,在SQLSERVER2023的查询分析器中使用SQL语言完毕以下操作。请在空白处填写相应的SQL命令。查询年级为2023的所有学生的名称,按编号升序排列;selectsnamefromstudentswheregrade=2023orderbysidasc查询所有课程名称中具有data的课程编号;selectcidfromcourseswherecnamelike'%data%'记录所有老师的平均工资;selectavg(salary)fromteachers查询至少选了3门课的学生编号;selectsidfromchoicesgroupbysidhavingcount(*)>=3;查询学号为80009026的学生的姓名、所选课名及成绩;selectchoices.sname,cname,scorefromstudents,choices,courseswherechoices.cid=courses.cidandchoices.sid=students.sidandsid=’80009026查询没有学生选的课程编号;selectcourses.cidfromchoices,courseswherechoices.cid=courses.cidandsidisnull;查询既选了C++又选了Java课程的学生编号;selectsidfromchoices,courseswherecourses.cid=choices.cidandcourses.cname='c++'andsidin(selectsidfromchoices,courseswherecourses.cid=choices.cidandcname='java')查询选了C++但没选Java课程的学生编号;selectsidfromchoices,courseswherecourses.cid=choices.cidandcname='c++'andsidnotin(selectsidfromchoices,courseswherechoices.cid=courses.cidandcname='java')向STUDENTS表中插入“LiMing”的个人信息(编号:,名字:LiMing,Email:HYPERLINK"mailto:",年级:1992);selectsidfromchoices,courseswherecourses.cid=choices.cidandcname='c++'andsidnotin(selectsidfromchoices,courseswherechoices.cid=courses.cidandcname='java')将“LiMing”的年级改为2023;updatestudentssetgrade=2023wheresname='liming'删除所有选了Java课程的学生选课记录;deletefromchoiceswhere'java'=(selectcnamefromcourseswherecourses.cid=choices.cid)求出每门课的课程号、选课人数,结果存入数据库表T1中。createtablet1(cidchar(10)primarykey,rsint)insertintot1selectcid,count(sid)fromchoicesgroupbycid查询所有选课记录的成绩并换算为五分制(注意NULL的情况);selectscore,score/20fromchoices查询成绩小于0的选课记录,记录总数、平均分、最大值和最小值(注意查询结果中NULL的情况);selectcount(*),avg(score),max(score),min(score)fromchoiceswherescore<0按成绩顺序排序显示CHOICES表中所有记录。(使用ORDERBY排序,注意NULL的情况);select*fromchoicesorderbyscoreasc创建视图V1,显示学生姓名、所选课名称、任课教师名;createviewv1(sname,cname,tname)asselectstudents.sname,courses.cname,teachers.tnamefromchoices,students,teachers,courseswherechoices.tid=teachers.tidandchoices.cid=courses.cidandchoices.sid=students.sid取消V1视图;dropviewv1使用STC数据库,在SQLSERVER2023的查询分析器中使用SQL语言完毕以下操作。请在空白处填写相应的SQL命令或其它内容。创建视图V2,显示计算机(CS)系学生信息;(结合下面的b)小题,V2视图创建2次,分别使用/不使用WITHCHECKOPTION选项)(1)不加WITHCHECKOPTION(2)加WITHCHECKOPTIONCreateviewv2(sno,sname,ssex,sage,sdept)asselect*fromstuwheresdept='cs'Createviewv2(sno,sname,ssex,sage,sdept)asselect*fromstuwheresdept='cs'Withcheckoption插入元组(99999,张三,20岁,男,PH)到V2中,运营结果如何?(观测WITHCHECKOPTION对结果的影响);(1)不加WITHCHECKOPTION的结果(2)加WITHCHECKOPTION的结果Insertintov2values('99999','张三','男','20','ph')Insertintov2values('99999','张三','男','20','ph')withcheckoption违反了PRIMARYKEY约束'PK__STU__76CBA758'。在V2基础上,查询所有计算机系女生信息;select*fromviewv2wheressex='女'结束本次实验实验课后训练掌握SQLSERVER中流控制语句及其它常用编程语句;使用查询分析器,编写代码,输出乘法口诀表。自行练习实验指导书P24【实验1.2数据查询】1.2.5自我实践部分;自行练习实验指导书P30【实验1.3数据更新】1.3.5自我实践部分;自行练习实验指导书P36【实验1.4视图】1.4.5自我实践部分;自行练习实验指导书P49【实验1.6空值和空集的解决】1.6.5自我实践部分;答:1.Select*fromcoursesselectsidfromchoicesSelectcidfromcourseswherehour<88

实验报告1.SQLSERVER中变量声明的命令是什么?输出命令是什么?答:变量声明的命令:declare@变量名类型,局部变量的声明命令为declare@<局部变量名1><类型及宽度>@<局部变量名2><类型及宽度>;而全局变量的声明命令,必须以标记符@@开头。输出命令:print局部变量或字符串;select局部变量as自定义列名2.SQLSERVER中实现分支和循环的语句分别是什么?答:实现分支语句:if-else语句和case-end语句;if-else语句属于分支结构,它与C编程语句的if语句类似,也是根据条件是否成立来拟定程序的执行方向。语法:If(条件)语句或语句块Elsecase-end语句计算一组条件表达式,并返回其中一个符合条件的结果。语法:CaseWhen条件1then结果1When条件2then结果2[else其他结果]EndCase语句表达结果“条件1”成立,则执行“结果1”,其余类推。假如when的条件都不匹配,则执行else后面的结果。实现循环的语句:while循环语句:while循环语句可以根据某些条件反复执行一条SQL语句或一个语句块。通过使用while关键字,可以保证只要制定的条件为TRUE,就会反复执行语句,直至指定条件为FALSE为止:语法:While(条件)Begin语句或语句块[break|continue]End3.在SQLSERVER里使用ORDERBY排序时,NULL值如何解决?使用GROUPBY分组时,NULL值又如何解决的?答:使用ORDERBY排序,此时null值往前排,null被看做最小值解决。使用GROUPBY排序,此时取null的看做一组,是同一个值。4.实验总结(实验过程中出现的问题、解决方法、结果如何或其它)问题:1.进行联接操作时,连接条件,及各表同属性分不大清。2.对多个条件,多张表的查询,联接时连接条件的先后顺序总是弄错。3.对两个条件选其一的情况,不是很能掌握。4.当查询具有某一特性的复杂的元组的信息时只会最基础的按条件来,不灵活。解决办法:先将要查的信息及其有关的表列出来,再考虑他们之间的关系,先做什么后做什么理清楚,两个情况选一种满足可以用in或其他形式表达,与运算用union,分类可以用groupby或者having语句来表达条件。结果:很有效,但是在通常在查询中需要做联接运算的列名没有加表名前缀,导致查询没故意义。

实验三——数据库完整性与安全性实验目的理解实体完整性、参照完整性、用户自定义完整性的概念,学习三类完整性的实现,了解违反完整性的结果;掌握MSSQLSERVER中的有关用户登录认证及管理方法,纯熟使用自主存取控制进行权限管理;实验预习内容在认真阅读教材及实验指导书【2.1实体完整性】、【2.2参照完整性】、【2.3用户自定义完整性】、【2.4触发器】、【2.5综合案例】和【3.1用户标记与鉴别】、【3.2自主存取控制】、【3.3视图机制在自主存取控制上的应用】、【3.4Public角色在安全性中的应用】、【3.8综合案例】的基础上,上机前请预习以下内容,并在空白处填写相应的环节或命令。使用SCHOOL数据库创建一张新表CLASS,涉及Class_id(varchar(4)),Name(varchar(10)),Department(varchar(20))三个属性列,其中Class_id为主码;执行两次相同的插入操作(’0001’,’01csc’,’cs’使用SQL命令创建一张学生互助表,规定:涉及学生编号、学生姓名、学生帮助对象的编号,每个学生有且仅有一个帮助对象,帮助的对象必须是已存在的学生。使用STC数据库,修改设立,完毕以下2种不同的规定,请写出相应的语句或简述操作过程:当更新、删除STU表中记录时,若SC表中有此学生的记录,则拒绝;当更新、删除STU表中记录时,若SC表中有此学生的记录,则自动更新或删除;使用SQL命令完毕以下任务:创建Worker表(表结构见指导书P73)定义约束U1、U2,其中U1规定Name字段取值唯一,U2规定sage字段上限是28;插入一条合法记录;插入一条违反U2约束的记录,简述观测到的结果如何?并分析因素;去除U1约束;修改约束U2,令sage的值大于等于0;创建规则rule_sex,规定更新或插入的值只能是M或F,并绑定到Worker的sex字段;插入2条记录,一条满足规则rule_sex,一条违反规则,观测结果。使用查询分析器创建触发器并测试,请写出相应的语句:为Worker表创建触发器T1,当插入或更新表中数据时,保证所操作记录的sage大于0;为Worker表创建触发器T2,严禁删除编号为00001的记录;为Worker表创建触发器T3,规定更新一个记录时,表中记录的sage要比老记录的sage的值大。分别用公司管理器和查询分析器实现用户的标记并测试,请写出相应的操作过程或相应的语句:设立SQLSERVER的安全认证模式;建立名为“LiYong”的登录用户、数据库用户,默认访问SCHOOL数据库,密码为“abcd”;取消“LiYong”用户;先以sa帐号登录,要实现如下表的权限管理,请按先后顺序写出相应的SQL语句(假设所有用户尚未定义,其密码均

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论