数据库实验

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

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

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

资源描述

实验一SQLSERVER2000的基本使用【实验目的】熟悉SQLSERVER2000的基本使用【实验学时】9学时【实验类型】综合型【实验环境】SQLServer2000【实验人数】1人/组【实验内容及要求】实验前应启动本机的SQLServer服务,其方法为:选择“程序”下“MicrosoftSQLServer”下的“服务管理器”,启动数据库服务。1.连接数据库(1)打开企业管理器,然后点击添加新服务器按钮。(2)在打开的注册向导中点击“下一步”。(3)在注册SQLServer向导中输入可用的服务器(可以输入服务器的ip,也可以从下面列表中选择局域网内的服务器)并添加到右边的列表框中,单击“下一步”。(4)在注册SQLServer向导中选择“SQLServer身份验证”,单击下一步。(5)在注册SQLServer向导中输入帐号和密码,单击下一步。(6)按照默认设置单击“下一步”一直到“完成”,在界面左侧的树状列表中可以看到刚建立的连接。2.建立数据库(1)点开界面左侧的树目录,然后选中某个连接下的“数据库”项。(2)在“数据库”上单击鼠标右键,选择“新建数据库”。(3)在弹出的对话框中输入数据库的名称,数据库及日志文件的位置等设置。(4)单击“确定”按钮完成数据库的创建。3.创建表(1)点开界面左侧的树目录,然后选中某个连接下的某个具体数据库。(2)点开具体数据库前的“+”号,在“表”上单击鼠标右键,并选择“新建表”。(3)在弹出的界面中输入列的名称、类型等相关信息,点击“保存”并输入表的名称。4.修改表及读、写表(1)点开界面左侧的树目录,然后选中某个连接下的某个具体数据库。(2)点开具体数据库前的“+”号,在“表”上单击鼠标左键。(3)在右边罗列出该数据库下的所有数据表,选中某个数据表并在上面单击鼠标右键,选择“设计表”就可以修改数据表的设置。(4)选中某个数据表并在上面单击鼠标右键,选择“打开表”下的“返回所有行”就可以增、删、改表中的数据。5.设置主键在设计表的界面中(新建或修改表时),点击行首选中一行,然后单击“设置主键”按钮,即可以把某一列设为主键。如果要设置多列为主键,则可以配合键盘的Ctrl和Shift键选中多行。6.设置外键(1)在设计表的界面中,选择“管理关系”按钮。(2)在弹出的对话框中选择“关系”标签页。(3)单击“新建”按钮,并输入主键表、外键表及对于的列和名称等相关设置。(4)单击“关闭”按钮完成外键的设置。7.查看数据库逻辑结构(1)点开界面左侧的树目录,然后选中某个连接下的某个具体数据库。(2)点开具体数据库前的“+”号,在“关系图”上单击鼠标左键。(3)选择“新建数据库关系图”,并点击“下一步”。(4)把需要显示的表添加到关系图中。(5)点击“下一步”,并在提示窗口中点击“完成”,就可以从关系图中看到所选表的主键、外键及相互关系。8.使用查询分析器查询分析器可以用来执行输入的SQL语句,使用方法如下:选中某个具体的数据库,然后选择“工具”菜单下的SQL查询分析器,在打开的界面中即可以输入SQL语句并执行和查看执行结果。在查询分析器工具栏上的下列列表中可以选择SQL语句执行的具体数据库。9.用SQL语句和企业管理器建立如下的表结构并输入数据学生表:student(主键Sno)学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept95001李勇男20CS95002刘晨女21IS95003王敏女18MA95004张力男19IS课程表:Course(主键Cno)课程号Cno课程名Cname先行课Cpno学分Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64选课表:SC(主键Sno,Cno,外部键Sno,Cno)学号Sno课程表Cno成绩Grade950011929500128595001388950022909500338595003359实验二SQL语言的基本操作【实验目的】掌握利用SQL语句完成各种查询操作的能力。【实验学时】9学时【实验类型】综合型【实验环境】SQLServer2000【实验人数】1人/组【实验内容及要求】给定表结构如下:学生表:student(主键Sno)学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept95001李勇男20CS95002刘晨女21IS95003王敏女18MA95004张力男19IS课程表:Course(主键Cno)课程号Cno课程名Cname先行课Cpno学分Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64选课表:SC(主键Sno,Cno,外部键Sno,Cno)学号Sno课程表Cno成绩Grade950011929500128595001388950022909500238595003359用SQL语句完成一下的要求:1.查询信息系(IS)的所有学生信息select*fromStudentwhereSdept='IS'2.查询选修了“数学”课的所有学生名单selectStudent.Sno,Student.SnamefromStudent,Course,SCwhereCourse.Cname='数学'andCourse.Cno=SC.CnoandSC.Sno=Student.Sno3.查询至少选修了一门其直接先行课为5号课程的学生的姓名。selectSnamefromstudent,SC,CoursewhereCourse.Cpno='5'andSC.Cno=Course.CnoandSC.Sno=student.Sno4.查询全体学生的姓名和出生年份。selectSnameNAME,'Yearofbirth'BIRTH,2007-SageBIRTHDAYfromstudent5.查询所有姓王的学生。selectSnamefromstudentwhereSnamelike'王%'6.查询选修了3号课程的学生姓名及成绩,并按成绩降序排序。SELECTSname,Gradefromstudent,SCwhereCno='3'andSC.Sno=student.SnoorderbyGradedesc7.查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。select*fromstudentorderbySdeptasc,Sagedesc8.计算2号课程的平均成绩。selectavg(Grade)avg2fromSCwhereCno='2'9.查询选修了2号课程的学生的最高成绩。selectmax(Grade)fromSCwhereSC.Cno='2'10.求各个课程号及相应的选课人数。selectCno,count(Sno)fromSCgroupbyCno11.查询至少选修了3门课程以上的学生学号。selectSnofromSCgroupbySnohavingcount(Cno)=312.查询“数据库”的间接先行课。selectCnamefromCoursewhereCno=(selectCpnofromCoursewhereCno=(selectCpnofromCoursewhereCname='数据库'));13.查询平均成绩最高的学生的学号和姓名。selectSno,SnamefromStudentwhereSno=(selecttop1SnoasavgfromSCgroupbySnoorderbyavg(Grade)DESC);14.查询数学成绩最高的学生的学号和姓名。selectstudent.Sno,student.Snamefromstudent,SCwherestudent.Sno=SC.SnoandSC.Grade=(selectmax(Grade)fromSC,CoursewhereCourse.Cname='数学'andSC.Cno=Course.Cno)15.查询出成绩最低学号最大的学生学号。selecttop1SnofromSCgroupbySnoorderbyavg(Grade)desc,Snoasc16.查询成绩高于学生平均成绩的记录。selectdistinctSnofromSCxwhereGrade=(selectavg(Grade)fromSCywherey.Sno=x.Sno)17.查询至少选修了1号课程和3号课程的学生学号。selectSnofromSCwhereCno='1'andSnoin(selectSnofromSCwhereCno='3')18.查询只选修了1号课程和3号课程的学生学号。selectSnofromSCwhereCno='1'andSnoin(selectSnofromSCwhereCno='3'andnotexists(selectSnofromSCwhereCno!='1'andCno!='3'))19.查询没有选修1号课程的学生姓名。selectdistinctSnofromSCxwherenotexists(selectSnofromSCywherex.Sno=y.SnoandCno='1')20.查询选修了全部课程的学生姓名。selectSnamefromStudentwhereSno=(selectSnofromSCwherenotexists(selectCnofromCoursewhereCno!=SC.Cno))21.查询至少选修了95002所选修的全部课程的学生学号。selectdistinctSnofromSCxwherenotexists(select*fromSCywherey.Sno='200215122'andnotexists(select*fromSCzwherez.Sno=x.Snoandz.Cno=y.Cno))22.查询没有不及格课程的学生的学号和姓名。selectSno,SnamefromStudentwhereSnonotin(selectSnofromSCwhereGrade60);23.查询没有不及格学生的课程的课程号和课程名。selectdistinctCourse.Cno,CnamefromCourse,SCwhereCourse.Cno=SC.CnoandCourse.Cnonotin(selectCnofromSCwhereGrade60)24.建立信息系学生视图,并从视图中查询年龄最大的学生记录。建立视图:createviewIS_studentasselect*fromstudentwheresdept='IS'查询信息:select*fromIS_studentwheresage=(selectmax(sage)fromIS_student)

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

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

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

×
保存成功