分支语句
if-then-else if开头,end if结尾
- 1.单分支
书写在begin end;作用域中
if <条件> then
---SQL1//如果条件成立,则就执行SQL语句end if;
注意,classid这里设置的不是自动增长,所以对于上面的分支结构是有缺陷的,当将逐渐设置成为自动增长时,就不需要再写入classid
- 2.双分支
书写在begin end;作用域中
if <条件> then
---SQL1//如果条件成立,则就执行SQL1语句
else
---SQL2//如果条件不成立,则就执行SQL1语句
end if;
case case开头,end case;结尾
类似于java中的switch
书写在begin end;作用域中
case a
when 1 then
---SQL1
when 2 then
---SQL2
else//相当于switch中的default
---SQL3
end case;
通过上面的学习,可以将静态变量转化成为动态变量
循环语句
while
其中CONCAT(str1, str2,...)函数用于拼接字符串
repeat
loop
存储过程的查询、修改和删除
就是对存储过程的增删改查
查询存储过程
存储过程是隶属于某个数据库的,也就是说当我们将存储过程创建在某个数据库中之后,只能在当前数据库中调用此存储过程
查询存储过程:就是查看有哪些存储过程
- 语法:show procedure status where db='db_test2';意思就是展示存储过程,且要展示的是db_test2数据库中的存储过程;通过where条件选择数据库
查看存储过程的创建细节,也就是具体做了哪些操作
- 语法:show create procedure db_test2.proc_test1;
修改存储过程,不是修改代码,主要指修改存储过程的特性
- 语法:alter procedure <proc_name> 特征1 特征2...;实例:alter procedure proc_test1 READS SQL DATA;
- 存储过程的特征参数包括:
1.CONTAINS SQL 表示子程序包含SQL语句,但不包含读或写数据的语句
2.NO SQL 表示子程序中不包含SQL语句
3.READS SQL DATA 表示子程序中包含读数据的语句
4.MODIFIES SQL DATA 表示子程序中包含写数据的语句
5.COMMENT 'string'表示注释信息
6.SQL SECURITY [DEFINER |INVOKER]指明谁有权限来执行
- DEFINER 表示只有定义者自己才能够执行
- INVOKER 表示调用者可以执行
删除存储过程
- 语法:drop procedure proc_test1;
- drop 删除数据库中的对象、数据库、数据表、列、存储过程、视图、触发器、索引...
- delete 删除数据表中的数据