数据查询

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4 数据查询

数据库查询操作是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。

1.SELECT语句的一般格式

SELECT [ ALL|DISTINCT ][TOP N [PERCENT] ] <目标列表达式>

[别名] [,<目标列表达式> [别名] ]…

FROM <表名|视图名> [ 别名][,<表名|视图名> [ 别名] ]…

[ WHERE <条件表达式>]

[GROUP BY <列名1> [ HA VING<条件表达式>]

[,<列名2> [ HA VING<条件表达式>]…]]

[ORDER BY <列名1> [ ASC | DESC] ,[ <列名2> [ ASC|DESC] ] …]]

3.查询条件列表

查询条件有如下基本类型:

比较(=,>,<,>=,<=,!=,<>,!>,!<),确定范围([not ] between … and …),确定集合([not] IN),字符匹配([not ] LIKE),空值(IS [not] NULL),多值条件(AND, OR),判断存在([not] exists)。其中字符匹配使用了两个通配符:%(百分号):代表任意长度的字符串;_(下横线):代表任意单个字符。使用格式如下:

[NOT] LIKE ‘<匹配串>’[ ESCAPE ‘<换码字符>’]

【实验目的】

●掌握从简单到复杂的各种数据查询操作,包括:简单查询、多表连接查询、

嵌套查询、组合查询,分组和函数查询的各种方法和技巧。

●掌握运用各种逻辑谓词、聚合函数,组合成条件表达式进行检索查询。

●掌握多表之间的连接查询,即等值连接、非等值连接、自然连接、自身连接、

外连接和复合条件连接相关的查询。

●掌握使用嵌套查询来实现复杂的查询,从而增强SQL的查询能力。

【实验步骤】

1.简单查询:涉及单表或简单条件的查询

(1)查询计算机系学生的学号和姓名;

(2)查询选修课程c1且成绩在80-90之间的学生学号和成绩,并将成绩乘以0.8

系数输出;

(3)查询选修c1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同,则按学号的升序排列;

2.条件连接查询、自身连接查询和外连接查询

包含连接操作的查询语句通称连接查询,连接操作包括内连接(等值连接、自然连接、一般连接、自连接)、外连接(左连接、右连接)和笛卡尔积连接。连接操作一般涉及两个及以上的表,连接条件通过where条件子句表达。

(1)查询每个学生的情况以及他们所选的课程

select 学生.*, 选课.*

from 学生, 选课

where 学生.学号=选课.学号;

(2)查询每一门课的间接先行课(即先行课的先行课)--自身连接

(3)查询同时选修了C1和C3课程的学生学号和该2门课的成绩

(4)查询选修C1课程且成绩为90分以上的学生学号、姓名及成绩

(5)用SQL语句表达学生和选课之间的内连接、左外部连接和右外部连接的语句

select 学生.*, 课程号, 成绩

from 学生, 选课

where 学生.学号*=选课.学号; //左外连接

select 选课.*, 课程.*

from 选课,课程

where 选课.课程号=*课程.课程号//右外连接

3.使用聚集函数并对查询结果进行排序/分组

(1)统计物理系、计算机系学生的人数,结果按系名升序,人数降序排序

(2)查询所有选课程号C2成绩的学生的学号、课程号和成绩,并按成绩降序排序

(3)查询选修了数据结构课程的学生人数、平均成绩、最高成绩

(4)查询各个课程号及相应的选课人数,并将结果按降序排列

(5)查询选修了2门以上课程的学生姓名、选课门数和平均成绩,并按成绩降序排列

4.嵌套和组合查询

(1)求C1课程的成绩高于张三的学生的学号和成绩

(2)查询同时选修了“计算机引论”和“数据结构”的学生姓名、系名

(3)查询与“王佳”同系的学生的学号、姓名和和考试成绩

(4) 求选修C1课程,并且也选修C2课程的学生姓名

(5) 使用“EXISTS”谓词查询没有选修C3课程的学生姓名

(6) 查询选修了学号为08001的学生所选修的全部课程的学生学号和姓名

【实验内容与要求】

针对教学数据库“课程_选课”中的数据表,完成下列SQL查询:

1.查询成绩在80~90之间的所有记录。

2.查询至少有4个同学选修的课程名和选课人数。

3.查询其他系中比“艺术系”所有学生年龄都大的学生名单及年龄,并按年龄降序输出。

4.查询与学生王佳同岁的所有学生的学号,姓名和系别。

5.查询选修了2门以上课程的学生名单。

6.查询至少有一门与“孙宏雷”选课相同的学生的姓名、课程名和系别。

7.查询成绩比该课程平均成绩高的学生的成绩表。

8.查询选修课号为“C1”且成绩高于课程“C3”某同学成绩的学生姓名、此两门课程的课程名和成绩。

9.查询所有未修“C2”号课程的学生名单。

10.查询每个同学所修课程的平均成绩和最高成绩,按降序排列输出姓名、平均成绩,最高成绩。

11.查询所有学生都选修了的课程号和课程名。

12.查询选修了08002号学生所选课程的学生学号和姓名。

【实验分析】

将操作指令、运行结果以及在实验中遇到的问题和解决的方法(至少3个)写在实验报告上。

相关文档
最新文档