mysql 数据库函数 的演示

文章目录

  • 数据库函数
  • 数据库函数的种类
    • 1,数学函数
    • 2,聚合函数
    • 3,字符串函数
    • 4,日期时间函数
  • 数学函数
    • 聚合函数
      • avg()
      • count()
      • min()
      • max()
      • sum()
    • 字符串函数
      • length()
      • trim() 发现在字符串中间的空格是不能被过滤的
      • concat()
      • upper()
      • lower()
      • left()
      • right()
      • at()
      • space()
      • replace()
      • strcmp()
      • substring()
      • reverse()
    • 常见日期时间函数
      • curdate()
      • curtime()
      • now()
      • month()
      • week()
      • hour()
      • minute()
      • second()
      • dayofweek()
      • dayofmonth()
      • dayofyear()
  • 数据库存储
  • 存储过程的优点:
  • MySQL的存储过程
        • MySQL 的参数分为:输入参数、输出参数和输入/输出参数,分别用 IN、OUT 和 INOUT 三个关键字表示。其中,输入参数可以传递给一个存储过程;输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。 此外,存储过程的主体部分,被称为过程体,包含了在调用时必须执行的 SQL 语句。这个部分以关键字 BEGIN 开始,以关键字 END 结束。若过程体中只有一条 SQL 语句,则可以省略 BEGIN-END 标志。
    • 创建存储
    • 查看存储
    • 删除存储

数据库函数

数据库函数是指当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。

数据库函数的种类

数据库函数 大致分为四种,下面我们来一一讲解并演示每一个函数的操作方法

1,数学函数

2,聚合函数

3,字符串函数

4,日期时间函数

数学函数

mysql 数据库函数 的演示_第1张图片以上就是常用的数学函数,那么我们就演示下怎么使用的

第一个 abs(x) 返回x的绝对值、、那么我们来演示依一下吧
mysql 数据库函数 的演示_第2张图片
第二个,rand 返回0到1的随机数
mysql 数据库函数 的演示_第3张图片
第三个,mod(x,y)返回x除以y以后的余数
mysql 数据库函数 的演示_第4张图片
第四个,power(x,y)返回x的y次方
mysql 数据库函数 的演示_第5张图片
第五个:round(X)返回离X最近的整数
mysql 数据库函数 的演示_第6张图片

第六个,round(x,y)返回x的y位小数四舍五入后的值
mysql 数据库函数 的演示_第7张图片
第七个,sqrt (x)返回x的平方根
mysql 数据库函数 的演示_第8张图片

聚合函数

常见聚合函数
avg() 输出指定列的平均值
count() 输出指定列中非null的个数
min() 输出指定列的最小值
max() 输出指定列的最大值
sum() 输出指定列的和

mysql> select * from shizhi;
±------+
| shuzi |
±------+
| 2 |
| 3 |
| 5 |
| 7 |
| 102 |
±------+
5 rows in set (0.00 sec)

avg()

mysql> select avg(shuzi) from shizhi;
±-----------+
| avg(shuzi) |
±-----------+
| 23.8000 |
±-----------+
1 row in set (0.00 sec)

count()

mysql> select count(shuzi) from shizhi;
±-------------+
| count(shuzi) |
±-------------+
| 5 |
±-------------+
1 row in set (0.00 sec)

min()

mysql> select min(shuzi) from shizhi;
±-----------+
| min(shuzi) |
±-----------+
| 2 |
±-----------+
1 row in set (0.00 sec)

max()

mysql> select max(shuzi) from shizhi;
±-----------+
| max(shuzi) |
±-----------+
| 102 |
±-----------+
1 row in set (0.00 sec)

sum()

mysql> select sum(shuzi) from shizhi;
±-----------+
| sum(shuzi) |
±-----------+
| 119 |
±-----------+
1 row in set (0.00 sec)

字符串函数

length(x) 输出字符串长度
trim() 输出去除指定格式的值,默认是空格
concat() 将两个字符串接在一起
upper() 将字符串内的字母变成大写
lower() 将字符串内的字符变成小写
left(x,y) 输出 x 的前 y 个字符
right(x,y) 输出 x 的后 y 个字符
repeat(x,y) 将字符串 x 输出 y 次
space(x) 输出 x 个空格
repace(x,y,z) 替代 x 中 的 y 为 z
strcmp(x,y) 对 x y 进行比较,大于输出1,等于输出0,小于输出 -1
substring(x,y,z) 输出 x 的第 y 位开始长度为 z 的字符串
reverse(x) 将 x 反转

length()

mysql> select length(3.14159),length(314159),length(‘3 14159’),length(‘盖伦’);
±----------------±---------------±------------------±-----------------+
| length(3.14159) | length(314159) | length(‘3 14159’) | length(‘盖伦’) |
±----------------±---------------±------------------±-----------------+
| 7 | 6 | 7 | 6 |
±----------------±---------------±------------------±-----------------+
1 row in set (0.00 sec)

trim() 发现在字符串中间的空格是不能被过滤的

