MySql基础(二)基本函数

1数学函数

  • a 绝对值函数
    ABS(X):返回X的绝对值;
mysql> select ABS(3),abs(-3);
+--------+---------+
| ABS(3) | abs(-3) |
+--------+---------+
|      3 |       3 |
+--------+---------+
1 row in set (0.00 sec)
  • b 圆周率
mysql> select pi();
+----------+
| pi()     |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)

mysql> select PI();
+----------+
| PI()     |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)
  • c 开方函数
    SQRT(X):返回X的平方根,负数返回null;
mysql> select sqrt(9),sqrt(34),SqRt(100),sqrt(-23);
+---------+-------------------+-----------+-----------+
| sqrt(9) | sqrt(34)          | SqRt(100) | sqrt(-23) |
+---------+-------------------+-----------+-----------+
|       3 | 5.830951894845301 |        10 |      NULL |
+---------+-------------------+-----------+-----------+
1 row in set (0.00 sec)
  • d 取余函数
    MOD(X,Y):返回 X/Y后的余数。
mysql> select MOD(45,6);
+-----------+
| MOD(45,6) |
+-----------+
|         3 |
+-----------+
1 row in set (0.00 sec)
  • e 向上取整
mysql> select ceil(3.5);
+-----------+
| ceil(3.5) |
+-----------+
|         4 |
+-----------+
1 row in set (0.00 sec)
  • f 向下取整
mysql> select floor(3.5);
+------------+
| floor(3.5) |
+------------+
|          3 |
+------------+
1 row in set (0.00 sec)
  • g 随机数
    随机数 RAND(X):X不一样,产生的随机数不一样

mysql> select ceil(rand(10)),rand(10),rand(10),rand();
+----------------+--------------------+--------------------+--------------------+
| ceil(rand(10)) | rand(10)           | rand(10)           | rand()             |
+----------------+--------------------+--------------------+--------------------+
|              1 | 0.6570515219653505 | 0.6570515219653505 | 0.2740826301966632 |
+----------------+--------------------+--------------------+--------------------+
1 row in set (0.00 sec)

mysql> select ceil(rand(10)),rand(-1),rand(0),rand();
+----------------+--------------------+---------------------+--------------------+
| ceil(rand(10)) | rand(-1)           | rand(0)             | rand()             |
+----------------+--------------------+---------------------+--------------------+
|              1 | 0.9050373219931845 | 0.15522042769493574 | 0.5871009468912156 |
+----------------+--------------------+---------------------+--------------------+
1 row in set (0.00 sec)
  • h 四舍五入取整
    round(x):四舍五入返回最接近x的整数;
    round(x,y):四舍五入返回最接近x的整数,并保留小数点以后y位,
    round(2.125,6): 四舍五入保存6位小数, 2.125000 小数点位数不够,自动补零。
mysql> select round(2.345),round(2.50001),round(2.125,2),round(2.125,6);
+--------------+----------------+----------------+----------------+
| round(2.345) | round(2.50001) | round(2.125,2) | round(2.125,6) |
+--------------+----------------+----------------+----------------+
|            2 |              3 |           2.13 |       2.125000 |
+--------------+----------------+----------------+----------------+     

round(1,10):值为1,即没有小数的不会自动补零。若要实现自动补零,必须有一位小数位

mysql> select round(1,10);
+-------------+
| round(1,10) |
+-------------+
|           1 | 直接返回整数
+-------------+
1 row in set (0.00 sec)

mysql> select round(1.0,10);
+---------------+
| round(1.0,10) |
+---------------+
|  1.0000000000 | 自动补零
+---------------+
1 row in set (0.00 sec)

