**1、count (1)、count (*) 与 count (列名) 的区别**

count(1) count(*) count (列名)
作用 统计表中的所有的记录数 会统计表中的所有的记录数 统计该字段在表中出现的次数
是否包含字段为 null 包含 包含 不包含
区别 count (1) 和 count (*) 基本没差别,实际建议count (*) count (1) 和 count (*) 基本没差别实际建议count (*)

效率:

  • 列名为主键,count (列名) 会比 count (1) 快
  • 列名不为主键,count (1) 会比 count (列名) 快
  • 如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)
  • 如果有主键,则 select count(主键)的执行效率是最优的
  • 如果表只有一个字段,则 select count(*)最优。

2、MYSQL 中Null 和空串的区别,以及比较

null 空字符串
含义 “没有值” 或 “未知值”,且它被看作与众不同的值。 空字符串
比较 IS NULL或者IS NOT NULL =、< 或!=

如果字符串和Null比较,会发生什么情况?
注意:=<=>的区别

3、各函数对Null的处理

函数 效果
AVG () 忽略 NULL 值,而不是将其作为 “0” 参与计算
COUNT(*) 不忽略NULL 值
COUNT (字段名) 忽略NULL 值
SUM () 忽略 NULL 值。且当对多个列运算求和时,如果运算的列中任意一列的值为 NULL,则忽略这行的记录。
GROUP BY 两个 NULL 值视为相同。
如果运行 ORDER BY ... ASC,则 NULL 值出现在最前,若运行 ORDER BY ... DESC,则 NULL 值出现在最后。
distinct 无论遇到多少个空值,结果中只返回一个 null

附、参考:

  1. count (1)、count (*) 与 count (列名) 的执行区别 - iFuMI 的博客 - CSDN 博客
    注:很棒的一篇文章。
  2. 高性能 MySQL——Count (1) OR Count (*)? - 知乎
    注:原文有错,不过还是值得参考。
  3. SQL 中的 SUM ()、AVG ()、COUNT () 等聚集函数对 NULL 值的处理方法 - J__Max 的博客 - CSDN 博客
  4. MySql 判断是否为 null 或空字符串 - bestlove12345 的博客 - CSDN 博客
  5. MySql 中判断字符串相等 - 洋成林 - CSDN 博客

MySql中的count、NULL和空串的区别的更多相关文章

  1. 用count(*)还是count(列名) || Mysql中的count()与sum()区别

    Mysql中的count()与sum()区别   首先创建个表说明问题 CREATE TABLE `result` (   `name` varchar(20) default NULL,   `su ...

  2. 重新认识MySQL中的COUNT语句

    在数据库的增删改查操作中,使用最频繁的就是查询操作. 而在所有查询操作中,统计数量操作更是经常被用到. 关于数据库中行数统计,无论是MySQL还是Oracle亦或者是SqlServer,都有一个函数可 ...

  3. mysql中的where和having子句的区别

    mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...

  4. MySQL中char、varchar和text的区别

    三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填 ...

  5. mysql中 REPLACE INTO 和 INSERT INTO 的区别

    mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...

  6. MySQL中TEXT与BLOB字段类型的区别

    这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下   在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程 ...

  7. mysql中 drop、truncate和delete的区别

    mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNC ...

  8. mysql中的count(primary_key)、count(1)、count(*)的区别

    表结构如下: mysql> show create table user\G; *************************** 1. row ********************** ...

  9. 【网络收集】MySql中IS NOT NULL与!=NULL的区别

    在mysql中,筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实如果去运行一下试试的话差别会很大!为什么会出现这种情况呢?null 表示什么也 ...

随机推荐

  1. 解压 .tar.xz 格式的压缩文件

    第一种方法: xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64 ...

  2. SVN安装与汉化

    官网地址:http://tortoisesvn.net/downloads.html 如地址过期可自行百度官网,下载安装包安装64/32位 如果需要汉化的同学,同样在下载页面,往下拉Language ...

  3. 【题解】间隔排列-C++

    题目Description小Q是班长.在校运动会上,小Q班要进行队列表演.小Q要选出2*N名同学编队,每人都被编上一个号,每一个从1到N的自然数都被某2名同学佩戴,现在要求将他们排成一列,使两个编号为 ...

  4. animation-timing-function

    animation-timing-function 语法: animation-timing-function:<single-animation-timing-function>[,&l ...

  5. mouseenter([[data],fn])

    mouseenter([[data],fn]) 概述 当鼠标指针穿过元素时,会发生 mouseenter 事件.该事件大多数时候会与mouseleave 事件一起使用.广州大理石机械构件 与 mous ...

  6. Shell 02 数据运算/条件测试

    一.整数运算工具 1.使用expr命令(运算两边必须有空格,引用变量时必须加$符号) [root@svr5 ~]# x=10    //定义变量x expr $x + 10      20       ...

  7. Win10配置Java环境变量

    很多同学在学习Java入门的时候被Java环境变量搞的一头雾水,今天这篇文章拓薪教育就来说一下如何在win10下配置环境变量; 下载jdk安装包: 首先我们需要下载jdk的安装包,这里提供jdk的安装 ...

  8. Egyptian Collegiate Programming Contest (ECPC 2015)

    题目链接:https://vjudge.net/contest/155219#overview. A题,用全排列来找出比当前这个数字字典序还大的排列有几个,然后前缀和dp即可.据说可以康拓展开来快速找 ...

  9. nginx 配置 nodejs 反向代理

    upstream my_nodejs_upstream { server ; keepalive ; } server { listen ; server_name www.my-website.co ...

  10. mysql 常见面试题

    附录: https://mp.weixin.qq.com/s/pC0_Y7M7BkoUmlRwneZZdA 一.为什么用自增列作为主键 1.如果我们定义了主键(PRIMARY KEY),那么InnoD ...