《access和SQL数据库练习及答案(共8页).doc》由会员分享,可在线阅读,更多相关《access和SQL数据库练习及答案(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上数据库技术及应用实践考核上机考试练习题B()给定的学生_选课库中数据库表结构及样本记录表1-表6数据如下:学生(学号,姓名,年龄,性别,所在系); 课程(课程号,课程名,先行课); 选课(学号,课程号,成绩).表1 学生表结构字段名数据类型长度是否为空约束学号CHAR5否主键姓名CHAR8否年龄SMALLINT默认20性别CHAR2“男”或“女”所在系CHAR20表2 课程表结构字段名数据类型长度是否为空约束课程号CHAR5否主键课程名CHAR20否先行课CHAR5表3 选课表结构字段名数据类型长度是否为空约束学号CHAR5否主键,外键课程号CHAR5否主键,外键成绩
2、SMALLINT0100表4 学生表数据序号学号姓名性别年龄所在系1S1李明男21计算机2S2张小红男21计算机3S3李和明女22计算机4S4张三男21计算机5S5刘宏男23计算机6S6王红应女20计算机7S7吴非男19数学8S8丁玉男21数学9S9赵名女21数学10S12张共可男22物理表5 课程表数据序号课程号课程名先行课1C1计算机引论2C2数据结构C33C3C语言编程C14C4软件工程C65C6数据库C26C5计算机文化7C7高等数学8C8概率统计C99C9线性代数C710C10力学表6 选课表数据序号学号课程号成绩1S1C1602S2C1933S3C14S4C1895S1C2796S
3、2C27S3C2808S4C3909S1C39210S2C38111S1C78512S4C775一、根据给定的样本数据,按顺序完成下列操作: 1、数据定义和输入记录(1)创建学生-课程数据库。(2)创建学生表、课程表和选课表,并满足约束条件。(3)输入样本记录。(4)查询输入的样本记录,并保存结果。(5)创建计算机系学生成绩视图。属性包括:学号、姓名、课程名和成绩。(6)查询已创建的视图,并保存结果。(7)创建学生表、课程表和选课表的数据库关系图表。2、数据更新(1)输入一条新学生记录,例如:(S11, 李阳, 男,21,计算机)(2)删除一条学生记录,例如:删除学号=S5的记录。(3) 修改
4、一条学生记录,例如:将学号=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)求选
5、修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。SELECT 选课.学号, 选课.成绩, 选课.课程号FROM 选课WHERE 课程号=C1ORDER BY 成绩 DESC ,学号;(4)求数学系或计算机系姓张的学生的信息。错:只求计算机SELECT 学生.所在系, 学生.姓名, 学生.年龄, 学生.性别, 学生.学号FROM 学生WHERE (学生.所在系)=计算机) AND (学生.姓名) Like 张*);=结果:SELECT 学生.所在系, 学生.姓名, 学生.年龄, 学生.性别, 学生.学号FROM 学生WHERE (学生.姓名) Lik
6、e张*)AND 所在系 IN (计算机,数学);=(5)求缺少了成绩的学生的学号和课程号。SELECT 选课.学号, 选课.课程号FROM 选课WHERE (选课.成绩) Is Null);4、连接查询(1)求学生的学号、姓名、选修的课程名及成绩。SELECT 学生.学号, 学生.姓名, 课程.课程名, 选课.成绩FROM 课程 INNER JOIN (学生 INNER JOIN 选课 ON 学生.学号 = 选课.学号) ON 课程.课程号 = 选课.课程号; (2)求选修C1课程且成绩为90分以上的学生学号、姓名及成绩。SELECT 学生.学号, 学生.姓名, 选课.成绩FROM 学生 IN
7、NER JOIN 选课 ON 学生.学号 = 选课.学号WHERE (选课.成绩)=90) AND (选课.课程号)=C1);(3)查询每一门课的间接先行课(即先行课的先行课)。select a.课程号, b.先行课from curr a, curr bwhere a.先行课=b.课程号;(4)求学生表与选课表的左外连接。select * from 学生 left join 选课 on 学生.学号=选课.学号;(5)求选课表与课程表的右外连接。5、嵌套查询(1)求选修了高等数学的学生学号和姓名。select 学号, 姓名from stu where 学号 in(select 学号 from 选
8、课 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 姓名
9、=张三) AND 课程号=C1);(3)求其他系中比计算机系学生年龄都小的学生。select * from stu where 年龄=2 );6、组合查询(1)求学生的总人数。SELECT Count(学生.学号) AS 学号之计数FROM 学生;(2)求选修了课程的学生人数。select count(学号) as 人数FROM(Select distinct 学号 FROM 选课);(3)求计算机系学生的平均年龄定价,用GROUP BY表示。SELECT AVG(年龄) AS 平均年龄FROM 学生WHERE 所在系=计算机;(4)求各课程号和选修该课程的人数。SELECT 课程号,COUNT(学号) AS 人数FROM 选课GROUP BY 课程号;(5)求选修课超过3门课的学生学号。select 学号from select_curr group by学号having count(课程号)3;二、关于程序验收1、通过可视化工具,验收已创建的数据库、数据表、视图关系表和数据库关系表。2、通过已保存的SQL程序代码,验收查询结果。3、上机操作工作量:除了操作1的数据定义和样本数据输入必做外,其余操作2至操作6,考试时每种操作出1-2道小题,共约8-10题。专心-专注-专业
限制150内