mysql> select ID as "编号", Name as "姓名", sqrt(ROUND(Salary,5)) as "工资平方根" from user;
+--------+-----------------+--------------------+
| 编号   | 姓名            | 工资平方根         |
+--------+-----------------+--------------------+
|      7 | 燕虹            |  83.66681970769535 |
|      8 | 鬼王            |  89.44271909999159 |
|      9 | 毒神            |  83.66600265340756 |
|     10 | 陆小琪          | 31.622776601683793 |
|     11 | 苍松好道人      |  83.66600265340756 |
|     12 | 周一仙          |  70.71067811865476 |
|     13 | 小环            | 54.772255750516614 |
|     15 | 笨蛋            |                  1 |
|     16 | 笨笨            |                  1 |
|     17 | 小本            | 31.622776601683793 |
|     18 | 小欢            | 31.622776601683793 |
|     19 | 小欢            | 31.622776601683793 |
|     20 | 小欢            | 31.622776601683793 |
|     21 | 小欢            | 31.622776601683793 |
|     24 | 1               |                  1 |
|     25 | xiaoming        | 124.71968569556292 |
|     26 | 1               |                  1 |
+--------+-----------------+--------------------+
17 rows in set (0.00 sec)
  • i 截取数据
    truncate(x,n):截取数x至小数点后n位。截取同时不进行四舍五入
mysql> select truncate(200.12345,3);
+-----------------------+
| truncate(200.12345,3) |
+-----------------------+
|               200.123 |
+-----------------------+
1 row in set (0.00 sec)


若n为0,则截取所有小数

mysql> select truncate(23456.12345,0);
+-------------------------+
| truncate(23456.12345,0) |
+-------------------------+
|                   23456 |
+-------------------------+
1 row in set (0.00 sec)

若n为负数,则截取小数点向左的n位,截取后的位设为0

mysql> select truncate(23756.12345,-3);
+--------------------------+
| truncate(23756.12345,-3) |
+--------------------------+
|                    23000 |
+--------------------------+
1 row in set (0.00 sec)

  • j 正负数判断
    正数返回1,负数返回-1,0返回0
mysql> select sign(1.234),sign(-12),sign(0),sign(null),sign("d");
+-------------+-----------+---------+------------+-----------+
| sign(1.234) | sign(-12) | sign(0) | sign(null) | sign("d") |
+-------------+-----------+---------+------------+-----------+
|           1 |        -1 |       0 |       NULL |         0 |
+-------------+-----------+---------+------------+-----------+
1 row in set, 1 warning (0.00 sec)
  • k 幂函数计算
    pow(x,y):返回数x的y次幂
mysql> select pow(2,-1),pow(2,0),pow(2,1),pow(2,2),pow(2,3);
+-----------+----------+----------+----------+----------+
| pow(2,-1) | pow(2,0) | pow(2,1) | pow(2,2) | pow(2,3) |
+-----------+----------+----------+----------+----------+
|       0.5 |        1 |        2 |        4 |        8 |
+-----------+----------+----------+----------+----------+
1 row in set (0.00 sec)

exp(x):返回e的x方数
注明:e自然常数,是数学科的一种法则。约为2.71828

mysql> select exp(-1) , exp(0) , exp(1),exp(2);
+---------------------+--------+-------------------+------------------+
| exp(-1)             | exp(0) | exp(1)            | exp(2)           |
+---------------------+--------+-------------------+------------------+
| 0.36787944117144233 |      1 | 2.718281828459045 | 7.38905609893065 |
+---------------------+--------+-------------------+------------------+
1 row in set (0.00 sec)
  • l 对数运算
    select logX(n):返回以X为底,n的对数;
mysql> select log10(0),log10(10),log10(100),log10(1000);
+----------+-----------+------------+-------------+
| log10(0) | log10(10) | log10(100) | log10(1000) |
+----------+-----------+------------+-------------+
|     NULL |         1 |          2 |           3 |
+----------+-----------+------------+-------------+
1 row in set, 1 warning (0.00 sec)

log(n):返回自然数e的对数;

mysql> select log(1),log(exp(1)), log(exp(2)),log(exp(3));
+--------+-------------+-------------+-------------+
| log(1) | log(exp(1)) | log(exp(2)) | log(exp(3)) |
+--------+-------------+-------------+-------------+
|      0 |           1 |           2 |           3 |
+--------+-------------+-------------+-------------+
1 row in set (0.00 sec)

  • m 弧度公式
