- 参考资料
- 《MySQL必知必会(文字版)》
1、创建计算字段
1.1 计算字段
- 字段(
field)基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列, 而术语字段通常用在计算字段的连接上。
- 如果存储在表中的数据都不是应用程序所需要的,我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是 检索出数据,然后再在客户机应用程序或报告程序中重新格式化。
- 计算字段并不实际存在于数据库表中。计算字段是运行时在
SELECT语句内创建的。
- 只有数据库知道
SELECT语句中哪些列是实际的 表列,哪些列是计算字段。从客户机(如应用程序)的角度来看,计算 字段的数据是以与其他列的数据相同的方式返回的。
1.2 拼接字段
- 拼接(
concatenate) 将值联结到一起构成单个值。
- 在
MySQL的SELECT语句中,可使用Concat()函数来拼接两个列。

1.3 使用别名
- 别名(
alias)是一个字段或值的替换名。别名用AS关键字赋予- 别名用途:常见的用途包括在实际的表列名包含不符合规定的字符(如空格)时重新命名它,在原来的名字含混或容易误解时扩充它,等等

1.4 执行算术计算


2、使用数据处理函数
2.1 函数没有SQL的可移植性强

2.2 文本处理函数

2.2 日期和时间处理函
- 日期格式:
yyyy-mm-dd- 指示
MySQL仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较。

- 实例


2.3 数值处理函数

3、汇 总 数 据
3.1 聚集函数
- 聚集函数(
aggregate function) 运行在行组上,计算和返回单个值的函数。

3.2 AVG()函数
AVG()通过对表中行数计数并计算特定列值之和,求得该列的平均值。AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。AVG()函数忽略列值为NULL的行。

3.3 COUNT()函数
COUNT()函数进行计数。可利用COUNT()确定表中行的数目或符合特定条件的行的数目。- 使用
COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。

- 使用
COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

3.4 MAX()函数和MIN()函数
MAX()返回指定列中的最大值。MAX()要求指定列名MAX()函数忽略列值为NULL的行。- 对非数值数据使用
MAX():
- 虽然
MAX()一般用来找出最大的数值或日期值,但MySQL允许将它用来返回任意列中的最大 值,包括返回文本列中的最大值。在用于文本数据时,如果数据按相应的列排序,则MAX()返回最后一行。

MIN()函数与MAX()函数类似。
3.5SUM()函数
SUM()用来返回指定列值的和(总计)。SUM()函数忽略列值为NULL的行
- 检索所订购物品的总数(所有 quantity 值之和)
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;

3.6 聚集不同值
- 以上 5 个聚集函数都可以如下使用:
- 对所有行执行计算,指定
ALL参数或不指定参数(因为ALL是默认行为)。- 只包含不同的值,指定
DISTINCT参数。
- 此平均值只考虑各个不同的价格:
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';

- 如果指定列名,则
DISTINCT只能用于COUNT()。DISTINCT不能用于COUNT(*)。- 类似地,
DISTINCT必须使用列名,不能用于计算或表达式。