1、数据库实验三四实验三、四 SQL语言应用一、实验目的:熟练掌握基本表的定义、删除与修改,为后继学习作准备。二、实验属性(验证性)1、了解并掌握SQL查询分析器及企业管理器的使用;2、掌握基本表的定义、删除与修改。三、实验要求(预习、实验前、实验中、实验后等要求)1预习教材第三章,熟悉SQL语句。 2熟悉.net、Java、PowerBuilder和Delphi 开发环境。3能够熟练掌握.net、Java、PowerBuilder和Delphi环境下的数据库的编程。4掌握单表查询语句的一般格式。;5掌握单表无条件、有条件查询及查询结果排序与分组。6掌握多表连接、嵌套和集合查询语句的一般格式及各种
2、使用方法。 四、 实验原理 SQL语言应用。五、实验步骤:(1)启动Oracle的SQL Developer或者SQL Plus,或者SQL Server 查询分析器;(2)对于Oracle11g的SQL Plus需要进行登录,对于Oracle11g的SQL Developer需要进行建立连接。A、单表查询1 无条件查询例2.1 查询全体学生的详细记录。Select * from turing1.student;例2.2 查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。select Sname,Sno,Sdeptfrom turing1.student;例2.3 查询全
3、体学生的姓名(Sname)、出生年份及学号(Sno)。例2.4 查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。例2.5 查询选修了课程的学生学号。select sno from turing1.sc;2 条件查询例2.6 查询数学系全体学生的学号(Sno)和姓名 (Sname)。例2.7 查询所有年龄在1822岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。select sno,sagefrom turing1.studentwhere sage between 18 and 22;例2.9 查询年龄不在18-22岁之间的学生姓名(Sname)及年
4、龄(Sage)。例2.10 查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。例2.11 查询既不是信息系、数学系、也不是计算机系的学生的姓名(Sname)和性别(Ssex)。select sname,ssexfrom turing1.studentwhere sdept not in (电气学院,数理学院,计科系);例2.12 查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。例2.13 查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。select sname,sdeptfrom turing1.st
5、udentwhere sname like 刘_;例2.14 查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。例2.15 查询课程名为“DB_设计”的课程号(Cno)和学分(Ccredit)。select cno,ccreditfrom turing1.coursewhere cname like 数据库原理及应用;例2.16 查询以DB_开头,且倒数第2个汉字字符为“设”的课程的详细情况。select *from turing1.coursewhere cname like DB_%设_ escape ;例2.17 假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩
6、。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。例2.18 查询所有有成绩的学生学号(Sno)和课程号(Cno)。其命令为:select sno,cno from scwhere grade is not null;3 查询结果排序例2.19 查询选修了*号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。select sno,gradefrom turing1.scwhere cno=0811024order by grade desc;例2.20 查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。E、综
7、合应用 例1、查询每个同学应该选修的课程门数及学分数。例2、查询平均成绩大于学号*学生平均成绩的所有学生的姓名。例4、查询每一位同学的平均成绩及选修课程的门数。例5、查询李大鹏同学所属系的每一位同学的平均成绩及选修课程的门数。例6、查询平均成绩大于60分的所有学生的平均成绩,要求打印出学生的“学号”、“姓名”和“平均成绩”,并按平均成绩降序排列。例7、查询李大鹏同学所学课程门数及平均成绩(该题为例8做准备)。例8、查询平均成绩大于李大鹏同学平均成绩的所有学生的学号、姓名和平均成绩。例9、查询选修课程门数和平均成绩都大于李大鹏同学所选课程门数和平均成绩的所有的学生姓名。例10、查询数据结构课程的
8、成绩大于全班平均成绩的学生姓名。例11、查询数据结构课程的成绩大于全班平均成绩的学生姓名、本人的数据结构成绩及全班的平均成绩。例12、查询所有选修课程的成绩大于全班平均成绩的学生姓名、课程名、本课程成绩。select distinct sname,grade,cnamefrom turing.student,turing.course,turing.sc,(select avg(grade) as agfrom turing.sc,turing.coursewhere o=ogroup by cname)tempwhere (student.sno=sc.sno)and o=oand (gra
9、detemp.ag)order by sname;例13、查询计科系年龄最大的学生姓名。例14、查询选修了计算机网络课程的学生姓名及该课程的成绩,要求分别使用外连接、左外连接、右外连接、内连接、嵌套查询、复合条件查询实现。例15、查询选修了计算机网络课程这些学生的选课门数及平均成绩。例16、查询选修了计算机网络课程且成绩高于该课程平均成绩的学生姓名及成绩。例17、查询选修了计算机网络课程且成绩高于该课程平均成绩的学生姓名、计算机网络课程成绩、计算机网络课程平均成绩。select distinct sname,grade,temp.agfrom turing.student,turing.sc,turing.course,(select avg(grade)as agfrom turing.sc,turing.coursewhere o=oand cname=计算机网络group by cname)tempwhere student.sno=sc.sno and o=oand cname=计算机网络and (gradetemp.ag)order by grade,sname;例18、查询没有选修了计算机网络课程的学生的学号及姓名。例19、查询选修了全部课程的学生的学号及姓名。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1