文章摘要:
1、AVG 函数
2、COUNT()
3、FIRST() 函数
4、LAST() 函数
5、MAX() 函数
6、MIN() 函数
7、SUM() 函数
8、GROUP BY 语句
9、HAVING 子句
10、UCASE() 函数
11、LCASE() 函数
12、MID() 函数
13、LEN() 函数
14、ROUND() 函数
15、NOW() 函数
16、FORMAT() 函数
一、SQL中函数类型
- 1、面向数据库列(column)
- 2、面向数据库列中的值。
ps:demo使用到的数据库信息
mysql> select * from orders;
+------+---------+-------------+------+------------+
| Id_O | Company | OrderNumber | Id_p | OrderPrice |
+------+---------+-------------+------+------------+
| 1 | IBM | 3532 | 1 | 34 |
| 2 | Baidu | 2356 | NULL | 62 |
| 3 | Ali | 6534 | 4 | 56 |
| 4 | Apple | 4698 | 2 | 78 |
| 5 | Tencent | 6953 | 5 | 24 |
| 6 | Xiaomi | 7890 | 4 | 10 |
| 7 | LeEco | 2876 | 9 | 18 |
| 8 | JD | 3847 | 6 | 47 |
| 9 | Apple | 8762 | 2 | 90 |
| 10 | Xiaomi | 9328 | 4 | 52 |
| 11 | Xiaomi | 1098 | 4 | 27 |
+------+---------+-------------+------+------------+
11 rows in set (0.00 sec)
二、面向数据库列的函数。
1、AVG 函数
定义和用法
AVG 函数返回数值列的平均值。NULL 值不包括在计算中。
- 语法
SELECT AVG(column_name) FROM table_name
- 案例
-- 查询订单中的报价均价
mysql> select avg(OrderPrice) from Orders;
+-----------------+
| avg(OrderPrice) |
+-----------------+
| 45.2727 |
+-----------------+
1 row in set (0.00 sec)
-- 查看订单中,公司报价的均价
mysql> select Company,avg(OrderPrice) from Orders group by Company;
+---------+-----------------+
| Company | avg(OrderPrice) |
+---------+-----------------+
| Ali | 56.0000 |
| Apple | 84.0000 |
| Baidu | 62.0000 |
| IBM | 34.0000 |
| JD | 47.0000 |
| LeEco | 18.0000 |
| Tencent | 24.0000 |
| Xiaomi | 29.6667 |
+---------+-----------------+
8 rows in set (0.00 sec)
mysql>
2、COUNT()
COUNT() 函数返回匹配指定条件的行数。
- 语法
-- 1、COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name
-- 2、COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name
-- 3、COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name
注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。
- 案例:
mysql> select count(*) from orders;
+----------+
| count(*) |
+----------+
| 11 |
+----------+
1 row in set (0.00 sec)
mysql> select count(Id_p) from orders;
+-------------+
| count(Id_p) |
+-------------+
| 10 |
+-------------+
1 row in set (0.00 sec)
mysql> select count(distinct Company) from orders;
+-------------------------+
| count(distinct Company) |
+-------------------------+
| 8 |
+-------------------------+
1 row in set (0.00 sec)
mysql>
3、FIRST() 函数
FIRST() 函数返回指定的字段中第一个记录的值。
提示:可使用 ORDER BY 语句对记录进行排序。
- SQL FIRST() 语法
SELECT FIRST(column_name) FROM table_name
- 备注:MySql不支持此函数,可配合排序函数以及limit函数实现类似功能。
4、LAST() 函数
LAST() 函数返回指定的字段中最后一个记录的值。
提示:可使用 ORDER BY 语句对记录进行排序。
- SQL LAST() 语法
SELECT LAST(column_name) FROM table_name
- 备注:MySql不支持此函数,可配合排序函数以及limit函数实现类似功能。
5、MAX() 函数
MAX 函数返回一列中的最大值。NULL 值不包括在计算中。
- SQL MAX() 语法
SELECT MAX(column_name) FROM table_name
注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。
- 案例:得到最高的报价
mysql> select max(OrderPrice) from orders;
+-----------------+
| max(OrderPrice) |
+-----------------+
| 90 |
+-----------------+
1 row in set (0.00 sec)
6、MIN() 函数
MIN 函数返回一列中的最小值。NULL 值不包括在计算中。
- SQL MIN() 语法:
SELECT MIN(column_name) FROM table_name
注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。
- 案例:得到最低的报价
mysql> select min(OrderPrice) from orders;
+-----------------+
| min(OrderPrice) |
+-----------------+
| 10 |
+-----------------+
1 row in set (0.00 sec)
7、SUM() 函数
SUM 函数返回数值列的总数(总额)。
- SQL SUM() 语法
SELECT SUM(column_name) FROM table_name
- 案例:得到订单总金额
mysql> select sum(OrderPrice) from orders;
+-----------------+
| sum(OrderPrice) |
+-----------------+
| 498 |
+-----------------+
1 row in set (0.00 sec)
8、GROUP BY 语句
合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
- SQL GROUP BY 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
- 案例:从订单中,得到下订单的公司
mysql> select company from orders group by company;
+---------+
| company |
+---------+
| Ali |
| Apple |
| Baidu |
| IBM |
| JD |
| LeEco |
| Tencent |
| Xiaomi |
+---------+
8 rows in set (0.00 sec)
9、HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
- SQL HAVING 语法:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
- 案例:得到下单大于1次的公司:
mysql> select company from orders group by company having count(company)>1;
+---------+
| company |
+---------+
| Apple |
| Xiaomi |
+---------+
2 rows in set (0.00 sec)
三、面向数据库列的函数。
1、UCASE() 函数
UCASE 函数把字段的值转换为大写。
- SQL UCASE() 语法:
SELECT UCASE(column_name) FROM table_name
- 案例:得到下单公司的大写名称
mysql> select distinct ucase(company) from orders;
+----------------+
| ucase(company) |
+----------------+
| IBM |
| BAIDU |
| ALI |
| APPLE |
| TENCENT |
| XIAOMI |
| LEECO |
| JD |
+----------------+
8 rows in set (0.00 sec)
2、LCASE() 函数
LCASE 函数把字段的值转换为小写。
- SQL LCASE() 语法
SELECT LCASE(column_name) FROM table_name
- 案例:得到下单公司的小写名称
mysql> select distinct lcase(company) from orders;
+----------------+
| lcase(company) |
+----------------+
| ibm |
| baidu |
| ali |
| apple |
| tencent |
| xiaomi |
| leeco |
| jd |
+----------------+
8 rows in set (0.01 sec)
3、MID() 函数
MID 函数用于从文本字段中提取字符。
- SQL MID() 语法:
SELECT MID(column_name,start[,length]) FROM table_name
参数 | 描述 |
---|---|
column_name | 必需。要提取字符的字段。 |
start | 必需。规定开始位置(起始值是 1)。 |
length | 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。 |
- 案例:获得订单公司的简称(取三个字母)
mysql> SELECT MID(City,1,3) as SmallCity FROM Persons;
+-----------+
| SmallCity |
+-----------+
| Lon |
| New |
| Bei |
| Lon |
| Bei |
| NULL |
+-----------+
6 rows in set (0.00 sec)
4、LEN() 函数
LEN 函数返回文本字段中值的长度。
- SQL LEN() 语法
SELECT LEN(column_name) FROM table_name
备注:MySql中,函数为:length。
- 案例:获得订单公司名称长度。
mysql> select length(Company) from orders;
+-----------------+
| length(Company) |
+-----------------+
| 3 |
| 5 |
| 3 |
| 5 |
| 7 |
| 6 |
| 5 |
| 2 |
| 5 |
| 6 |
| 6 |
+-----------------+
11 rows in set (0.00 sec)
5、ROUND() 函数
ROUND 函数用于把数值字段舍入为指定的小数位数。
- SQL ROUND() 语法
SELECT ROUND(column_name,decimals) FROM table_name
参数 | 描述 |
---|---|
column_name | 必需。要舍入的字段。 |
decimals | 必需。规定要返回的小数位数。 |
6、NOW() 函数
NOW 函数返回当前的日期和时间。
提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间。
- SQL NOW() 语法
SELECT NOW() FROM table_name
- 案例:
mysql> select now() from orders limit 1;
+---------------------+
| now() |
+---------------------+
| 2017-07-06 19:51:18 |
+---------------------+
1 row in set (0.00 sec)
7、FORMAT() 函数
FORMAT 函数用于对字段的显示进行格式化。
- SQL FORMAT() 语法:
SELECT FORMAT(column_name,format) FROM table_name
参数 | 描述 |
---|---|
column_name | 必需。要格式化的字段。 |
format | 必需。规定格式。 |