MySQL基本知识 -- 进阶(常用的函数)
Tags: MySQL MySQL进阶
1.计算字段
- 1.概念
- 如果客户端想要的数据格式不是数据库直接在表中存储的数据格式的话,有两种处理方式。第一种为拿到数据库表中的原始数据,客户端再对其进行处理格式化第二种就是把数据的格式化放在数据库中实现。显然出于降低数据库与客户端之间链接的资源消耗,提高客户端响应其他类型请求的性能,提高创建应用的可伸缩性并且数据库服务器完成相同操作更高效等原因,将数据处理部分放在数据库中更合理。此时经数据库新计算出来的结果便是计算字段。计算字段并不实际存在于表中。
2.创建计算字段
- 拼接字段
将两个列的值联结在一起,在MySQL中可以使用Concat()函数来拼接。
SELECT Concat(columnName1, '(', columnName2) AS tableName3 FROM tableName;
Concat()把多个串拼接成一个较长的串。其参数需要一个或多个指定的串,各个串之间用逗号分开.
As将拼接出来的字段起别名叫做tableName
- 执行算数计算
SELECT columnName1 * columnName2 AS columnName FROM tableName;
在MySQL检索的时候进行算数计算(+,-,*,/)
- 注意:
- SELECT 提供了测试和实验函数与计算的一个很好的方法。省略SELECT子语句以便简单的访问和处理表达式。例如
SELECT 3*6;
将返回18。
- 使用函数
常用的文本处理函数
| 函 数 | 说 明 |
| ----------- | ---------------- |
| Left() | 返回串左边的字符 |
| Length() | 返回串的长度 |
| Locate() | 找出串的一个子串 |
| Lower() | 将串转化为小写 |
| LTrim() | 去掉串左边的空格 |
| Right() | 返回串右边的字符 |
| RTrim() | 去掉串右边的空格 |
| SubString() | 返回子串的字符 |
| Upper() | 将串转化为大写 |
常用的日期时间函数
函数 | 说明 |
---|---|
AddDate() | 增加一个日期(天、周等) |
AddTime() | 增加一个时间(时、分等) |
CurTime() | 返回当前时间 |
CurDate() | 返回当前日期 |
Date() | 返回日期时间的日期部分 |
DateDiff() | 计算两个日期之差 |
Date_Add() | 日期运算函数 |
Date_Format() | 格式化日期或时间 |
Day() | 返回日期的天数部分 |
DayOfWeek() | 返回日期对应为星期几 |
Hour() | 返回时间的小时部分 |
Minute() | 返回时间的分钟部分 |
Month() | 返回日期的月份 |
Now() | 当前日期时间 |
Second() | 返回时间的秒部分 |
Time() | 返回时间 |
Year() | 返回年份 |
- 注意:
- 1.MySQL的日期格式最好为
yyyy-mm-dd
,因为消除了多义性。- 2.日期比较最好使用日期函数进行WHERE匹配,否则匹配会出错。比如:
SELECT * FROM tableName WHERE date = '2016-03-01'
- 当某一列存储的值为
2016-03-01 12:00:00
时,上述语句会匹配失败。解决方法就是使用Date(date)指示MySQL仅提取列的日期部分。- 3.使用日期函数可以很好的进行日期比较搜索。比如需要查找出在2016年03月的所有列,可以使用:
SELECT * FROM tableName WHERE Year(date) = 2016 AND Month(date) = 3;
常用的数值处理函数
函数 | 说明 |
---|---|
Abs() | 返回数的绝对值 |
Cos() | 返回一个角度的余弦 |
Exp() | 返回数的指数值 |
Mod() | 取余 |
Pi() | 圆周率 |
Rand() | 生成随机数 |
Sin() | 正弦 |
Sqrt() | 平方根 |
Tan() | 正切 |
- 3.汇总数据
- 对表中的数据(而不是实际数据本身)汇总,得到汇总的信息。
- 3.1 聚集函数
- 聚集函数运行在行组上,计算和返回单个值的函数。
常用的聚集函数
函数 | 说明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列的和 |
SELECT AVG(prod_price) AS avg_price FROM tableName;
为了获得多个列的平均值必须使用多个AVG()函数。AVG()函数会忽略掉值为NULL的行。
SELECT COUNT(*) AS num_count FROM tableName;
SELECT COUNT(columnName) AS num_count FROM tableName;
COUNT()函数有两种使用方法。使用COUNT(*)
对表中行的数目进行计数,不管表中包含的是空值还是非空值。使用COUNT(columnName)
对columnName列中具有非空值的行进行计数,忽略NULL值。
SELECT SUM(columnName) AS sum_column FROM tableName;
SELECT SUM(columnName1 * columnName2) AS sum_column FROM tableName;
SUM()函数会忽略NULL的值。
SELECT COUNT(*) AS num_count, MIN(columnName) AS min_column, AVG(columnName) AS avg_column FROM tableName;
聚集函数可以组合在一起使用。