MySQL 基础语法,数据处理函数相关。

0. 数据表

接下来的示例会使用一个 world 数据表,表中存储了世界上的所有国家的相关信息。

name:国家名称

continent:洲份

area:面积

population:人口

gdp:国内生产总值

1. 计算字段

在查询数据时,我们可能会需要对字段(列)数据进行处理。

// 使用算术操作符进行算术计算

// 查询所有国家名称和人均GDP
SELECT name, gdp/population FROM world;

别名

因为 gdp/populatiob 是数据库表中不存在的列,想要区别它可以使用别名。

// 使用别名

// 查询所有国家名称和人均GDP
SELECT name, gdp/population AS ‘人均GDP’ FROM world;

算术操作符

操作符 说明
+
-
*
/

2. 数据处理函数

除了算术运算符,还可以使用数据处理函数对字段进行处理。比如,Concat() 拼接函数。

// 使用 Concat() 拼接函数

// 对洲份、‘-’和国家名称进行拼接然后返回
SELECT Concat(continent, '-', name) FROM world;

SQL 数据处理函数大致分为以下类型:

  1. 用于处理文本字符串的文本函数。
  2. 用于处理数值数据,进行算术操作的数值函数。
  3. 用于处理日期和时间的日期时间函数
  4. 返回 DBMS(数据库管理系统) 正使用的特殊信息的系统函数

3. 文本处理函数

常用的文本处理函数

函数 说明
Left() 返回字符串左边的字符
Length() 返回字符串的长度
Locate() 找出字符串的一个子串
Lower() 将字符串转换为小写
LTrim() 去掉字符串左边的空格
Right() 返回字符串右边的字符
RTrim() 去掉字符串右边的空格
Soundex() 返回字符串的 SOUNDEX 值
SubString() 返回子串的字符
Upper() 将字符串转换为大写

4. 日期和时间处理函数

常用的日期和时间处理函数

函数 说明
AddDate() 增加一个日期(天、周等)
AddTime() 增加一个时间(时、分等)
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 高度灵活的日期运算函数
Date_Format() 返回一个格式化的日期或时间串
Day() 返回一个日期的天数部分
DayOfWeek() 对于一个日期,返回对应的星期几
Hour() 返回一个时间的小时部分
Minute() 返回一个时间的分钟部分
Month() 返回一个日期的月份部分
Now() 返回当前日期和时间
Second() 返回一个时间的秒部分
Time() 返回一个日期时间的时间部分
Year() 返回一个日期的年份部分

5. 数值处理函数

常用的数值处理函数

函数 说明
Abs() 返回一个数的绝对值
Cos() 返回一个角度的余弦
Exp() 返回一个数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Tan() 返回一个角度的正切

6. 聚集函数

聚集函数可以用来对返回结果进行汇总。比如,COUNT() 函数返回结果的行数。

// 使用 COUNT() 函数汇总数据

// 返回亚洲的国家数量
SELECT COUNT(*) FROM world WHERE continent = 'Asia';

常用的聚集函数

函数 说明
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列之和

7. GROUP BY 分组数据

使用聚集函数可以用来汇总数据,使用 GROUP BY 子句可以将数据分组汇总。

// 使用 GROUP BY 分组数据

// 根据洲份进行分组
// 返回各个洲的国家数量
SELECT continent, COUNT(*) FROM world GROUP BY continent;

HAVING 过滤分组

HAVING 和 WHERE 类似。WHERE 用于过滤行,HAVING 用于过滤分组。

// 使用 GROUP BY 分组数据

// 根据洲份进行分组
// 返回亚洲和欧洲的国家数量
SELECT continent, COUNT(*) FROM world
GROUP BY continent HAVING continent IN ('Asia', 'Europe');

评论