SQL课上作业与答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、查询xs 表中计算机专业同学的学号、姓名和总学分,结果中各列的标题分别指定为number 、
name 和mark 。
Select 学号as number姓名as name总学分as mark from xs where 专业名=" 计算机";
2、
查询xs 表中计算机专业各同学的学号、姓名和总学分,对总学分按如下规则进行替换:若总学分为空值,替换为“尚未选课” ;若总学分小于50,替换为“不及格” ;若总学分在50〜52之间,替换为“合格”;若总学分大于52,替换为“优秀”。总学分列的标题更改为“等级” 。
select 学号,姓名,
case
when 总学分is null then " 尚未选课"
when 总学分< 50 then " 不及格"
when 总学分>=50 and 总学分<=52 then "合格"
else "优秀"
end as 等级
from xs
where 专业名="计算机";
3、按120分制重新计算成绩,显示xs_kc表中学号为81101的学生成绩信息。
select 学号,课程号,成绩*1.2 as 成绩120 from xs_kc where 学号="81101";
3 rows in set
4、对xscj数据库的xs表只选择专业名和总学分,消除结果集中的重复行。
select distinct 专业名,总学分from xs;
8 rows in set
5、统计备注不为空的学生数目。
select count(备注) as 人数from xs where 备注is not null;
6、统计总学分在50分以上的人数。
select count(总学分) as 人数from xs where 总学分> 50;
1 row in set
7、求选修101 课程的学生的最高分和最低分。
select max(成绩)as 最高分,min(成绩)as 最低分from xs_kc where 课程号="101";
1 row in set
8、求学号081101 的学生所学课程的总成绩。
select sum(成绩)as 总成绩from xs_kc where 学号="81101";
9、求选修101 课程的学生的平均成绩。
select 学号,avg(成绩)from xs_kc where 课程号="101";
10、求选修101 课程的成绩的方差。
select variance(成绩)from xs_kc where 课程号="101";
11、求选修101 课程的成绩的标准差。
select stddev(成绩) from xs_kc where 课程号="101";
12、求选修了206 课程的学生的学号。
select group_concat(学号) from xs_kc where 课程号="206";
13、从xs 表中检索出所有学生的信息,并使用表别名student 。
select * from xs as student;
14、查找xscj 数据库中所有学生选过的课程名和课程号
select distinct kc.课程名,xs_kc.课程号from kc,xs_kc where kc.课程号=xs_kc课程号; 3 rows in set
15、用FROM 子句的JOIN 关键字表达下列查询:查找选修了206 课程且成绩在80 分
以上的学生姓名及成绩。
select 姓名,成绩from xs inner join xs_kc on xs.学号=xs_kc.学号where 课程号="206"
and 成绩> 80;
3 rows in set
16、用FROM 的JOIN 关键字表达下列查询:查找选修了“计算机基础”课程且成绩在
80 分以上的学生学号、姓名、课程名及成绩。
select xs学号,姓名,课程名,成绩from xs join xs_kc on xs.学号=xs_kc.学号join kc on xs_kc.课程号=kc.课程号where课程名="计算机基础"and成绩> 80;
8 rows in set
17、查找xscj 数据库中课程不同、成绩相同的学生的学号、课程号和成绩。
select a.学号,a.课程号,b.课程号,a.成绩from xs_kc as a join xs_kc as b on a.成绩=b. 成绩and a.学号=b.学号and a.课程号!= b.课程号;
2 rows in set
18、查找所有学生情况及他们选修的课程号,若学生未选修任何课,也要包括其情况。
select xs_kc.*,课程号from xs left outer join xs_kc on xs.学号=xs_kc.学号;
19、查找被选修了的课程的选修情况和所有开设的课程名。
select xs_kc.*,课程名from xs_kc right join kc on xs_kc.课程号=kc.课程号;
20、列出学生所有可能的选课情况。
mysql> select 学号,姓名,课程号,课程名
-> from xs cross join kc;
21、查询xscj 数据库xs 表中学号为81101 的学生的情况。select 学号,姓名,总学分from xs
where 学号="81101";
1 row in set
22、查询xs 表中总学分大于50 分的学生的情况。
select * from xs where 总学分> 50;
23、查询xs 表中备注为空的同学的情况。
select * from xs where 备注is null;
mysql> select * from xs where 备注<=> null;
24、查询xs 表中专业为计算机,性别为女(0)的同学的情况。
select * from xs where 专业名="计算机" and 性别=0;
25、查询xscj 数据库xs 表中姓“王”的学生学号、姓名及性别。
select 学号,姓名,性别from xs where 姓名like "王%";