ホームページ  >  記事  >  データベース  >  mysqlカウントとは何ですか

mysqlカウントとは何ですか

藏色散人
藏色散人オリジナル
2023-04-03 15:45:473298ブラウズ

mysql count は、指定された一致条件に一致する行数を返すために使用される集計関数です。count 関数の構文は、「select count(*) from user;」などで、すべてのレコードをカウントすることを意味します。 NULL を含む。

mysqlカウントとは何ですか

#このチュートリアル 動作環境: Windows 10 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql カウントとは何ですか?

MySql 統計関数 COUNT の詳細説明

1. COUNT() 関数の概要

COUNT() は指定された条件に一致する行の数を返す集計関数。開発では、テーブル内のデータ (NULL データではなくすべてのデータ) をカウントしたり、重複データを削除したりするためによく使用されます。

#2. COUNT() パラメータの説明

COUNT(1): NULL ではないレコードをカウントします。

COUNT(*): すべてのレコードをカウントします (NULL を含む)。

COUNT(field): 「field」が NULL ではないレコードをカウントします。

  • このフィールドが not null として定義されている場合、レコードからこのフィールドを 1 行ずつ読み取り、null になり得ないと判断し、1 行ずつ蓄積します。

  • このフィールド定義が null を許可している場合は、null の可能性があると判断し、値を取り出して判定し、null でない場合は累積します。

COUNT(DISTINCT フィールド): 「フィールド」が重複排除され、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() は存在を決定します

SQL は count を使用しなくなり、代わりに LIMIT 1 を使用するようになりました。項目数の検索を続けると、ビジネス コード内で項目が空でないかどうかを直接判断できます。

select 1 from emp LIMIT 1; 効率が最も高く、特に行数を制限する必要がありますが、これは無視されがちです。

-- 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() Alibaba 開発仕様

1. [必須] count (列名) または count (定数) は使用しないでください) count(

) を置き換えるために、count() は SQL92 で定義された行をカウントするための標準構文です。これはデータベースとは関係がなく、NULL または非 NULL とも関係ありません。 count(*) は NULL 値を持つ行をカウントします。 、および count (列名) はこの列内の NULL 値を持つ行をカウントしません。

2. [必須] count(distinctcol) は数値を計算しますこの列内の NULL を除く一意の行の数 count( uniquecol1,col2) 列の 1 つがすべて NULL の場合、他の列の値が異なる場合でも、0.

# が返されることに注意してください。

mysqlカウントとは何ですか[関連する推奨事項:

mysql ビデオ チュートリアル

]

以上がmysqlカウントとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。