#このチュートリアル 動作環境: Windows 10 システム、mysql8 バージョン、Dell G3 コンピューター。mysql count は、指定された一致条件に一致する行数を返すために使用される集計関数です。count 関数の構文は、「select count(*) from user;」などで、すべてのレコードをカウントすることを意味します。 NULL を含む。
mysql カウントとは何ですか?
MySql 統計関数 COUNT の詳細説明 COUNT() は指定された条件に一致する行の数を返す集計関数。開発では、テーブル内のデータ (NULL データではなくすべてのデータ) をカウントしたり、重複データを削除したりするためによく使用されます。 COUNT(1): NULL ではないレコードをカウントします。 COUNT(*): すべてのレコードをカウントします (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 index1. [必須] count (列名) または count (定数) は使用しないでください) count(
) を置き換えるために、count() は SQL92 で定義された行をカウントするための標準構文です。これはデータベースとは関係がなく、NULL または非 NULL とも関係ありません。 count(*) は NULL 値を持つ行をカウントします。 、および count (列名) はこの列内の NULL 値を持つ行をカウントしません。
2. [必須] count(distinctcol) は数値を計算しますこの列内の NULL を除く一意の行の数 count( uniquecol1,col2) 列の 1 つがすべて NULL の場合、他の列の値が異なる場合でも、0.# が返されることに注意してください。[関連する推奨事項:
mysql ビデオ チュートリアル以上がmysqlカウントとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。