美文网首页
MySQL白菜教程(Level 3)

MySQL白菜教程(Level 3)

作者: 七喜丶 | 来源:发表于2021-08-15 20:41 被阅读0次

算术函数

  • 使用 AVG() 函数求数值列的平均值
    平均函数AVG()是平均数AVERAGE的缩写,它用于求数值列的平均值。它可以用来返回所有列的平均值,也可以用来返回特定列和行的平均值
    具体的计算过程为:其通过对表中行数计数并计算特定数值列的列值之和,求得该列的平均值
    不过但参数column_name列中的数据均为空时,结果会返回NULL

语法:

select AVG(column_name) from table_name;
  • 使用 MAX() 函数返回指定列中的最大值
    最大值函数MAX()用来返回指定列中的最大值,只有一个参数column_name,表示指定的列名
    不过但参数column_name列中的数据均为空时,结果会返回NULL

语法:

select MAX(column_name) from table_name;
  • 使用 MIN() 函数返回指定列中的最小值
    最小值函数MIN()用来返回指定列中的最小值,只有一个参数column_name,表示指定的列名
    不过但参数column_name列中的数据均为空时,结果会返回NULL

语法:

select MIN(column_name) from table_name;
  • 使用 SUM() 函数统计数值列的总数
    SUM()函数用于统计数值列的总数并返回其值,只有一个参数column_name,表示指定的列名
    不过但参数column_name列中的数据均为空时,结果会返回NULL

语法:

select SUM(column_name) from table_name;
  • 使用 ROUND() 函数将数值四舍五入
    ROUND()函数用于把数值字段舍入为指定的小数位数

语法:

select ROUND(column_name, decimals) from table_name;

其中:
column_name为要舍入的字段
decimal规定要返回的小数位数
ROUND()函数始终返回一个值。当decimals为正数时,column_name四舍五入为decimal所指定的小数位数。为decimals为负数时,column_name则按decimals所指定的在小数点的左边四舍五入
特别的,如果length是负值且大于小数点前的数字个数,ROUND()函数将返回0

实例如下:
ROUND( X ):返回参数 X 四舍五入后的一个整数

mysql> SELECT ROUND(1.51);
+-------------+
| ROUND(1.51) |
+-------------+
|           2 |
+-------------+
1 row in set (0.00 sec)

ROUND(X, D): 返回参数 X 四舍五入且保留 D 位小数后的一个数字。如果 D 为 0,结果将没有小数点或小数部分

mysql> SELECT ROUND(1.388, 1);
+-----------------+
| ROUND(1.388, 1) |
+-----------------+
|             1.4 |
+-----------------+
1 row in set (0.00 sec)
mysql> select round(12.45, -1);
+------------------+
| round(12.45, -1) |
+------------------+
|               10 |
+------------------+
1 row in set (0.00 sec)
mysql> select round(12.45, -2);
+------------------+
| round(12.45, -2) |
+------------------+
|                0 |
+------------------+
1 row in set (0.00 sec)
  • 使用NULL()函数判断空值
    在介绍判断空值函数NULL()之前,我们先来了解一下在之前的学习中遇到多次的NULL,即我们常说的空值。但是这种叫法并不准确,因为NULL并不是值,它表示数值未知或者不确定。因此,NULL无法和0或空格字符串""进行比较,甚至NULL与NULL之间也无法比较。默认地,表的列可以存放NULL
    在此主要介绍SQL中的ISNULL()函数和IFNULL()函数,它们的用途都是判断字段是否为空,但是具体的用法有些差别

ISNULL()
ISNULL()函数用于判断字段是否为NULL,只有一个参数column_name为列名,根据column_name列中的字段是否为NULL值返回0或1

语法:

select isnull(column_name) from table_name;

其中:
如果column_name列中的某个字段是NULL则返回1,不是则返回0

IFNULL()
IFNULL()函数也是用于判断字段是否为NULL,但是与ISNULL()不同的是它接收两个参数,第一个参数column_name为列名,第二个参数value相当于备用值

