kiraan mysql ialah fungsi agregat yang digunakan untuk mengembalikan bilangan baris yang sepadan dengan keadaan padanan yang ditentukan sintaks penggunaan fungsi kiraan adalah seperti "pilih kiraan(*) daripada pengguna;", yang bermaksud mengira semua; rekod, termasuk NULL.
Tutorial ini Persekitaran pengendalian: Sistem Windows 10, versi mysql8, komputer Dell G3.
Apakah kiraan mysql?
Penjelasan terperinci tentang fungsi statistik MySql COUNT
1 Gambaran keseluruhan fungsi COUNT()
COUNT(. ) ialah fungsi Agregasi yang mengembalikan bilangan baris yang sepadan dengan syarat yang ditentukan. Dalam pembangunan, ia sering digunakan untuk mengira data dalam jadual, semua data, bukan data NULL, atau untuk mengalih keluar data pendua.
2. COUNT() perihalan parameter
COUNT(1): Kira rekod yang bukan NULL.
COUNT(*): Kira semua rekod (termasuk NULL).
COUNT (medan): Kira rekod di mana "medan" bukan NULL.
Jika medan ini ditakrifkan sebagai bukan nol, baca medan ini daripada rekod baris demi baris, nilai bahawa ia tidak boleh batal dan kumpulkan baris demi baris.
Jika takrifan medan membenarkan batal, ia dinilai bahawa ia mungkin batal, dan nilainya mesti dikeluarkan dan dinilai Jika ia tidak batal, ia akan terkumpul.
COUNT(medan DISTINCT): Kira rekod "medan" ini yang dinyahduakan dan bukan 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() menentukan kewujudan
SQL tidak lagi menggunakan kiraan, sebaliknya menggunakan LIMIT 1, membenarkan pangkalan data kembali apabila ia menemui satu , jangan terus mencari berapa banyak item yang ada, cuma tentukan sama ada ia tidak kosong dalam kod perniagaan.
pilih 1 daripada emp LIMIT 1; Kecekapan adalah yang paling tinggi, terutamanya keperluan untuk mengehadkan bilangan baris, yang mudah diabaikan.
-- 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() Spesifikasi pembangunan Ali
1 ( constant) untuk menggantikan count(), count() ialah sintaks standard untuk mengira baris yang ditakrifkan oleh SQL92, yang tiada kaitan dengan pangkalan data dan tiada kaitan dengan NULL atau bukan NULL. Nota: count(*) akan mengira nilai sebagai baris NULL dan count (nama lajur) tidak akan mengira baris dengan nilai NULL dalam lajur ini
2 bilangan baris unik dalam lajur ini kecuali NULL Nota count(distinct col1, col2) Jika salah satu lajur adalah semua NULL, maka walaupun lajur lain mempunyai nilai yang berbeza, ia akan mengembalikan 0.
[Cadangan berkaitan: tutorial video mysql】
Atas ialah kandungan terperinci apakah kiraan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!