久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql count的作用是什么

172次閱讀
沒有評論

共計 3573 個字符,預計需要花費 9 分鐘才能閱讀完成。

本篇內容主要講解“mysql count 的作用是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“mysql count 的作用是什么”吧!

mysql count 是一個聚合函數,用于返回指定匹配條件的行數;count 函數的使用語法如“select count(*) from user;”,表示統計所有的記錄,包括 NULL。

1. COUNT()函數概述

COUNT() 是一個聚合函數,返回指定匹配條件的行數。開發中常用來統計表中數據,全部數據,不為 NULL 數據,或者去重數據。

2. COUNT()參數說明

COUNT(1):統計不為 NULL 的記錄。
COUNT(*):統計所有的記錄(包括 NULL)。

COUNT(字段):統計該 字段 不為 NULL 的記錄。

如果這個字段是定義為 not null 的話,一行行地從記錄里面讀出這個字段,判斷不能為 null,按行累加。

如果這個字段定義允許為 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; 效率是最高的,尤其是需要 limit 限制行數,很容易忽略。

-- 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()阿里開發規范

1.【強制】不要使用 count(列名)或 count(常量)來替代 count(),count()是 SQL92 定義的標 準統計行數的語法, 跟數據庫無關, 跟 NULL 和非 NULL 無關. 說明:count(*)會統計值為 NULL 的行, 而 count(列名)不會統計此列為 NULL 值的行.

2.【強制】count(distinct col) 計算該列除 NULL 之外的不重復行數, 注意 count(distinct col1, col2) 如果其中一列全為 NULL, 那么即使另一列有不同的值, 也返回為 0.

到此,相信大家對“mysql count 的作用是什么”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計3573字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 阜新| 乌兰浩特市| 景泰县| 龙南县| 阿巴嘎旗| 乌兰察布市| 巴中市| 丹凤县| 堆龙德庆县| 准格尔旗| 石门县| 怀宁县| 肇东市| 香港| 赣州市| 抚顺县| 咸宁市| 山西省| 宝丰县| 大丰市| 安顺市| 麦盖提县| 福州市| 平舆县| 贺州市| 黔南| 潞城市| 抚顺县| 营口市| 巴林左旗| 澳门| 平和县| 德兴市| 胶州市| 辽阳市| 永昌县| 宜都市| 湟中县| 抚远县| 易门县| 辽中县|