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') -- 0select timestampdiff(month,'2019-6-23','2019-7-23') -- 1
select timestampdiff(month,'2019-6-23','2019-7-22') -- 0select 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') -- 0select 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') -- 1select 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') -- 1select DATEDIFF('2019-7-23','2019-7-22') -- 1
select DATEDIFF('2019-7-23','2019-7-23') -- 0可以发现, 计算天数与时分秒无关,自动省略时分秒