牛客网-SQL专项训练9


①假设有选课表course_relation(student_id, course_id),其中student_id表示学号,course_id表示课程编号,如果小易现在想获取每个学生所选课程的个数信息,请问如下的sql语句正确的是(D )

牛客网-SQL专项训练9

解析:

获取学生所选课程的个数,可以通过以学生id作为分组,统计出课程编号的个数

select student_id, count(course_id) 

from course_relation

group by stuent_id;

AB选项:统计的是课程id的和,比如语文-A,数学-B,英语-C,而sum(course_id)=A+B+C,并非题目所求

C选项只是统计出了课程id的总数。

Mysql中表student_table(id,name,birth,sex),score_table(stu_id,subject_name,score),查询没有英语分数的学生明细记录,如下SQL正确的是(B)?

牛客网-SQL专项训练9

解析:

可以先把有英语分数的学生id查出来

select stu_id

from score_table

where subject_name =’英语’;

然后再进行排除已经查出来的学生

select *

from student_table

where id not in (

select stu_id

from score_table

where subject_name =’英语’;

)

假设score_table为下表:那么A选项先选出没有英语的还是会把张三选出来,最后结果还是会有张三

牛客网-SQL专项训练9

C选项:子查询是选没有英语的,主查询依然选不在里面的其他课程的,结果就为空了吧

D选项:查询的是只有英语分数的学生

③Mysql中表student_table(id,name,birth,sex),插入如下记录:
(‘1003′ ,’男生姓名’ , ‘2000-05-20’ , ‘男’);
(‘1004’ , ‘张三’ , ‘2000-08-06’ , ‘男’);
(‘1005’ , ‘李四’ , ‘2001-12-01’ , ‘女’);

(‘1006’ , ‘女生姓名’ , ‘2001-12-02’ , ‘女’);
删除符合条件的记录:是男生时删除name=’男生姓名’的记录,是女生时删除name=’女生姓名’的记录,如下SQL正确的是(B)?

 牛客网-SQL专项训练9

 解析:

case when的正确语法是: case when … then … when … then … else … end

A选项:删除时不能带关键字table;

C选项:缺少end;

D选项:缺少when;

④现在有一个学生表student,需要回收所有机器的nkw用户对学生表student所在数据库user的update和insert权限,则下列语句中能够实现这一功能的语句是(C)

牛客网-SQL专项训练9

 解析:

回收表的操作功能语句revoke … on … from

授予权限用grant …to

题目要求是回收所有机器的nkw用户对user表的update和insert权限,而选项D是回收所有数据库的update和insert权限,user.* :表示user库里面的所有表。

⑤MySQL查询语句的正确执行顺序:

(1)首先运算的是FROM子句,根据FROM子句中指定的一个或多个表创建工作表;

(2)如果存在WHERE子句,则WHERE子句对步骤1获得的工作表进行条件筛选,删除不符合条件的记录;

(3)如果存在GROUP BY子句,则对步骤2生成的结果表按指定字段进行分组,生成一份新的结果表;

(4)如果存在HAVING子句,则对步骤3的结果表按指定条件进行筛选,删除掉不满足筛选条件的记录;

(5)执行SELECT子句,删除不包含在SELECT 字段名,所指定的字段。如果SELECT子句中包含关键字DISTINCT,则执行去重复运算……

(6)如果有ORDER BY子句,则按指定的排序规则对结果表进行排序操作;

(7)如果需要找前几名,用LIMIT名次。

牛客网-SQL专项训练9

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/289079.html

(0)
上一篇 2022年9月12日
下一篇 2022年9月12日

相关推荐

发表回复

登录后才能评论