SQL课上作业与答案 1

发布 2022-07-08 05:38:28 阅读 2966

1、 查询xs表中计算机专业同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。

select 学号 as number,姓名 as name,总学分 as mark from xs where 专业名="计算机";

查询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 学号,**g(成绩) 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 "王%";

26、 查询xscj数据库xs表中,学号倒数第二个数字为0的学生的学号、姓名及专业名。

select 学号,姓名,专业名 from xs where 学号 like "%0_";

查询xs表中名字包含下画线的学生学号和姓名。

select 学号,姓名 from xs where 学号 like "%#_%"escape "#

28、查询xscj数据库xs表中不在2023年出生的学生情况。

select * from xs where 出生时间<=>1993;

29、查询xs表中专业名为“计算机”、“通信工程”或“无线电”的学生的情况。

select * from xs where 专业名="计算机" or 专业名="通信工程" or 专业名="无线电";

30、查询xscj数据库中总学分尚不定的学生情况。

select * from xs where 总学分 is null;

31、查找在xscj数据库中选修了课程号为206的课程的学生的姓名、学号。

select 姓名,学号 from xs where 学号 in(select 学号 from xs_kc where 课程号="206");

32、查找未选修离散数学的学生的姓名、学号、专业名。

select 姓名,学号,专业名 from xs where 学号 not in (select 学号 from xs_kc where 课程号 in (select 课程号 from xs where 课程号="离散数学"))

33、查找选修了离散数学的学生学号。

select 学号 from xs_kc where 课程号 = select 课程号 from kc where 课程名="离散数学");

34、查找xs表中比所有计算机系的学生年龄都大的学生学号、姓名、专业名、出生日期。

select 学号,姓名,专业名,出生时间 from xs where 出生时间35、查找xs_kc表中课程号206的成绩不低于课程号101的最低成绩的学生的学号。

select 学号 from xs_kc where 课程号="206" and 成绩》any(select 成绩 from xs_kc where 课程号="101");

36、查找选修206号课程的学生姓名。

select 姓名 from xs where exists (select * from xs_kc where 课程号="206" and 学号=xs.学号);

37、查找选修了全部课程的同学的姓名。

select 姓名 from xs where not exists (select * from kc where not exists (select * from xs_kc where 学号=xs.学号 and 课程号=kc.课程号));

38、从xs表中查找总学分大于50分的男同学的姓名和学号。

select 姓名,学号 from xs where 总学分》50 and 性别=1;

select 姓名,学号 from xs where 学号 in (select 学号 from xs where 总学分》50 and 性别=1);

select 姓名,学号,总学分 from (select 姓名,学号,性别,总学分 from xs where 总学分 > 50) as student where 性别=1;

39、从xs表中查找所有女学生的姓名、学号,以及与81101号学生的年龄差距。

select 姓名,学号,year(出生时间)-year((select 出生时间 from xs where 学号="81101" )as 年龄差距 from xs where 性别=0;

40、查找与81101号学生性别相同、总学分相同的学生学号和姓名。

select 学号,姓名 from xs where (性别,总学分)=(select 性别,总学分 from xs where 学号="81101");

SQL作业1 答案

练习一 1.创建名为test的数据库,要求使用三个 10 mb 的数据文件 test1 test2 test3 最大20mb,增长量为10 和两个 5mb 的事务日志文件 test log1 test log2 最大10mb。注意 事务日志文件在 log on 关键字后指定,filename 选项中...

sql作业答案

现有学生表 学号,姓名,性别,年龄,入学年份,籍贯,手机号码,系号,班长学号 学号是主码,系号和班长学号是外部码,手机号码必须唯一,学生的年龄不得小于10岁和大于50岁,性别必须是 男 或者 女 系表 系号,系名,系主任 其中系号是主码,系名不能有重复的。选课表 学号,课程号,成绩 学号,课程号 是...

SQL作业答案

1.检索在北京的 商的名称。2.检索出向 商s3发过订购单的职工的职工号和仓库号。命令 select 职工号,仓库号 from 职工 where 职工号 in sele 职工号 from 订购单 where 商号 s3 3.检索出和职工e1,e3都有联系的北京的 商信息。命令 sele from 商...