常用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的结果可以帮助我们使用更好的索引,最终来优化它

 

posted @ 2020-08-14 23:37  hjy1995  阅读(68)  评论(0编辑  收藏  举报