内容来自《MySQL从入门到精通》清华大学出版社一书的内容,随看书随打打笔记,会不断补充
有时候并不需要返回实际表中的数据,而只是对数据进行总结。
函数 | 作用 |
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值的和 |
COUNT()函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。使用方法如下两种:
1.COUNT(*)计算表中总的行数,不管某列有数值或者为空值。
2.COUNT(字段名)计算指定列下总的行数,计算时将忽略空值的行。
例:查询customers表中总的行数
CREATE TABLE customers
(
c_id int NOT NULL AUTO_INCREMENT,
c_name char(50) NOT NULL,
c_address char(50) NULL,
c_city char(50) NULL,
c_zip char(10) NULL,
c_contact char(50) NULL,
c_email char(255) NULL,
PRIMARY KEY (c_id)
);
INSERT INTO customers(c_id, c_name, c_address, c_city, c_zip, c_contact, c_email)
VALUES(10001, 'RedHook', '200 Street ', 'Tianjin', '300000', 'LiMing', '[email protected]'),
(10002, 'Stars', '333 Fromage Lane', 'Dalian', '116000', 'Zhangbo','[email protected]'),
(10003, 'Netbhood', '1 Sunny Place', 'Qingdao', '266000', 'LuoCong', NULL),
(10004, 'JOTO', '829 Riverside Drive', 'Haikou', '570000', 'YangShan', '[email protected]');
SELECT COUNT(*) AS cust_num FROM customers;
查询customers表中有电子邮箱的顾客的总数
两种方式对待NULL值的方式不同。即指定列的值为空的行被COUNT()函数忽略,但是如果不指定列,而在COUNT()函数中使用“*”,则所有记录都不会被忽略。
例:COUNT()函数和GROUP BY 关键字一起使用,用来计算不同分组中的记录总数
SUM()是一个求总和的函数,返回指定列值的综合。
例:在orderitems表中查询30005号订单一共购买的水果总量
在orderitems表中,使用SUM()函数统计不同订单号中订购的水果总量
SUM()函数在计算时,忽略列值为NULL的行。
AVG()函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。
例:在fruits表中,查询每一个供应商的水果价格的平均值
AVG()函数使用时,其参数为要计算的列名称,如果要得到多个列的多个平均值,则需要在每一列上使用AVG()函数。
MAX()返回指定列中的最大值。
例:在fruits表中查找不同供应商提供的价格最高的水果
MAX()函数不仅适用于查找数值类型,也可应用于字符类型。按照字符的ASCII码值大小进行比较,逐位比较。
MIN()返回查询列中的最小值。
例:在fruits表中查找不同供应商提供的价格最低的水果