Maison >base de données >tutoriel mysql >quel est le nombre de MySQL

quel est le nombre de MySQL

藏色散人
藏色散人original
2023-04-03 15:45:473362parcourir

mysql count est une fonction d'agrégation utilisée pour renvoyer le nombre de lignes qui correspondent aux conditions de correspondance spécifiées ; la syntaxe d'utilisation de la fonction count est telle que "select count(*) from user;", ce qui signifie compter tous les enregistrements, y compris NULL. .

quel est le nombre de MySQL

L'environnement d'exploitation de ce tutoriel : système Windows 10, version mysql8, ordinateur Dell G3.

Qu'est-ce que le nombre de MySQL ?

Explication détaillée de la fonction statistique MySql COUNT

1 Présentation de la fonction COUNT()

COUNT() est une fonction d'agrégation qui renvoie le nombre de lignes qui correspondent aux conditions de correspondance spécifiées. En développement, il est souvent utilisé pour compter les données du tableau, toutes les données, et non les données NULL, ou pour supprimer les données en double.

2. Description du paramètre COUNT()

COUNT(1) : compte les enregistrements qui ne sont pas NULL.
COUNT(*) : compte tous les enregistrements (y compris NULL).

COUNT(field) : Compte les enregistrements dont le "field" n'est pas NULL.

  • Si ce champ est défini comme non nul, lisez ce champ de l'enregistrement ligne par ligne, jugez qu'il ne peut pas être nul et accumulez-le ligne par ligne.

  • Si la définition du champ autorise null, s'il est jugé qu'il peut être nul, la valeur doit être retirée et jugée. Si elle n'est pas nulle, elle sera accumulée.

COUNT (champ DISTINCT) : Compte les enregistrements où le "champ" est dédupliqué et n'est pas NULL.

-- MySql统计函数count测试
-- 创建用户表,新增测试数据
CREATE TABLE `user` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID主键',
  `name` varchar(64) DEFAULT NULL COMMENT '姓名',
  `sex` varchar(8) DEFAULT NULL COMMENT '性别',
  `age` int(4) DEFAULT NULL COMMENT '年龄',
  `born` date DEFAULT NULL COMMENT '出生日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户表';

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

select * from user;

-- 统计数据:7条数据,统计所有的记录(包括NULL)。
select count(*) from user;

-- 统计数据:7条数据,统计不为NULL 的记录。
select count(1) from user;

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

-- 统计数据:5条数据,COUNT(DISTINCT 字段):统计该"字段"去重且不为NULL 的记录。
select count(distinct name) from user;

3. COUNT() détermine l'existence

SQL n'utilise plus le nombre, mais utilise plutôt LIMIT 1, de sorte que lorsque la requête de base de données rencontre un élément, elle renvoie et ne continue pas à rechercher le nombre d'éléments. à gauche, dans le code métier, jugez simplement s'il n'est pas vide directement.
select 1 from emp LIMIT 1; L'efficacité est la plus élevée, notamment la nécessité de limiter le nombre de lignes, ce qui est facile à ignorer.

-- SQL查找是否"存在"
-- 员工表,存在则进行删除
drop table if EXISTS emp;
create table emp(
    id int unsigned primary key auto_increment,
    empno mediumint unsigned not null default 0,
    empname varchar(20) not null default "",
    job varchar(9) not null default "",
    mgr mediumint unsigned not null default 0,
    hiredate datetime not null,
    sal decimal(7,2) not null,
    comn decimal(7,2) not null,
    depno mediumint unsigned not null default 0
);

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

-- cahxun 
select * from emp ;

-- 时间:1.082s,数据:5000000
explain select count(*) from emp;

id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	  SIMPLE										Select tables optimized away

-- 时间:1.129s,数据:5000000
explain select count(1) from emp;
id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	  SIMPLE				Select tables optimized away

-- 时间:1.695s,数据:5000000
explain select 1 from emp;
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	Using index

-- SQL不再使用count,而是改用LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了,业务代码中直接判断是否非空即可
-- 时间:0.001s,数据:5000000
explain select 1 from emp LIMIT 1;
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	Using index

4. COUNT() Spécifications de développement d'Ali

1 [Obligatoire] N'utilisez pas count (nom de colonne) ou count (constante) pour remplacer count(), count() est une norme définie. par SQL92 La syntaxe de comptage des lignes n'a rien à voir avec la base de données et n'a rien à voir avec NULL ou non NULL Remarque : count(*) comptera les lignes avec des valeurs NULL, tandis que count(column name) ne comptera pas les lignes. avec des valeurs NULL dans cette colonne.

2. [Obligatoire] count(distinct col) calcule le nombre de lignes uniques dans la colonne sauf NULL Notez que count(distinct col1, col2) si l'une des colonnes est toutes NULL. , alors même si l'autre colonne a une valeur différente, elle sera renvoyée sous la forme 0.

quel est le nombre de MySQL

[Recommandations associées : tutoriel vidéo mysql]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:qu'est-ce que le tissu MySQLArticle suivant:qu'est-ce que le tissu MySQL