Heim >Datenbank >MySQL-Tutorial >Was ist MySQL Count?
mysql count ist eine Aggregatfunktion, die verwendet wird, um die Anzahl der Zeilen zurückzugeben, die den angegebenen Übereinstimmungsbedingungen entsprechen. Die Verwendungssyntax der Zählfunktion lautet beispielsweise „select count(*) from user;“, was bedeutet, dass alle Datensätze gezählt werden, einschließlich NULL .
Die Betriebsumgebung dieses Tutorials: Windows 10-System, MySQL8-Version, Dell G3-Computer.
Was ist MySQL Count?
Detaillierte Erklärung der MySQL-Statistikfunktion COUNT
1. Übersicht über die Funktion COUNT()
COUNT() ist eine Aggregatfunktion, die die Anzahl der Zeilen zurückgibt, die den angegebenen Übereinstimmungsbedingungen entsprechen. In der Entwicklung wird es häufig verwendet, um die Daten in der Tabelle zu zählen, also alle Daten, nicht NULL-Daten, oder um doppelte Daten zu entfernen.
2. COUNT() Parameterbeschreibung
COUNT(1): Zählt Datensätze, die nicht NULL sind.
COUNT(*): Zählt alle Datensätze (einschließlich NULL).
COUNT(Feld): Zählt die Datensätze, deren „Feld“ nicht NULL ist.
Wenn dieses Feld als nicht null definiert ist, lesen Sie dieses Feld Zeile für Zeile aus dem Datensatz, stellen Sie fest, dass es nicht null sein kann, und akkumulieren Sie es Zeile für Zeile.
Wenn die Felddefinition Null zulässt und festgestellt wird, dass er möglicherweise Null ist, muss der Wert herausgenommen und beurteilt werden. Wenn er nicht Null ist, wird er akkumuliert.
COUNT (DISTINCT-Feld): Zählt die Datensätze, bei denen das „Feld“ dedupliziert und nicht NULL ist.
-- 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() bestimmt die Existenz
SQL verwendet nicht mehr count, sondern LIMIT 1, sodass die Datenbankabfrage, wenn sie auf ein Element trifft, zurückkehrt und nicht weiter nach der Anzahl der Elemente sucht links. Beurteilen Sie einfach, ob es nicht leer ist.
Wählen Sie 1 aus emp LIMIT 1; die Effizienz ist am höchsten, insbesondere die Notwendigkeit, die Anzahl der Zeilen zu begrenzen, was leicht zu ignorieren ist.
-- 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() Ali-Entwicklungsspezifikationen
1. Verwenden Sie nicht count (Spaltenname) oder count (Konstante), um count() zu ersetzen, count() ist ein definierter Standard von SQL92 Die Syntax zum Zählen von Zeilen hat nichts mit der Datenbank und nichts mit NULL oder Nicht-NULL zu tun. Hinweis: count(*) zählt Zeilen mit NULL-Werten, während count(column name) keine Zeilen zählt mit NULL-Werten in dieser Spalte.
2. [Obligatorisch] count(distinct col) berechnet die Anzahl der eindeutigen Zeilen in der Spalte außer NULL. Beachten Sie, dass count(distinct col1, col2) alle NULL ist Selbst wenn die andere Spalte einen anderen Wert hat, wird dieser als 0 zurückgegeben.
[Verwandte Empfehlungen: MySQL-Video-Tutorial]
Das obige ist der detaillierte Inhalt vonWas ist MySQL Count?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!