牛客网-SQL专项训练17
①SQL查询中使用WHere子句指出的是:查询条件
②Mysql中表student_table(id,name,birth,sex),查询重复姓名、重复次数,并按重复次数降序排列,正确的是(A)?
解析:
MySQL的运算顺序:
(1)首先运算的是FROM子句,根据FROM子句中指定的一个或多个表创建工作表;
(2)如果存在WHERE子句,则WHERE子句对步骤1获得的工作表进行条件筛选,删除不符合条件的记录,注意where后面不能使用聚合函数,故C错;
(3)如果存在GROUP BY子句,则对步骤2生成的结果表按指定字段进行分组,生成一份新的结果表;
(4)如果存在HAVING子句,则对步骤3的结果表按指定条件进行筛选,删除掉不满足筛选条件的记录,注意select中自定义的字段用在having后面,故D错;
(5)执行SELECT子句,删除不包含在SELECT 字段名,所指定的字段。如果SELECT子句中包含关键字DISTINCT,则执行去重复运算……
(6)如果有ORDER BY子句,则按指定的排序规则对结果表进行排序操作,不指定默认为ASC升序,降序为DESC,【B错在升序了】;
(7)如果需要找前几名,用LIMIT名次。
③下列关于视图说法错误的是?D
解析:
视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据符合题意,
创建视图用CREATE VIEW
修改视图用ALTER VIEW
删除视图用DROP VIEW
④下列选项中都属于关系代数运算符中集合运算符的是(A)
⑤Mysql(版本8.0.25)中表student_table(id,name,birth,sex),插入如下记录:
('1004' , '张三' ,'2000-08-06' , '男');
('1009' , '李四', '2000-01-01', '男');
('1010' , '李四', '2001-01-01', '男');
('1006' , '王五', '2000-08-06' , '女');
('1008' , '张三', '2002-12-01', '女');
('1012' , '张三', '2001-12-01', '女');
('1011' , '李四', '2002-08-06' , '女');
('1013' , '赵六' ,'2000-09-06' , '男');
现有SQL:
select t1.*,t2.*
from (
select * from student_table where sex = '男' ) t1
full join
(select * from student_table where sex = '女')t2
on t1.name = t2.name ;
如下SQL中与上述SQL实现的语义和结果一致的是()?
首先Mysql(版本8.0.25)是不支持full join的。
但是full join:返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值。
结果应该为:
A选项: t1.name=null意思就是说在保证男名字全为null的情况下,还要保留女的所有信息,故最最终得到的结果为:4条女信息+男全空信息 union all 4条男女信息+一条男信息(赵六)+女空信息
D选项:一条男生空信息+女生王五 union all 五个男的信息+女空信息
B选项:where t1.name=null,只输出一条女信息+男空信息 union all 右边4条男女信息+1条男信息+女空信息
C选项:一条男空+女生王五信息再加4条男女信息 union all 右边是一条男信息(赵六)+女空信息
其实我觉得BC选项结果都是正确的,只是排列顺序不一样,而C选项 的结果就与full join结果顺序一致。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)