MySQL使用注意

本文探讨了SQL中的联表查询与子查询效率对比、SQL语句执行流程、COUNT函数使用细节、MySQL内置函数特性及日期时间操作函数TIMESTAMPDIFF与DATEDIFF的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.联表查询的效率比子查询高,有些子查询不可以被联表查询代替,至于用哪一个,看情况,权衡方便与效率

2.sql语句从左往右运行的过程当中,遇到不同的筛选条件,分别会产生不同的过程表

3.count(column)计算字段column有多少个值,不去重,有一个算一个,不考虑重复;可以添加distinct关键字手动去重。

4.MySQL内置函数中用到的索引是从1开始的,而表中的行号是从0开始的

5.MySQL内置函数中,有把一个值变成另一个值的,也有把一个字段的多个值变成一个值的,如sum、count etc.,注意区分应用场景

6.TIMESTAMPDIFF(unit,datetime_pre,datetime_later)使用注意

select timestampdiff(year,'2018-7-23','2019-7-23')  -- 1
select timestampdiff(year,'2018-7-23','2019-7-22')  -- 0

select timestampdiff(month,'2019-6-23','2019-7-23') -- 1
select timestampdiff(month,'2019-6-23','2019-7-22') -- 0

select timestampdiff(day,'2019-7-22 10:20:30','2019-7-23 10:20:30') -- 1
select timestampdiff(day,'2019-7-22 10:20:30','2019-7-23 10:20:29') -- 0

select timestampdiff(hour,'2019-7-23 9:20:30','2019-7-23 10:20:30') -- 1
select timestampdiff(hour,'2019-7-23 9:20:30','2019-7-23 10:20:29') -- 0

可以发现,不满1周期为0,并不是单纯的相应数字相减

select timestampdiff(year,'2018-7-23 10:20:30','2019-7-23') -- 0,前后时间格式不一样,是①前面的自动省略时分秒,还是后面的自动补齐时分秒?由select timestampdiff(year,'2018-7-23','2019-7-23') -- 1,可排除①,补齐的时分秒默认为00:00:00

7.DATEDIFF(date_later,date_pre)使用注意

select DATEDIFF('2019-7-23 01:00:00','2019-7-22 12:00:00') -- 1
select DATEDIFF('2019-7-23 18:00:00','2019-7-22 12:00:00') -- 1

select DATEDIFF('2019-7-23 00:00:00','2019-7-22 12:00:00') -- 1
select DATEDIFF('2019-7-23','2019-7-22 12:00:00') -- 1

select DATEDIFF('2019-7-23','2019-7-22') -- 1    
select DATEDIFF('2019-7-23','2019-7-23') -- 0        

可以发现, 计算天数与时分秒无关,自动省略时分秒  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值