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