mysql> select trim(‘1 3 5’),trim(’ 135 ‘);
±--------------±--------------+
| trim(‘1 3 5’) | trim(’ 135 ') |
±--------------±--------------+
| 1 3 5 | 135 |
±--------------±--------------+
1 row in set (0.00 sec)

concat()

mysql> select concat(‘abc’,‘def’);
±--------------------+
| concat(‘abc’,‘def’) |
±--------------------+
| abcdef |
±--------------------+
1 row in set (0.00 sec)

upper()

mysql> select upper(‘abc’),upper(‘ABC’);
±-------------±-------------+
| upper(‘abc’) | upper(‘ABC’) |
±-------------±-------------+
| ABC | ABC |
±-------------±-------------+
1 row in set (0.00 sec)

lower()

mysql> select lower(‘abc’),lower(‘ABC’);
±-------------±-------------+
| lower(‘abc’) | lower(‘ABC’) |
±-------------±-------------+
| abc | abc |
±-------------±-------------+
1 row in set (0.00 sec)

left()

mysql> select left(123456,3),left(‘abcdef’,3),left(1.23456,3);
±---------------±-----------------±----------------+
| left(123456,3) | left(‘abcdef’,3) | left(1.23456,3) |
±---------------±-----------------±----------------+
| 123 | abc | 1.2 |
±---------------±-----------------±----------------+
1 row in set (0.00 sec)

right()

mysql> select right(123456,3),right(‘abcdef’,3),right(‘1.23456’,3);
±----------------±------------------±-------------------+
| right(123456,3) | right(‘abcdef’,3) | right(‘1.23456’,3) |
±----------------±------------------±-------------------+
| 456 | def | 456 |
±----------------±------------------±-------------------+
1 row in set (0.00 sec)

at()

mysql> select repeat(‘abc’,3);
±----------------+
| repeat(‘abc’,3) |
±----------------+
| abcabcabc |
±----------------+
1 row in set (0.00 sec)

space()

mysql> select space(‘5’),space(‘15’);;
±-----------±----------------+
| space(‘5’) | space(‘15’) |
±-----------±----------------+
| | |
±-----------±----------------+
1 row in set (0.00 sec)

replace()

mysql> select replace(‘abc’,‘b’,‘z’);
±-----------------------+
| replace(‘abc’,‘b’,‘z’) |
±-----------------------+
| azc |
±-----------------------+
1 row in set (0.00 sec)

strcmp()

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

substring()

mysql> select substring(‘abcdefg’,2,3);
±-------------------------+
| substring(‘abcdefg’,2,3) |
±-------------------------+
| bcd |
±-------------------------+
1 row in set (0.00 sec)

reverse()

mysql> select reverse(‘abcdef’),reverse(123456);
±------------------±----------------+
| reverse(‘abcdef’) | reverse(123456) |
±------------------±----------------+
| fedcba | 654321 |
±------------------±----------------+
1 row in set (0.00 sec)

常见日期时间函数

curdate() 返回当前时间的年月日
curtime() 返回当前时间的时分秒
now() 返回当前时间的日期和时间
month(x) 返回日期 x 中的月份值
week(x) 返回日期 x 是年度第几个星期
hour(x) 返回 x 中的小时值
minute(x) 返回 x 中的分钟值
second(x) 返回 x 中的秒钟值
dayofweek(x) 返回 x 是星期几,1 星期日,2 星期一
dayofmonth(x) 计算日期 x 是本月的第几天
dayofyear(x) 计算日期 x 是本年的第几天

curdate()

mysql> select curdate();
±-----------+
| curdate() |
±-----------+
| 2020-08-25 |
±-----------+
1 row in set (0.01 sec)

curtime()

mysql> select curtime();
±----------+
| curtime() |
±----------+
| 20:13:05 |
±----------+
1 row in set (0.00 sec)

now()

mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2020-08-25 20:13:25 |
±--------------------+
1 row in set (0.00 sec)

month()

mysql> select month(‘2020-8-25’),month(now());
±-------------------±-------------+
| month(‘2020-8-25’) | month(now()) |
±-------------------±-------------+
| 8 | 8 |
±-------------------±-------------+
1 row in set (0.00 sec)

week()

mysql> select week(‘2020-8-25’),week(now());
±------------------±------------+
| week(‘2020-8-25’) | week(now()) |
±------------------±------------+
| 34 | 34 |
±------------------±------------+
1 row in set (0.00 sec)

hour()

mysql> select hour(‘20:15’),hour(now());
±--------------±------------+
| hour(‘20:15’) | hour(now()) |
±--------------±------------+
| 20 | 20 |
±--------------±------------+
1 row in set (0.00 sec)

minute()

mysql> select minute(‘20:17’),minute(now());
±----------------±--------------+
| minute(‘20:17’) | minute(now()) |
±----------------±--------------+
| 17 | 17 |
±----------------±--------------+
1 row in set (0.00 sec)

second()

mysql> select second(‘20:17:9’),second(now());
±------------------±--------------+
| second(‘20:17:9’) | second(now()) |
±------------------±--------------+
| 9 | 11 |
±------------------±--------------+
1 row in set (0.00 sec)

dayofweek()

mysql> select dayofweek(‘2020-8-25’),dayofweek(now());
±-----------------------±-----------------+
| dayofweek(‘2020-8-25’) | dayofweek(now()) |
±-----------------------±-----------------+
| 3 | 3 |
±-----------------------±-----------------+
1 row in set (0.00 sec)

dayofmonth()

mysql> select dayofmonth(‘2020-8-25’),dayofmonth(now());
±------------------------±------------------+
| dayofmonth(‘2020-8-25’) | dayofmonth(now()) |
±------------------------±------------------+
| 25 | 25 |
±------------------------±------------------+
1 row in set (0.00 sec)

dayofyear()

mysql> select dayofyear(‘2020-8-25’),dayofyear(now());
±-----------------------±-----------------+
| dayofyear(‘2020-8-25’) | dayofyear(now()) |
±-----------------------±-----------------+
| 238 | 238 |
±-----------------------±-----------------+
1 row in set (0.00 sec)

数据库存储

SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。

存储过程的优点:

(1).增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
(2).标准组件式编程:存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
(3).较快的执行速度:如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
(4).减少网络流量:针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织进存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大减少网络流量并降低了网络负载。
(5).作为一种安全机制来充分利用:通过对执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

MySQL的存储过程

存储过程是数据库的一个重要的功能,MySQL 5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0开始支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。

MySQL 的参数分为:输入参数、输出参数和输入/输出参数,分别用 IN、OUT 和 INOUT 三个关键字表示。其中,输入参数可以传递给一个存储过程;输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。 此外,存储过程的主体部分,被称为过程体,包含了在调用时必须执行的 SQL 语句。这个部分以关键字 BEGIN 开始,以关键字 END 结束。若过程体中只有一条 SQL 语句,则可以省略 BEGIN-END 标志。

创建存储

mysql> delimiter KaTeX parse error: Expected 'EOF', got '#' at position 4: #̲#开始存储语句 mysql> … ##结束
Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ; ##结束存储语句
mysql> call cjt; ##调用语句
±-------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±-------±------------±-----±----±--------±------+
| id | int(3) | NO | PRI | NULL | |
| mingzi | varchar(10) | YES | | NULL | |
±-------±------------±-----±----±--------±------+
2 rows in set (0.02 sec)

Query OK, 0 rows affected (0.02 sec)

mysql> select * from chengji;
±—±-----±-------+
| id | fs | dengji |
±—±-----±-------+
| 1 | 60 | 优秀 |
±—±-----±-------+
1 row in set (0.00 sec)

mysql> delimiter m y s q l > c r e a t e p r o c e d u r e g z ( i n z i n t ( 3 ) ) − > b e g i n − > d e c l a r e d d j v a r c h a r ( 10 ) ; − > i f z > = 90 ; − > C m y s q l > d e l i m i t e r ; m y s q l > d e l i m i t e r mysql> create procedure gz(in z int(3)) -> begin -> declare ddj varchar(10); -> if z >= 90; -> ^C mysql> delimiter ; mysql> delimiter mysql>createproceduregz(inzint(3))>begin>declareddjvarchar(10);>ifz>=90;>Cmysql>delimiter;mysql>delimiter
mysql> create procedure gz(in z int(3)) ##(in 参数名 类型 ##相当于位置变量吧)
-> begin
-> declare djj varchar(12); ##设置变量 djj
-> if z >= 90 then ## if判断
-> set djj = ‘good’; ##赋值
-> else
-> set djj = ‘haixing’;
-> end if;
-> update chengji set fs=z,dengji=djj where id=1;
-> end$$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> call gz(90); ##(输入“位置变量”)
Query OK, 1 row affected (0.01 sec)

mysql> select * from chengji;
±—±-----±-------+
| id | fs | dengji |
±—±-----±-------+
| 1 | 90 | good |
±—±-----±-------+
1 row in set (0.00 sec)

mysql> call gz(80);
Query OK, 1 row affected (0.00 sec)

mysql> select * from chengji;
±—±-----±--------+
| id | fs | dengji |
±—±-----±--------+
| 1 | 80 | haixing |
±—±-----±--------+
1 row in set (0.01 sec)

查看存储

mysql> mysql> show procedure status where db=‘sannianji’;
±----------±-----±----------±---------------±--------------------±--------------------±--------------±--------±----------±------------±----------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
±----------±-----±----------±---------------±--------------------±--------------------±--------------±--------±---------------------±------±------+
| sannianji | cjt | PROCEDURE | root@localhost | 2020-08-25 22:53:23 | 2020-08-25 22:53:23 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
| sannianji | gz | PROCEDURE | root@localhost | 2020-08-25 23:38:53 | 2020-08-25 23:38:53 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
±----------±-----±----------±---------------±--------------------±--------------------±--------------±--------±--------------------±—±----------+
2 rows in set (0.00 sec)

删除存储

mysql> drop procedure gz;
Query OK, 0 rows affected (0.00 sec)

你可能感兴趣的:(mysql)