• ADADADADAD

    mysql count的作用是什么[ mysql数据库 ]

    mysql数据库 时间:2024-11-25 13:36:01

    作者:文/会员上传

    简介:

    mysql count是一个聚合函数,用于返回指定匹配条件的行数;count函数的使用语法如“select count(*) from user;”,表示统计所有的记录,包括NULL。1. COUNT()函数概述COUNT() 是一

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    mysql count是一个聚合函数,用于返回指定匹配条件的行数;count函数的使用语法如“select count(*) from user;”,表示统计所有的记录,包括NULL。

    1. COUNT()函数概述

    COUNT() 是一个聚合函数,返回指定匹配条件的行数。开发中常用来统计表中数据,全部数据,不为NULL数据,或者去重数据。

    2. COUNT()参数说明

    COUNT(1):统计不为NULL 的记录。
    COUNT(*):统计所有的记录(包括NULL)。

    COUNT(字段):统计该"字段"不为NULL 的记录。

      如果这个字段是定义为not null的话,一行行地从记录里面读出这个字段,判断不能为null,按行累加。

      如果这个字段定义允许为null的话,判断到有可能是null,还要把值取出来在判断一下,不是null才累加。

      COUNT(DISTINCT 字段):统计该"字段"去重且不为NULL 的记录。

      --MySql统计函数count测试
      --创建用户表,新增测试数据
      CREATETABLE`user`(
      `id`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'ID主键',
      `name`varchar(64)DEFAULTNULLCOMMENT'姓名',
      `sex`varchar(8)DEFAULTNULLCOMMENT'性别',
      `age`int(4)DEFAULTNULLCOMMENT'年龄',
      `born`dateDEFAULTNULLCOMMENT'出生日期',
      PRIMARYKEY(`id`)
      )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4ROW_FORMAT=DYNAMICCOMMENT='用户表';

      INSERTINTO`category`.`user`(`id`,`name`,`sex`,`age`,`born`)VALUES(1,'%张三%','男',22,'2022-04-22');
      INSERTINTO`category`.`user`(`id`,`name`,`sex`,`age`,`born`)VALUES(2,'李四','女',12,'2022-04-01');
      INSERTINTO`category`.`user`(`id`,`name`,`sex`,`age`,`born`)VALUES(3,'王小二','女',12,'2022-04-28');
      INSERTINTO`category`.`user`(`id`,`name`,`sex`,`age`,`born`)VALUES(4,'赵四','男',23,'2022-04-28');
      INSERTINTO`category`.`user`(`id`,`name`,`sex`,`age`,`born`)VALUES(5,'','女',23,'2022-04-28');
      INSERTINTO`category`.`user`(`id`,`name`,`sex`,`age`,`born`)VALUES(6,NULL,'女',60,'2022-04-28');
      INSERTINTO`category`.`user`(`id`,`name`,`sex`,`age`,`born`)VALUES(7,NULL,'女',61,'2022-04-28');

      select*fromuser;

      --统计数据:7条数据,统计所有的记录(包括NULL)。
      selectcount(*)fromuser;

      --统计数据:7条数据,统计不为NULL的记录。
      selectcount(1)fromuser;

      --统计数据:5条数据,COUNT(字段):统计该"字段"不为NULL的记录,注意是null不是空''字符串
      selectcount(name)fromuser;

      --统计数据:5条数据,COUNT(DISTINCT字段):统计该"字段"去重且不为NULL的记录。
      selectcount(distinctname)fromuser;

      3. COUNT()判断存在

      SQL不再使用count,而是改用LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了,业务代码中直接判断是否非空即可。
      select 1 from emp LIMIT 1;效率是最高的,尤其是需要limit限制行数,很容易忽略。

      --SQL查找是否"存在"
      --员工表,存在则进行删除
      droptableifEXISTSemp;
      createtableemp(
      idintunsignedprimarykeyauto_increment,
      empnomediumintunsignednotnulldefault0,
      empnamevarchar(20)notnulldefault"",
      jobvarchar(9)notnulldefault"",
      mgrmediumintunsignednotnulldefault0,
      hiredatedatetimenotnull,
      saldecimal(7,2)notnull,
      comndecimal(7,2)notnull,
      depnomediumintunsignednotnulldefault0
      );

      --新增cehsi数据
      测试数据:https://blog.csdn.net/m0_37583655/article/details/124385347

      --cahxun
      select*fromemp;

      --时间:1.082s,数据:5000000
      explainselectcount(*)fromemp;

      idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
      1SIMPLESelecttablesoptimizedaway

      --时间:1.129s,数据:5000000
      explainselectcount(1)fromemp;
      idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
      1SIMPLESelecttablesoptimizedaway

      --时间:1.695s,数据:5000000
      explainselect1fromemp;
      idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
      1SIMPLEempidx_emp_depno34981060100.00Usingindex

      --SQL不再使用count,而是改用LIMIT1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了,业务代码中直接判断是否非空即可
      --时间:0.001s,数据:5000000
      explainselect1fromempLIMIT1;
      idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
      1SIMPLEempidx_emp_depno34981060100.00Usingindex

      4. COUNT()阿里开发规范

      1.【强制】不要使用 count(列名)或 count(常量)来替代 count(),count()是 SQL92 定义的标 准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关. 说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行.

      2.【强制】count(distinct col) 计算该列除 NULL 之外的不重复行数,注意 count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值,也返回为 0.

    mysql count的作用是什么.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlcount