Rumah > pangkalan data > tutorial mysql > apakah kiraan mysql

apakah kiraan mysql

藏色散人
Lepaskan: 2023-04-05 15:20:07
asal
3357 orang telah melayarinya

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.

apakah kiraan mysql

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;
Salin selepas log masuk

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
Salin selepas log masuk

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.

apakah kiraan mysql

[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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan