首页数据库mysql count的作用是什么

mysql count的作用是什么

时间2023-04-05 14:10:01发布访客分类数据库浏览616
导读:本篇内容主要讲解“mysql count的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql count的作用是什么”吧! mysql count是一...
本篇内容主要讲解“mysql count的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql count的作用是什么”吧!

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;

id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE Selecttablesoptimizedaway

--时间:1.129s,数据:5000000
explainselectcount(1)fromemp;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE Selecttablesoptimizedaway

--时间:1.695s,数据:5000000
explainselect1fromemp;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE emp idx_emp_depno 3 4981060 100.00 Usingindex

--SQL不再使用count,而是改用LIMIT1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了,业务代码中直接判断是否非空即可
--时间:0.001s,数据:5000000
explainselect1fromempLIMIT1;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE emp idx_emp_depno 3 4981060 100.00 Usingindex

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的作用是什么”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

mysqlcount

若转载请注明出处: mysql count的作用是什么
本文地址: https://pptw.com/jishu/1796.html
腾讯云解析我的世界服务器ip 我的世界云端服务器 mysql fabric的概念是什么

游客 回复需填写必要信息