数据库实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

134附录实验一数据描述、定义实验一、实验学时4学时。二、实验类型演示、设计类型。三、实验目的熟悉和掌握数据库的创建和连接方法;熟悉和掌握数据表的建立、修改和删除;加深对表的实体完整性、参照完整性和用户自定义完整性的理解。四、需用仪器、设备486以上微机;Windows95/97/98操作系统;安装了SQLServer2000/2005。五、实验准备1、熟悉SQLSERVER工作环境;2、复习有关表的建立、修改和删除的SQL语言命令。六、实验方法及步骤1、介绍有关SQLSERVER的图形界面工作环境。2、创建数据库或连接已建立的数据库。3、在当前数据库上建立新表。4、定义表的结构:(1)用SQL命令形式;(2)用SQLSERVER提供的企业管理器以交互方式进行。5、进一步定义表的主码,外码及在表上建立索引。6、将以上表的定义以.SQL文件的形式保存在磁盘上。7、修改表的结构。8、删除表的定义。七、实验内容背景材料:在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。1、创建学生-课程数据库;2、创建学生关系表Student;学号姓名性别年龄所在系SnoSnameSsexSageSdept3、创建课程关系Course;课程号课程名先行课学分CnoCnameCpnoCcredit4、创建课程关系表SC;学号课程号成绩SnoCnoGrade5、将以上创建表Student、Course、SC的SQL命令以.SQL文件的形式保存在磁盘上。6、在表Student上增加“出生日期”属性列。7、删除表Student的“年龄”属性列。8、在表Student上,按“Sno”属性列的唯一值方式建立索引。9、在表SC上,按“Grade”属性列的多值方式建立索引。10、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。11、选做:创建教材P74-75习题5、SPJ数据库中的四个关系S、P、J、SPJ。八、实验思考1、定义表结构是对数据模型的哪个要素进行描述,对主属性有什么要求?2、修改表结构时,能否修改已定义属性的参数?新增加的属性列能否定义为非空?为什么?3、分别在表Student、SC上按“sno”列的唯一值方式建立索引,可能出现问题吗?情况有什么区别?1354、能否在非主属性列上建立索引?其恰当的方式是什么?九、问题1、在表的定义中,如何确定属性是NOTNULL/NULL(主码,关键字,主属性/非主属性)?2、能否将Student、Course、SC表单独以一个数据文件的形式保存在磁盘上?3、在表Student的“SNO”,“SNAME”属性上分别按唯一值方式建立索引和在Student的“SNO”,“SNAME”上唯一值方式建立联合索引有无区别?4、要修改主属性的定义,正确的方式是什么?136实验二数据查询实验一、实验学时6学时。二、实验类型综合类型。三、实验目的熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL语句的各种形式;加深理解关系运算的各种操作(尤其是关系的选择,投影,连接和除运算)。四、需用仪器、设备486以上微机;Windows95/97/98操作系统;安装了SQLServer2000/2005。五、实验准备1、熟悉SQLSERVER工作环境;2、连接到学生-课程数据库;3、复习对表中数据查询的SQL语言命令。六、实验方法及步骤1、在表Student、Course、SC上进行简单查询;2、在表Student、Course、SC上进行连接查询;3、在表Student、Course、SC上进行嵌套查询;4、使用聚合函数的查询;5、对数据的分组查询;6、对数据的排序查询。七、实验内容在表Student、Course、SC上完成以下查询:1、查询学生的基本信息;select*fromStudent2、查询“CS”系学生的基本信息;select*fromStudentwheresdept='cs'3、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;selectsno,snamefromStudentwheresagenotbetween19and214、找出最大年龄;selectmax(sage)fromStudent5、找出“CS”系年龄最大的学生,显示其学号、姓名;selectsno,snamefromStudentwheresdept='cs'andsage=(selectmax(sage)fromStudentwheresdept='cs')6、找出各系年龄最大的学生,显示其学号、姓名;(1)方法一可用查询和连接来做此题。selectSno学号,Sname姓名fromStudentjoin(selectmax(Sage)Sage,SdeptfromStudentgroupbySdept)asaon(a.Sage=Student.Sageanda.Sdept=Student.Sdept)137(2)方法二可用视图来做此题。createviewms(sdept,sage)asselectsdept,max(sage)sagefromStudentgroupbysdeptselectsno,snamefromStudent,mswhereStudent.sdept=ms.sdeptandStudent.sage=ms.sage7、统计“CS”系学生的人数;selectcount(sno)fromStudentwheresdept='cs'8、统计各系学生的人数,结果按升序排列;(1)方法一selectsdept,count(sno)snumfromStudentgroupbysdeptorderbysnumasc(2)方法二selectsdept,count(*)fromStudentgroupbysdeptorderbycount(*)asc9、按系统计各系学生的平均年龄,结果按降序排列;selectsdept,avg(sage)avgagefromStudentgroupbysdeptorderbyavgagedesc10、查询每门课程的课程名;selectcnamefromCourse11、查询无先修课的课程的课程名和学分数;selectcname,ccreditfromCoursewherecpnoisnull12、统计无先修课的课程的学分总数;selectsum(ccredit)fromCoursewherecpnoisnull13、统计每位学生选修课程的门数、学分及其平均成绩;selectcount(SC.cno)snum,sum(Course.ccredit)scredit,avg(sc.grade)avggradefromSC,CoursewhereSC.cno=Course.cnogroupbySC.sno14、统计选修每门课程的学生人数及各门课程的平均成绩;selectcount(sno)snum,avg(grade)avggradefromSCgroupbycno13815、找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列;(1)方法一可用视图与查询来做此题。createviewavgs1asselectsno,avg(grade)avggradefromSCgroupbysnoselectStudent.sno,sname,sdept,avggradefromavgs1,studentwhereavggrade=85andstudent.sno=avgs.snoorderbysdept,avggrade(2)方法二可用查询来做此题。selectstudent.sno学号,sdept系,avg(grade)平均成绩fromsc,studentwheresc.sno=student.snogroupbystudent.sdept,student.snohavingavg(grade)=85orderbyavg(grade)asc16、查询选修了“1”或“2”号课程的学生学号和姓名;(1)方法一可用查询语句和OR操作来实现。selectdistinctStudent.sno,snamefromSC,StudentwhereSC.sno=Student.snoand(cno='1'orcno='2')(2)方法二可用Union(并)来实现。selectStudent.sno,snamefromSC,StudentwhereSC.sno=Student.snoandcno='1'unionselectStudent.sno,snamefromSC,StudentwhereSC.sno=Student.snoandcno='2'17、查询选修了“1”和“2”号课程的学生学号和姓名;(1)方法一selectstudent.sno,snamefromStudentwheresnoin(selectsnofromSCwherecno='1'andsnoin(selectsnofromSCwherecno='2'))(2)方法二selectsc.sno学号,sname姓名fromsc,studentwherecno='1'andsc.snoin(selectsc.snofromscwherecno='2'andsc.sno=student.sno)18、查询选修了课程名为“数据库”且成绩在60分以下的学生的学号、姓名和成绩;selectStudent.sno,sname,grade139fromSC,Student,Coursewherecname='数据库'andgrade60andSC.sno=Student.snoandSC.cno=Course.cno19、查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);selectStudent.sno,sname,SC.cno,Course.cname,gradefromSC,Student,CoursewhereSC.sno=Student.snoandSC.cno=Course.cno20、查询没有选修课程的学生的基本信息;(1)方法一selectStudent.sno,sname,ssex,sage,sdeptfromSC,Course,StudentwhereStudent.snonotin(selectSC.snofromSC,Course,StudentwhereSC.sno=Student.snoandSC.cno=Course.cno)(2)方法二可用左外连接来实现。selectstudent.sno,sname,ssex,sage,sdeptfromstudentleftouterjoinscon(student.sno=sc.sno)wherecnoisnull21、查询选修了3门以上课程的学生学号;selectsnofromSCgroupbysnohavingcount(*)322、查询选修课程成绩至少有一门在80分以上的学生学号;selectdistinctsnofromSCwheregrade8023、查询选修课程成绩均在80分以上的学生学号;(1)方法一selectdistinctsnofromSCwheresnonotin(selectsnofromSCwheregrade=80)(2)方法二聚集函数min来实现。selectsno学号fromscgroupbysnohavingmin(grade)8024、查询选修课程平均成绩在80分以上的学生学号;selectsnofromSCgroupbysnohavingavg(grade)8025、选做:针对SPJ数据库中的四个表S,P,J,SPJ,完成教材P74-75--习题5中的查询及教材P127--习题5中的查询。140实验三数据更新实验一、实验学时2学时。二、实验类型综合、设计类型。三、实验目的熟悉和掌握数据表中数据的插入、修改、删除操作和命

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功