常用MySQL(二)
case when
Case具有两种格式。简单Case函数和Case搜索函数
-
第一种 格式 : 简单Case函数
# 选项1,2...作为条件值1,2...的新值
case 列名
when 条件值1 then 选项1
when 条件值2 then 选项2.......
else 默认选项
end as 新列名
# 结合select使用
select case 列名
when 条件值1 then 选项1
when 条件值2 then 选项2...
else 默认选项
end as 新列名
from table_name
-
第二种 格式 :Case搜索函数
# 条件1,2...一般是某列值的比较条件,如 colA=1 或 colA!=1 或 colA>1 and colA<5
# 选项1,2...作为条件1,2...的新值
case
when 条件1 then 选项1
when 条件2 then 选项2.......
else 默认选项
end as 新列名
# 结合select使用
select case
when 条件1 then 选项1
when 条件2 then 选项2.......
else 默认选项
end as 新列名
from table_name
常用函数
时间函数
#昨天
SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS( 时间字段名) <= 1
#7天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)
#近30天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)
#本月
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE(), '%Y%m' )
#上一月
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1
其他函数
length --计算字符串长度
concat --连接两个字符串
substring -- 截取字符串
count -- 统计数量
max -- 最大 min -- 最小 sum -- 合计
drop、truncate、delete
drop table
-
1)属于DDL
-
2)不可回滚
-
3)不可带where
-
4)表内容和结构删除
-
5)删除速度快
truncate table
-
1)属于DDL
-
2)不可回滚
-
3)不可带where
-
4)表内容删除
-
5)删除速度快
delete from
-
1)属于DML
-
2)可回滚
-
3)可带where
-
4)表结构在,表内容要看where执行的情况
-
5)删除速度慢,需要逐行删除
使用场景
-
不再需要一张表的时候,用drop
-
想删除部分数据行时候,用delete,并且带上where子句
-
保留表而删除所有数据的时候用truncate
explain
通过explain
命令我们可以学习到该条SQL是如何执行的,随后解析explain的结果可以帮助我们使用更好的索引,最终来优化它
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具