数据库实验三四1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三、四 SQL语言应用
一、实验目的:
熟练掌握基本表的定义、删除与修改,为后继学习作准备。
二、实验属性(验证性)
1、了解并掌握SQL查询分析器及企业管理器的使用;
2、掌握基本表的定义、删除与修改。
三、实验要求
1.预习教材第三章,熟悉SQL语句。
2.熟悉.net、Java、PowerBuilder和Delphi 开发环境。
3.能够熟练掌握.net、Java、PowerBuilder和Delphi环境下的数据库的编程。
4.掌握单表查询语句的一般格式。;
5.掌握单表无条件、有条件查询及查询结果排序与分组。
6.掌握多表连接、嵌套和集合查询语句的一般格式及各种使用方法。
四、实验原理
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,Sdept
from turing1.student;
例2.3 查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
例2.4 查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
例2.5 查询选修了课程的学生学号。
select sno from turing1.sc;
2 条件查询
例2.6 查询数学系全体学生的学号(Sno)和姓名 (Sname)。
例2.7 查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。
select sno,sage
from turing1.student
where sage between 18 and 22;
例2.9 查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。
例2.10 查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。
例 2.11 查询既不是信息系、数学系、也不是计算机系的学生的姓名(Sname)和性别(Ssex)。
select sname,ssex
from turing1.student
where sdept not in ('电气学院','数理学院','计科系');
例2.12 查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。
例2.13 查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。
select sname,sdept
from turing1.student
where sname like '刘______';
例2.14 查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。
例2.15 查询课程名为“DB_设计”的课程号(Cno)和学分(Ccredit)。select cno,ccredit
from turing1.course
where cname like '数据库原理及应用';
例2.16 查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。
select *
from turing1.course
where cname like 'DB\_%设_' escape '\';
例2.17 假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。
例2.18 查询所有有成绩的学生学号(Sno)和课程号(Cno)。其命令为:select sno,cno from sc
where grade is not null;
3 查询结果排序
例2.19 查询选修了0811024号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。
select sno,grade
from turing1.sc
where cno='0811024'
order by grade desc;
例2.20 查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,
同一系中的学生按年龄(Sage)降序排列。
E、综合应用
例1、查询每个同学应该选修的课程门数及学分数。
例2、查询平均成绩大于学号'200400812140'学生平均成绩的所有学生的姓名。
例4、查询每一位同学的平均成绩及选修课程的门数。
例5、查询李大鹏同学所属系的每一位同学的平均成绩及选修课程的门数。
例6、查询平均成绩大于60分的所有学生的平均成绩,要求打印出学生的“学号”、“姓名”和“平均成绩”,并按平均成绩降序排列。
例7、查询李大鹏同学所学课程门数及平均成绩(该题为例8做准备)。
例8、查询平均成绩大于李大鹏同学平均成绩的所有学生的学号、姓名和平均成绩。
例9、查询选修课程门数和平均成绩都大于李大鹏同学所选课程门数和平均成绩的所有的学生姓名。
例10、查询数据结构课程的成绩大于全班平均成绩的学生姓名。