牛客网-SQL专项训练15
①MySQL是一种(关系型)数据库管理系统。
关系型数据库的代表包括Oracle, Sql Server, MySQL。
②小李在创建完一张数据表后,发现少创建了一列,此时需要修改表结构,应该用哪个语句进行操作?C
解析:
题目中说了需要修改表的结构, 故需要使用alter table
添加列: ALTER TABLE 表名 add 字段名
修改列: ALTER TABLE 表名 modify 字段名
删除列: ALTER TABLE 表名 drop 字段名
INSERT是插入语句,UPDATE是更新语句,修改表的数据,并不修改表的结构。
③
Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1001' , '' , '2000-01-01' , '男');
('1002' , null , '2000-12-21' , '男');
('1003' , NULL , '2000-05-20' , '男');
('1004' , '张三' , '2000-08-06' , '男');
('1005' , '李四' , '2001-12-01' , '女');
('1002' , null , '2000-12-21' , '男');
('1003' , NULL , '2000-05-20' , '男');
('1004' , '张三' , '2000-08-06' , '男');
('1005' , '李四' , '2001-12-01' , '女');
查询2001年及之后出生的男生、女生总数,正确的SQL是:
解析:
题中所求的男生,女生的总数,故select sex count(*)
查询的表是student_table
条件的2001年及之后出生的
需要通过sex性别进行分组
select sex count(*)
from student_table
where birth >= '2001'
group by sex;
④有一张person表,主键是id,数据如下:

同时还有一张任务表task,主键也是id:
请找出每个人的任务情况(注意:没有任务也要输出),结果按id降序排列,输出如下:
下面正确的SQL查询语句是:A
解析:
其实仔细观察每个选项的区别,就知道这道题主要考查的是JOIN连接的使用(LEFT JOIN 、JOIN、INNER JOIN、RIGHT JOIN)
观察结果表:
有两个Ming,一个Dong,且 Dong后面的content为null,就能看出来是以person表为主表,task为从表左连接,并以两个表的id相等作为条件连接,以id降序排列显示,这样就会显示左表的所有数据,右边没有与之匹配的久为空。A选项符合
B选项:只获取两表相匹配的数据,没有对应值的就会去掉,所以会漏掉没有任务的情况;
C选项:会获取task表的所有记录,会剔除掉Dong,和题意相反了;
D选择:同样错在会获取两个表中字段匹配关系的记录,漏掉没有任务的情况。
⑤
有一张学生成绩表sc(sno 学号,class 课程,score 成绩),示例如下:
可以查询出每个学生的英语、数学的成绩(行转列,一个学生输出一行记录,比如输出[1, 89, 90]的SQL语句?
select sno, sum(if(class='english',score,0)) as english, sum( if(class='math',score,0) ) as math from sc where class in('english','math') group by sno
解析:
1.sum函数作用:不加的话就会导致
sno english math
1 90 0
1 0 85
而我们想要的结果是:
sno english math
1 90 85
将上面2条记录合并
2.group by作用:不加会导致所有学生英语成绩都加在一起,数学成绩也会加在一起
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)