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
  • 相关阅读:
    Groovy基本语法
    利用IntelliJ IDEA创建第一个Groovy工程
    创建maven或者Gradle项目的时候GroupId和ArtifactId以及Version是什么意思?
    使用IDEA2017创建java web +maven项目
    Eclipse集成Tomcat的步骤,我已测试N次都是成功的
    访问 Tomcat支配项目去除项目名和端口号通过IP地址(或域名)访问
    SSM框架原理,作用及使用方法
    SpringMVC整合Shiro权限框架
    svn过滤文件配置
    svn
  • 原文地址:https://www.cnblogs.com/banma/p/8125723.html
Copyright © 2011-2022 走看看