匹配模式 | 描述 |
---|---|
^ | 匹配文本的开始字符 |
$ | 匹配文本的结束字符 |
. | 匹配任何单个字符 |
* | 匹配零个或多个在它前面的字符 |
+ | 匹配前面的字符 1 次或多次 |
? | 匹配前面的字符 0或1 次 |
字符串 | 匹配包含指定的字符串 |
p1Ip2 | 匹配 p1 或 p2 |
[…] | 匹配字符集合中的任意一个字符 |
[^…] | 匹配不在括号中的任何字符 |
{n} | 匹配前面的字符串 n 次 |
{n,m} | 匹配前面的字符串至少 n 次,至多m 次 |
(root@localhost) [oyyy]> select id,name from oyyy where name regexp '^a';
(root@localhost) [oyyy]> select id,name from oyyy where name regexp 'a$';
(root@localhost) [oyyy]> select id,name from oyyy where name regexp 'a.c';
(root@localhost) [oyyy]> select id,name from oyyy where name regexp 'a*';
(root@localhost) [oyyy]> select id,name from oyyy where name regexp 'a+';
(root@localhost) [oyyy]> select id,name from oyyy where name regexp 'aa';
(root@localhost) [oyyy]> select id,name from oyyy where name regexp 'aa|ab';
(root@localhost) [oyyy]> select id,name from oyyy where name regexp '[a,b]';
MysQL的运算符共有四种,分别是:算术运算符、比较运算符、逻辑运算符和位运算符。
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
字符串的比较默认不区分大小写,可使用 binary 来区分
常用比较运算符 | 说明 |
---|---|
= | 等于 |
!=或<> | 不等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
is null | 判断是否为null |
is not null | 判断是否不为null |
between and | 两者之间 |
greatest | 两个或多个参数时返回最大值 |
least | 两个或多个参数时返回最小值 |
in | 在集合中 |
位运算符 | 描述 |
---|---|
& | 按位与 |
I | 按位或 |
^ | 按位异或 |
! | 取反 |
<< | 左移 |
>> | 右移 |
字符串函数 | 描述 |
---|---|
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 是本年的第几天 |
通常完成一个逻辑功能需要多条 SQL 语句,而且各个语句之间很可能传递参数,所以,编写逻辑功能相对来说稍微复杂些,而存储过程可以把这些 SQL 语句包含到一个独立的单元中,使外界看不到复杂的 SQL 语句,只需要简单调用即可达到目的。并且数据库专业人员可以随时对存储过程进行修改,而不会影响到调用它的应用程序源代码
存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
由于存储过程是在服务器端运行的,且执行速度快,因此当客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而可降低网络负载。
当存储过程被成功编译后,就存储在数据库服务器里了,以后客户端可以直接调用,这样所有的 SQL 语句将从服务器执行,从而提高性能。但需要说明的是,存储过程不是越多越好,过多的使用存储过程反而影响系统性能
存储过程提高安全性的一个方案就是把它作为中间组件,存储过程里可以对某些表做相关操作,然后存储过程作为接口提供给外部程序。这样,外部程序无法直接操作数据库表,只能通过存储过程来操作对应的表,因此在一定程度上,安全性是可以得到提高的。
数据的独立可以达到解耦的效果,也就是说,程序可以调用存储过程,来替代执行多条的 SQL 语句。这种情况下,存储过程把数据同用户隔离开来,优点就是当数据表的结构改变时,调用表不用修改程序,只需要数据库管理者重新编写存储过程即可。
DELIMITER @@ #将语句的结束符号从分号;临时改为两个@@ (可以是自定义)
CREATE PROCEDURE yibo() #创建存储过程,过程名为yibo, 不带参数
-> BEGIN #过程体以关键字BEGIN开始
-> SELECT * FROM oyyy; #过程体语句(自己根据需求进行编写)
-> END @@ #过程体以关键字END结束
DELIMITER ; #将语句的结束符号恢复为分号
call yibo;
(root@localhost) [oyyy]> show create procedure oyyy.yibo\G;
(root@localhost) [oyyy]> show create procedure yibo\G; 省略库名
存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。
(root@localhost) [oyyy]> drop procedure if exists yibo;
if then else ..... end if
原表
(root@localhost) [hellodb]> call yibo(7);
(root@localhost) [hellodb]> call yibo(3);
while do....end while
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/a568911/article/details/121908953
内容来源于网络,如有侵权,请联系作者删除!