数据库实验7-2答题文件(答案)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 学生) 或:

相关文档
最新文档