mysql> select radians(90),radians(180),radians(360);
+--------------------+-------------------+-------------------+
| radians(90)        | radians(180)      | radians(360)      |
+--------------------+-------------------+-------------------+
| 1.5707963267948966 | 3.141592653589793 | 6.283185307179586 |
+--------------------+-------------------+-------------------+
1 row in set (0.00 sec)
  • n 弧度转角度
mysql> select degrees(pi()), degrees(pi()*2), degrees(pi()/2);
+---------------+-----------------+-----------------+
| degrees(pi()) | degrees(pi()*2) | degrees(pi()/2) |
+---------------+-----------------+-----------------+
|           180 |             360 |              90 |
+---------------+-----------------+-----------------+
1 row in set (0.00 sec)
  • o 正弦函数,余弦函数
    sin(x),cos(x);

2流程控制函数

  • if函数

if(str,str1,str2); 若str为true,返回str1,否则返回str2;

mysql> select if(23>21,"加班","放假");
+-----------------------------+
| if(23>21,"加班","放假")     |
+-----------------------------+
| 加班                        |
+-----------------------------+
1 row in set (0.00 sec)
  • ifnull(str1,str2); 函数

若果:str1为null,返回str2;否则返回str1;

mysql> select ifnull(1,2);
+-------------+
| ifnull(1,2) |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

mysql> select ifnull(null,23);
+-----------------+
| ifnull(null,23) |
+-----------------+
|              23 |
+-----------------+
1 row in set (0.00 sec)
  • case when 选择函数

case str when str1 then result1 when str2 then result2 else result3 end :
如果str的值为st1 ,返回result1, 如果str的值为st2 ,返回result1,否则返回result3。

mysql> select case 1 when 7 then "星期日"when 6 then "星期六" when 5 then "星期五" when 1 then "星期一" else"星期二" end;
+---------------------------------------------------------------------------------------------------------------------------+
| case 1 when 7 then "星期日"when 6 then "星期六" when 5 then "星期五" when 1 then "星期一" else"星期二" end                |
+---------------------------------------------------------------------------------------------------------------------------+
| 星期一                                                                                                                    |
+---------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.06 sec)

mysql> select case 23 when 7 then "星期日"when 6 then "星期六" when 5 then "星期五" when 1 then "星期一" else"星期二" end;
+----------------------------------------------------------------------------------------------------------------------------+
| case 23 when 7 then "星期日"when 6 then "星期六" when 5 then "星期五" when 1 then "星期一" else"星期二" end                |
+----------------------------------------------------------------------------------------------------------------------------+
| 星期二                                                                                                                     |
+----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

3系统函数

  • 查看数据库版本
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.16    |
+-----------+
1 row in set (0.07 sec)
  • 查看数据库当前连接ID
    显示当前连接是第几个连接数据库的
mysql> select connection_id();
+-----------------+
| connection_id() |
+-----------------+
|               2 |
+-----------------+
1 row in set (0.06 sec)

  • processlist命令 显示数据库当前线程线程的运行状态,连接状态。当前执行的语句及所用时间。若果是root用户,则能查看所有用户的连接信息
mysql> show processlist;
+----+------+----------------+------+---------+------+----------+------------------+
| Id | User | Host           | db   | Command | Time | State    | Info             |
+----+------+----------------+------+---------+------+----------+------------------+
|  2 | root | localhost:4126 | zoo  | Query   |    0 | starting | show processlist |
|  3 | root | localhost:5002 | NULL | Sleep   | 7830 |          | NULL             |
|  4 | root | localhost:5004 | zoo  | Sleep   | 7676 |          | NULL             |
|  5 | root | localhost:5005 | zoo  | Sleep   | 7717 |          | NULL             |
|  6 | root | localhost:5091 | zoo  | Sleep   | 7378 |          | NULL             |
|  7 | root | localhost:5092 | zoo  | Sleep   |    2 |          | NULL             |
+----+------+----------------+------+---------+------+----------+------------------+
6 rows in set (0.00 sec)
    原文作者:凌雲木
    原文地址: https://www.jianshu.com/p/e815e7316c58
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