• MySQL不常用、易忽略的小知识


    笔者从事开发也有一段时间了,关于数据库方面的一些小知识在这里总结一下

    1、count(*),count(1)与count(column)区别

    count(*)对行的数目进行计算,包含NULL

    count(1)对行的数目进行计算,包含NULL

    count(column)对特定的列的值具有的行数进行计算,不包含NULL值。

    所以count(1)这个用法和count(*)的结果是一样的。

    注意:

    如果表没有主键,那么count(1)比count(*)快。

    如果有主键,那么count(主键,联合主键)比count(*)快。

    如果表只有一个字段,count(*)最快。

    count(1)跟count(主键)一样,只扫描主键。count(*)跟count(非主键)一样,扫描整个表。明显前者更快一些。

    2、mysql日期加减

    获取当前日期时间函数 now() 和 sysdate():

    SELECT now(), sleep(3), now();

    结果是

    mysql> select sysdate(), sleep(3), sysdate();

    结果是

    可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。

    sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。

    mysql> select curdate(); #获得当前日期(date)函数:curdate()
    mysql> select curtime(); #获得当前时间(time)函数:curtime()

    为日期增加一个时间间隔:date_add()

    mysql> SELECT date_add('2017-12-25 17:43:44', interval 1 day);

    结果为:2017-12-26 17:43:44

    类似的还有:

    set @dt = now();
    
    select date_add(@dt, interval 1 day);        -- add 1 day
    select date_add(@dt, interval 1 hour);       -- add 1 hour
    select date_add(@dt, interval 1 minute);     -- ...
    select date_add(@dt, interval 1 second);
    select date_add(@dt, interval 1 microsecond);
    select date_add(@dt, interval 1 week);
    select date_add(@dt, interval 1 month);
    select date_add(@dt, interval 1 quarter);
    select date_add(@dt, interval 1 year);
    
    select date_add(@dt, interval -1 day);       -- sub 1 day
  • 相关阅读:
    Ajax基本用法
    浏览器兼容性问题
    对闭包的简单理解
    JSON
    Ajax知识
    对jsonp原理理解
    java Active Object模式(上)
    物联网传输协议MQTT
    谈谈如何在面试中发掘程序猿的核心竞争力
    响应式Web设计的9项基本原则
  • 原文地址:https://www.cnblogs.com/banma/p/8125723.html
Copyright © 2020-2023  润新知