3d动画制作自学教程,股票发行ipo和seo是什么意思,合肥市蜀山区做个网站多少钱,网络推广方式主要有文章目录一、正则表达式#xff08;REGEXP#xff09;1、正则表达式匹配符2、语法二、存储过程1、概述2、优点3、 创建、调用、查看和删除存储过程4、存储过程的控制语句一、正则表达式#xff08;REGEXP#xff09;
1、正则表达式匹配符 2、语法
SELECT 选项 FROM 表名 …
文章目录一、正则表达式REGEXP1、正则表达式匹配符2、语法二、存储过程1、概述2、优点3、 创建、调用、查看和删除存储过程4、存储过程的控制语句一、正则表达式REGEXP
1、正则表达式匹配符 2、语法
SELECT 选项 FROM 表名 WHERE 选项 REGEXP (模式)
select * from test1 where name regexp cy;
select * from test1 where age regexp 1$;
select * from test1 where age regexp 20|23;
select * from test1 where name regexp ^n|^k;二、存储过程
1、概述
存储过程是一组为了完成特定功能的SQL语句集合
存储过程在使用过程中是将常用或者复杂的工作预先使用 SQL 语句写好并用一个指定的名称存储起来这个过程经编译和优化后存储在数据库服务器中当需要使用时只需要调用即可
存储过程在执行上比传统SQL速度更快、执行效率更高。
2、优点
执行一次后会将生成的二进制代码驻留缓冲区提高执行效率
SQL语句加上控制语句的集合灵活性高
在服务器端存储客户端调用时降低网络负载
可多次重复被调用可随时修改不影响客户端调用
可完成所有的数据库操作也可控制数据库的信息访问权限
3、 创建、调用、查看和删除存储过程
3.1 创建存储过程
DELIMITER ## #将语句的结束符号从分号;临时改为两个$$ (可以是自定义)
CREATE PROCEDURE proc() #创建存储过程过程名为Proc 不带参数
- BEGIN #过程体以关键字BEGIN开始
- SELECT * FROM test5; #过程体语句自己根据需求进行编写
- END ## #过程体以关键字END结束
DELIMITER ; #将语句的结束符号恢复为分号实例操作
mysql delimiter ##
mysql create procedure proc()- begin- insert into test5 values (4,lucy,23,女);- insert into test5 values (5,jack,21,男);- insert into test5 values (6,nancy,22,女);- select * from test5;- end ##3.2 调用存储过程
CALL proc;3.3 查看存储过程
SHOW CREATE PROCEDURE [数据库.] 存储过程名; #查看某个存储过程的具体信息如果在指定库中库名可以省略
SHOW CREATE PROCEDURE bbc.proc; #未省略库名
SHOW CREATE PROCEDURE proc; #省略库名SHOW PROCEDURE STATUS [LIKE %proc%] \G #竖列查看实例操作
方法一
show create procedure proc;
show create procedure proc\G;
方法二
show procedure status like %proc%
show procedure status like %proc%\G;3.4 存储过程的参数 IN输入参数
表示调用者向过程传入值(传入值可以是字面量或变量) OUT输出参数
表示过程向调用者传出值(可以返回多个值)(传出值只能是变量) INOUT输入输出参数
既表示调用者向过程传入值又表示过程向调用者传出值(值只能是变量) 实例操作 IN 传入参数
mysql delimiter $$
mysql create procedure proc1(in iage int)- begin- select * from test5 where age iage ;- end $$
Query OK, 0 rows affected (0.00 sec)mysql delimiter ;
mysql call proc1(21);OUT输出参数
因为out是向调用者输出参数不接收输入的参数所以存储过程里的num为null
mysql delimiter ##
mysql create procedure proc2(out num int)- begin- select num;- set num6;- select num;- end ##
Query OK, 0 rows affected (0.00 sec)
mysql delimiter ;
mysql set num1;
Query OK, 0 rows affected (0.00 sec)mysql call proc2(num);
------
| num |
------
| NULL |
------
1 row in set (0.00 sec)------
| num |
------
| 6 |
------
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql select num;
------
| num |
------
| 6 |
------
1 row in set (0.00 sec) #调用了proc2存储过程输出参数改变了num变量的值
INOUT输入输出参数
mysql delimiter ##
mysql create procedure proc3 (inout num int)- begin- select num;- set num6;- select num;- end ##
Query OK, 0 rows affected (0.00 sec)mysql delimiter ;
mysql set num1;
Query OK, 0 rows affected (0.00 sec)mysql call proc3(num);
------
| num |
------
| 1 |
------
1 row in set (0.00 sec)------
| num |
------
| 6 |
------
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql select num;
------
| num |
------
| 6 |
------
1 row in set (0.00 sec) 调用了proc3存储过程接受了输入的参数也输出参数改变了变量
3.5 删除存储过程 存储过程内容的修改方法是通过删除原有存储过程之后以相同名称创建新的存储过程
DROP PROCEDURE IF EXISTS proc1;4、存储过程的控制语句
4.1 条件控制语句 if-then-else … end if
mysql delimiter ## #修改默认结束符为##
mysql create procedure proc1(in iage int) #创建存储过程proc1参数为iage,数据类型为int- begin #过程体以关键词begin开始- declare var int; #定义变量var为int类型- set variage*2; #设置变量var等于传入参数的2倍- if var 20 then #如果var大于等于20,则执行下面的过程体- update test5 set ageage1; #设置test5中的age1- else #如果变量var不大于10,则执行下面过程体- update test5 set ageage-1; #设置表test5中的age-1- end if; #结束if语句- end ## #结束创建存储过程
Query OK, 0 rows affected (0.00 sec)mysql delimiter ; #重新修改默认结束符为原来的;
mysql call proc1(10); #调用proc1的存储过程并传入参数10
Query OK, 6 rows affected (0.00 sec) 4.2 循环语句while … end while
mysql delimiter ## #修改默认结束符为##
mysql create procedure proc4() #创建存储过程为proc4- begin #过程体以关键字begin开始- declare var int; #定义变量var为int类型- set var0; #设置var0- while var 10 do #使用while循环var要小于10- insert into test2(id) values(var); #满足条件则进行添加数据内容为变量var- set varvar1; #变量var每次循环后加1- end while; #结束while循环- end ## #结束创建存储过程
Query OK, 0 rows affected (0.00 sec)mysql delimiter ; #重新修改默认结束符为原来的;
mysql call proc4; #调用proc4存储过程
Query OK, 1 row affected (0.01 sec)