语法:

select ifnull(column_name, value) from table_name;

其中:
如果column_name列中的某个字段是NULL则返回value值,不是则返回对应内容
COALESCE(column_name, value)函数作用和用法和IFNULL()相同

实例如下:

mysql> select * from user;
+----+----------+----------+-------+
| id | username | password | name  |
+----+----------+----------+-------+
|  1 | zhangsan | 123      | zhong |
|  2 | haoren   | 1234     | dong  |
|  3 | haosehn  | 12234    | 1dong |
|  4 | qiqi     | 11       | sfsf  |
|  5 | sdss     | 44444    | hahah |
|  6 | NULL     | 12333    | xiao  |
+----+----------+----------+-------+
6 rows in set (0.00 sec)
mysql> select username, isnull(username), ifnull(username, 'welcome'), coalesce(username, 'welcome') from user;
+----------+------------------+-----------------------------+-------------------------------+
| username | isnull(username) | ifnull(username, 'welcome') | coalesce(username, 'welcome') |
+----------+------------------+-----------------------------+-------------------------------+
| zhangsan |                0 | zhangsan                    | zhangsan                      |
| haoren   |                0 | haoren                      | haoren                        |
| haosehn  |                0 | haosehn                     | haosehn                       |
| qiqi     |                0 | qiqi                        | qiqi                          |
| sdss     |                0 | sdss                        | sdss                          |
| NULL     |                1 | welcome                     | welcome                       |
+----------+------------------+-----------------------------+-------------------------------+
6 rows in set (0.00 sec)
  • 使用COUNT()函数计数

COUNT()函数用于计数,可利用其确定表中行数的数目或者符合特定条件的行的数目。当COUNT()中的参数不同时,其的用途也是有明显的不同的,主要可分为以下三种情况:COUNT(column_name)COUNT(*)COUNT(DISTINCT column_name)

COUNT(column_name)
COUNT(column_name)函数会对指定列具有的行数进行计数,但是会除去值为NULL的行。该函数只要用于查看和列数据的数量情况,便于统计数据的缺失值

假设出现某一列的数据全为NULL值得情况
使用COUNT(column_name)函数对该列进行计数,会返回0

语法:

select count(column_name) from table_name;

COUNT(*)
COUNT(*)函数会对表中行的数目进行计数,包括值为NULL所在行和重复项所在行
该函数主要用于查看表中的记录数

语法:

select count(*) from table_name;

注意: count(column_name)count(*) 的区别
count(column_name) 中,如果column_name字段中值为NULL,则计数不会增加,而如果字段值为空字符串"",则字段值会加1
count(*)中,除非整个记录全为NULL,则计数不会增加,如果在某一个记录不为NULL,或者为空字符串"",计数值都会加1.正常来说,表都会有主键,而主键不为空,所以COUNT(*)在有主键的表中等同于COUNT(PRIMARY_KEY),即查询有多少条记录

COUNT(DISTINCT column_name)
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目

语法:

select count(distinct column_name) from table_name;

实例如下:

mysql> select * from user;
+----+----------+----------+-------+
| id | username | password | name  |
+----+----------+----------+-------+
|  1 | zhangsan | 123      | zhong |
|  2 | haoren   | 1234     | dong  |
|  3 | haosehn  | 12234    | 1dong |
|  4 | qiqi     | 11       | sfsf  |
|  5 | qiqi     | 44444    | hahah |
|  6 | NULL     | 12333    | xiao  |
+----+----------+----------+-------+
6 rows in set (0.00 sec)
mysql> select count(*), count(username), count(distinct username) from user;
+----------+-----------------+--------------------------+
| count(*) | count(username) | count(distinct username) |
+----------+-----------------+--------------------------+
|        6 |               5 |                        4 |
+----------+-----------------+--------------------------+
1 row in set (0.01 sec)

相关文章

网友评论

      本文标题:MySQL白菜教程(Level 3)

      本文链接:https://www.haomeiwen.com/subject/qposbltx.html