MySql学习笔记

MySql之SQL语句学习笔记(五)

2017-07-06  本文已影响0人  Android那些事儿

文章摘要:
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中函数类型

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 语句对记录进行排序。

SELECT FIRST(column_name) FROM table_name

4、LAST() 函数

LAST() 函数返回指定的字段中最后一个记录的值。
提示:可使用 ORDER BY 语句对记录进行排序。

SELECT LAST(column_name) FROM table_name

5、MAX() 函数

MAX 函数返回一列中的最大值。NULL 值不包括在计算中。

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 值不包括在计算中。

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 函数返回数值列的总数(总额)。

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 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

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 关键字无法与合计函数一起使用。

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
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 函数把字段的值转换为大写。

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 函数把字段的值转换为小写。

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 函数用于从文本字段中提取字符。

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 函数返回文本字段中值的长度。

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 函数用于把数值字段舍入为指定的小数位数。

SELECT ROUND(column_name,decimals) FROM table_name
参数 描述
column_name 必需。要舍入的字段。
decimals 必需。规定要返回的小数位数。

6、NOW() 函数

NOW 函数返回当前的日期和时间。
提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间。

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 函数用于对字段的显示进行格式化。

SELECT FORMAT(column_name,format) FROM table_name
参数 描述
column_name 必需。要格式化的字段。
format 必需。规定格式。
上一篇 下一篇

猜你喜欢

热点阅读