zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    CodeForces 58C Trees
    【转】二分匹配题集
    HDU2604 Queuing
    HDU1281 棋盘游戏
    HDU3360 National Treasures
    HDU2444 The Accomodation of Students
    HDU1498 50 years, 50 colors
    HDU1068 Girls and Boys
    【转】常用的latex宏包
    【转】网络流题集
  • 原文地址:https://www.cnblogs.com/banma/p/8125723.html
Copyright © 2011-2022 走看看