数据库实验7-2答题文件(答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章SQL结构化查询语言
实验7-2 SQL高级操作
实验要求
1.将服务器上的数据源文件夹“data7-2”下载到本地盘(比如E:\);
2.打开其中的“实验7-2答题文件.doc”文件,边做实验边将各题的操作步骤或所用的命令记录在该文件中。实验完成后将实验完成后将整个文件夹上传到你的“作业”文件夹中。
3、在答题时将答案的文字格式加上蓝色加粗。
实验步骤
1、多表查询
操作步骤如下:
在命令窗口中依次输入如下命令:
(1) 使用set default to 命令设置默认路径:
set default to E:\ data7-2
(2)根据A班学生信息表和A班成绩表查询学生的“姓名”、“数学”和“英语成绩”:
SELECT 姓名,数学,英语;
FROM A班学生信息, A班成绩表;
WHERE A班学生信息.学号=A班成绩表.学号
或:
SELECT 姓名,数学,英语;
FROM A班学生信息as a ;
INNER JOIN A班成绩表as b;
ON a.学号=b.学号
注:后者所采用的是表联接的方法。
(3)根据“学生.dbf”和“学生选课.dbf”,查询选修成绩不低于80分的学生的“学号”、“姓名”、“成绩”,并按成绩降序排列记录:
SELECT a.学号,姓名,成绩FROM 学生选课a;
INNER JOIN 学生b;
ON a.学号=b.学号;
WHERE 成绩>=80 ORDER BY 成绩DESC
(4)根据“学生.dbf”、“课程.dbf”和“学生选课.dbf”,查询选修成绩不低于85分的学生的学号、姓名、所选课程的课程名、成绩,并按成绩降序排列记录:
SELECT b.学号,姓名,课程名,成绩;
FROM 课程a INNER JOIN 学生选课b ;
ON a.课程ID=b.课程ID;
INNER JOIN 学生c;
ON b.学号=c.学号;
WHERE 成绩>=85;
ORDER BY 成绩DESC
或:
SELECT b.学号,姓名,课程名,成绩;
FROM 课程a INNER JOIN 学生选课b ;
INNER JOIN 学生c;
ON b.学号=c.学号;
ON a..课程ID=b.课程ID;
WHERE 成绩>=85;
ORDER BY 成绩DESC
注:先为后联接的表指定联接条件。
或:
SELECT b.学号,姓名,课程名,成绩;
FROM 课程a,学生选课b,学生c;
WHERE 成绩>=85 and ;
a.课程ID=
b.课程ID and;
b.学号=
c.学号;
ORDER BY 成绩DESC
2、SQL语言的嵌套查询
操作步骤如下:
在命令窗口中依次输入如下命令:
(1) 使用set default to 命令设置默认路径:
set default to E:\ data7-2
(2)查询“学生.dbf”中与陈静同乡的学生情况:
SELECT * FROM 学生;
WHERE 籍贯=(SELECT 籍贯FROM 学生WHERE 姓名="陈静") 注:子查询从学生表中取出陈静的籍贯,作为主查询的条件
(3)查询“学生.dbf”中入学成绩小于平均入学成绩的学生情况,包括“姓名”、“出生日期”和“入学成绩”:
SELECT 姓名,出生日期,入学成绩FROM 学生;
WHERE 入学成绩< (SELECT A VG(入学成绩) FROM 学生)
注:子查询从学生表中取出入学成绩的平均分,作为主查询的条件
(4)查询“学生.dbf”中入学成绩小于600但最接近600的学生情况,包括“姓名”、“入学日期”和“入学成绩”:
SELECT 姓名,出生日期,入学成绩FROM 学生;
WHERE 入学成绩=(SELECT MAX(入学成绩) FROM 学生;
WHERE 入学成绩<600)
注:子查询从学生表中取出入学成绩低于600分的学生之最高成绩
(5)查询“学生选课.dbf”中2009号课程成绩高于该课程平均成绩的学生信息:
SELECT 学号,成绩FROM 学生选课;
WHERE 课程ID="2009" AND 成绩> (SELECT A VG(成绩);
FROM 学生选课WHERE 课程ID='2009' )
注:子查询中,计算出2009号课程的平均成绩,作为主查询的比较条件
3、SQL滤波条件字的使用
操作步骤如下:
在命令窗口中依次输入如下命令:
(1) 使用set default to 命令设置默认路径:
set default to E:\ data7-2
(2)根据“学生选课.dbf”查询“学生.dbf”中的“土木工程”专业学生的选课情况:
SELECT * FROM 学生选课WHERE 学号IN;
(SELECT 学号FROM 学生WHERE 专业='土木工程')
注:使用IN运算符时,字段表中只能指定一个表达式
(3)根据“学生选课.dbf”查询“学生.dbf”中的“计算机”专业选课的学生情况:
SELECT * FROM 学生WHERE 专业=[计算机] and 学号IN;
(SELECT 学号FROM 学生选课)
(4)根据“课程.dbf”和“学生选课.dbf”,查询“课程.dbf”中选修了“孙子兵法”的学生的学号、课程名、成绩:
SELECT b.学号,课程名,成绩FROM 课程a ,学生选课b;
WHERE a.课程ID=b.课程ID and 课程名IN;
(SELECT 课程名FROM 课程WHERE 课程名="孙子兵法")
(5)在“学生.dbf”中查询出生年份最早的学生情况:
SELECT * FROM 学生;
WHERE YEAR(出生日期)<=ALL(SELE YEAR(出生日期) FROM 学生) 或: