access和SQL数据库练习及答案

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

数据库技术及应用实践考核上机考试练习题B(201010)给定的学生_选课库中数据库表结构及样本记录表1-表6数据如下:学生(学号,姓名,年龄,性别,所在系);

课程(课程号,课程名,先行课);

选课(学号,课程号,成绩).

<

一、根据给定的样本数据,按顺序完成下列操作:

1、数据定义和输入记录

(1)创建学生-课程数据库。

(2)创建学生表、课程表和选课表,并满足约束条件。

(3)输入样本记录。

[

(4)查询输入的样本记录,并保存结果。

(5)创建计算机系学生成绩视图。属性包括:学号、姓名、课程名和成绩。(6)查询已创建的视图,并保存结果。

(7)创建学生表、课程表和选课表的数据库关系图表。

2、数据更新

(1)输入一条新学生记录,例如:(‘S11’, ’李阳’, ’男’,21,’计算机’)(2)删除一条学生记录,例如:删除学号=‘S5’的记录。

(3)修改一条学生记录,例如:将学号=‘S5’的记录的系修改为计算机(RSL 改了吴非)。

!

(4)查询当前的学生记录,并保存结果。

(5)求每个系的学生的平均年龄,并将结果存入到系平均年龄数据库中。

标准:

select所在系,avg(年龄) AS 平均年龄into平均年龄数据库from 学生group by所在系;

SELECT 学生.所在系, Avg(学生.年龄) AS 平均年龄

FROM 学生

GROUP BY 学生.所在系;

@

3、单表查询

(1)求计算机系的学生学号和姓名。

(2)求选修了课程的学生学号。

标准:

select distinct学号from选课;

1.distinct 去除重复的数据

}

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

SELECT 选课.学号, 选课.成绩, 选课.课程号

FROM 选课

WHERE 课程号="C1"

ORDER BY 成绩 DESC ,学号;

(4)求数学系或计算机系姓张的学生的信息。

错:只求计算机

SELECT 学生.所在系, 学生.姓名, 学生.年龄, 学生.性别, 学生.学号

FROM 学生

WHERE (((学生.所在系)="计算机") AND ((学生.姓名) Like "张*"));

=============================================

结果:SELECT 学生.所在系, 学生.姓名, 学生.年龄, 学生.性别, 学生.学号

*

FROM 学生

WHERE ((学生.姓名) Like"张*")AND 所在系 IN ("计算机","数学");

=============================================

(5)求缺少了成绩的学生的学号和课程号。

SELECT 选课.学号, 选课.课程号

FROM 选课

WHERE (((选课.成绩) Is Null));

4、连接查询

(1)求学生的学号、姓名、选修的课程名及成绩。

SELECT 学生.学号, 学生.姓名, 课程.课程名, 选课.成绩

FROM 课程 INNER JOIN (学生 INNER JOIN 选课 ON 学生.学号 = 选课.学号) ON 课程.课程号= 选课.课程号;

(2)求选修C1课程且成绩为90分以上的学生学号、姓名及成绩。

SELECT 学生.学号, 学生.姓名, 选课.成绩

FROM 学生 INNER JOIN 选课 ON 学生.学号 = 选课.学号

WHERE (((选课.成绩)>=90) AND ((选课.课程号)="C1"));

(3)查询每一门课的间接先行课(即先行课的先行课)。

$

select a.课程号, b.先行课from curr a, curr b

where a.先行课=b.课程号;

(4)求学生表与选课表的左外连接。

select*from学生left join选课

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

(5)求选课表与课程表的右外连接。

5、嵌套查询

(1)求选修了高等数学的学生学号和姓名。

select学号,姓名from stu where学号in(

select学号from选课where课程号=(

select课程号from curr where课程名='高等数学'

));

错:以下属于连接查询

^

SELECT 课程.课程名, 学生.学号, 学生.姓名

FROM 课程 INNER JOIN (学生 INNER JOIN 选课 ON 学生.学号 = 选课.学号) ON 课程.课程号 = 选课.课程号

WHERE (((课程.课程名)="高等数学"));

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

SELECT 学号,成绩

FROM 选课

WHERE 课程号="C1" AND 成绩 > (SELECT 成绩 FROM 选课 WHERE学号=(SELECT 学号 FROM 学生 WHERE 姓名="张三")AND 课程号="C1");

$

(3)求其他系中比计算机系学生年龄都小的学生。

select * from stu where 年龄<(

select min(年龄) from 学生 where

所在系='计算机');

(4)求没有选修C2课程的学生姓名。

相关文档
最新文档