函数
计算字段
Concat() 拼接
SELECT Concat(column1, '(', column2, ')') FROM table
AS value 使用别名
SELECT Concat(column1, '(', column2, ')') AS columnValue FROM table
执行算术计算
SELECT column1 * column2 AS result FROM table
支持加减乘除,可以用圆括号区分优先顺序。
数据处理函数
文本处理
- LTrim、RTrim、Trim:去除前尾空格
- Left、Right:返回串左右边的字符
- Locate:找出串的一个子串
- Length:返回串的长度
- SubString:返回子串的字符
- Soundex:返回串的SOUNDEX值(对发音进行匹配)
日期和时间处理
MySQL使用的日期格式:
yyyy-mm-dd
- 获取某一天的订单,数据库中日期包含时间:
SELECT id, name FROM orders WHERE Date(date) = '2005-09-01'
- 获取某个时间范围内的订单:
SELECT id, name FROM orders WHERE Date(date) BETWEEN '2005-09-01 AND '2005-09-30'
SELECT id, name FROM orders WHERE YEAR(date) = '2005' AND Month(date) = '9'
数值处理函数
汇总数据
聚集函数
AVG()
:SELECT AVG(price) AS avg_price FROM products
- 只能用于单列
NULL
值会忽略
COUNT()
:SELECT COUNT(*) AS num_count FROM customers
COUNT(*)
对表中行的数目进行计数,包括空值COUNT(column)
对特定列中具有值的行进行计数,忽略空值
MAX()
:SELECT MAX(price) AS max_price FROM products
- 可以对非数值数据使用。如果数据按照相应的列排序,则
MAX()
返回最后一行 - 忽略值
NULL
的行
- 可以对非数值数据使用。如果数据按照相应的列排序,则
MIN()
:SELECT MIN(price) AS max_price FROM products
- 可以对非数值数据使用。如果数据按照相应的列排序,则
MAX()
返回最前一行 - 忽略值
NULL
的行
- 可以对非数值数据使用。如果数据按照相应的列排序,则
SUM()
:SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num = 20005
聚集不同值
ALL
:对所有行进行计算,默认行为,不需要指定DISTINCT
:对不同的行进行计算,必须使用列名,不能用于计算或表达式SELECT AVG(DISTINCT price) AS avg_price FROM products WHERE id = 1003
- 不能用于
COUNT(DISTINCT)
- 对
MAX()
和MIN()
使用没有意义
组合聚合函数
SELECT COUNT(*) AS num_items, MIN(price) AS price_min, MAX(price) AS price_max, AVG(price) AS price_avg FROM products
返回产品数量、最低价、最高价、平均价格