在本文中,我们将讨论 MySQL 中的 COUNT 函数,并通过示例来帮助理解其用法。COUNT 函数用于计算结果集中返回的数据行数。它可以计算不同或所有值,并且不会计算 NULL 值。
MySQL 中的函数
MySQL 中有许多预定义函数用于对数据行执行各种操作。函数主要分为两类:
- 聚合函数
:仅对一组行进行操作,返回单个聚合结果值。常见的聚合函数包括: COUNT()
、MIN()
、MAX()
、SUM()
等。 - 标量函数
:对单个输入值进行操作,返回单个结果值。常见的标量函数包括: LEN()
、ROUND()
、SUBSTRING()
、CASE()
、NOW()
等。
MySQL COUNT() 函数
COUNT 函数用于计算结果集中返回的数据行数。其基本语法如下:
SELECT COUNT(*) AS total_rows FROM tablename;
SELECT COUNT(DISTINCT columnname) AS total_rows FROM tablename;复制
示例:理解 MySQL COUNT 函数
我们将使用以下的员工(Employee)和项目(Projects)表来理解 MySQL COUNT 函数的用法。
创建和填充数据表
以下 SQL 脚本用于创建和填充员工和项目表:
CREATE DATABASE Company;
USE Company;
CREATETABLE Employee (
IdINT PRIMARY KEY,
NameVARCHAR(45) NOTNULL,
Department VARCHAR(45) NOTNULL,
Salary FLOATNOTNULL,
Gender VARCHAR(45) NOTNULL,
Age INTNOTNULL,
City VARCHAR(45) NOTNULL
);
INSERTINTO Employee VALUES
(1001, '张伟', 'IT', 35000, '男', 25, '北京'),
(1002, '李娜', 'HR', 45000, '女', 27, '上海'),
(1003, '王强', 'Finance', 50000, '男', 28, '广州'),
(1004, '刘洋', 'Finance', 50000, '男', 28, '深圳'),
(1005, '陈静', 'HR', 75000, '女', 26, '杭州'),
(1006, '赵磊', 'IT', 35000, '男', 25, '南京'),
(1007, '周敏', 'HR', 45000, '女', 27, '武汉'),
(1008, '孙伟', 'IT', 50000, '男', 28, '成都'),
(1009, '吴刚', 'IT', 50000, '男', 28, '西安'),
(1010, '郑丽', 'HR', 75000, '女', 26, '重庆');
CREATETABLE Projects (
ProjectId INT PRIMARY KEY,
Title VARCHAR(200) NOTNULL,
ClientId INT,
EmployeeId INT,
StartDate DATETIME,
EndDate DATETIME,
FOREIGN KEY (EmployeeId) REFERENCES Employee(Id)
);
INSERTINTO Projects VALUES
(1, '开发电子商务网站', 1, 1003, NOW(), DATE_ADD(NOW(), INTERVAL30DAY)),
(2, '为公司制作WordPress网站', 1, 1002, NOW(), DATE_ADD(NOW(), INTERVAL45DAY)),
(3, '管理公司服务器', 2, 1007, NOW(), DATE_ADD(NOW(), INTERVAL45DAY)),
(4, '托管账户无法使用', 3, 1009, NOW(), DATE_ADD(NOW(), INTERVAL7DAY)),
(5, '从桌面应用程序访问MySQL数据库', 4, 1010, NOW(), DATE_ADD(NOW(), INTERVAL15DAY)),
(6, '为我的商业网站开发新的WordPress插件', 2, NULL, NOW(), DATE_ADD(NOW(), INTERVAL10DAY)),
(7, '将Web应用程序和数据库迁移到新服务器', 2, NULL, NOW(), DATE_ADD(NOW(), INTERVAL5DAY)),
(8, 'Android应用程序开发', 4, 1004, NOW(), DATE_ADD(NOW(), INTERVAL30DAY)),
(9, '托管账户无法使用', 3, 1001, NOW(), DATE_ADD(NOW(), INTERVAL7DAY)),
(10, '从桌面应用程序访问MySQL数据库', 4, 1008, NOW(), DATE_ADD(NOW(), INTERVAL15DAY)),
(11, '为我的商业网站开发新的WordPress插件', 2, NULL, NOW(), DATE_ADD(NOW(), INTERVAL10DAY));复制
示例:计算员工总数
我们可以使用 COUNT 函数来计算员工表中的数据行数。执行以下 SQL 语句:
SELECT COUNT(*) AS Total_Employees FROM Employee;
复制

执行后,您将得到以下输出,表明员工表中有 10 行数据。
使用别名的 COUNT 函数
我们可以使用别名为数据列命名。默认情况下,列名为 COUNT(*)
,我们可以将其更改为 Total_Employees
:
SELECT COUNT(*) AS Total_Employees FROM Employee;
复制

执行后,输出的列名将为 Total_Employees
。
计算不同值的数量
我们可以计算每个部门的员工数量。使用 GROUP BY 子句来按部门分组,并应用 COUNT 函数:
SELECT Department, COUNT(*) AS Total_Employees FROM Employee GROUP BY Department;
复制

执行后,您将得到每个部门的员工数量。
MySQL COUNT 函数与连接
我们可以使用 LEFT JOIN 来获取两个表的匹配记录以及左侧表的非匹配记录。以下是一个示例:
SELECT emp.Id AS EmployeeId, emp.Name, prj.Title AS ProjectTitle
FROM Employee AS emp
LEFT OUTER JOIN Projects AS prj ON emp.Id = prj.EmployeeId;复制

执行后,您将看到 10 行数据,其中 8 行的标题列有字符串值,而剩余的行标题列为 NULL。
如果我们尝试计算标题列的总数据行数,使用以下 SQL 语句:
SELECT COUNT(prj.Title) AS TotalProjects
FROM Employee AS emp
LEFT OUTER JOIN Projects AS prj ON emp.Id = prj.EmployeeId;复制

执行后,您将得到 8 的输出,因为 COUNT 函数不会计算 NULL 值。
结论
在本文中,我们讨论了 MySQL 中的 COUNT 函数及其用法。希望这些示例能帮助您更好地理解如何使用 COUNT 函数进行数据统计。如果您有任何问题或反馈,请随时与我们联系。
如果你正在从事上位机、自动化、机器视觉、物联网(IOT)项目或数字化转型方面的工作,欢迎加入我的微信圈子!在这里,我们不仅可以轻松畅聊最新技术动态和行业趋势,还能够在技术问题上互相帮助和支持。我会尽量利用我的知识和经验来帮助你解决问题,当然也期待从大家的专业见解中学习和成长。无论你是新手还是老鸟,期待与志同道合的朋友交流心得,一起进步!