一、会话用户变量定义
方法一
SET @var1 = 值1[,@var2 = 值2,...]
示例:SET @price = 5.5;
方法二
SELECT 值 INTO var1[,值2 INTO var2,...]
示例:SELECT min(book_price) into para1,max(bool_price) into para2,avg(book_price) into para3;
二、局部变量定义
DECLARE var1[,var2]...数据类型[DEFAULT 默认值]
作用:定义1 ~ n个指定类型的局部变量,并设置初始值。
示例:
DECLARE num int DEFAULT 0;
说明:DECLARE
只能用于BEGIN..END
的开头部分定义局部变量。
三、全局系统变量
- MySQL启动时会根据系统配置定义全局系统变量并初始化为默认值(约393个全局系统变量)。
- 生存期从MySQL服务器启动时,直到MySQL服务器停止或重启为止。
- 作用范围是整个系统,其值改变会影响整个系统。
四、语句
IF语句
IF 条件1 THEN 语句序列1
[ELSEIF 条件2 THEN 语句序列2]
...
[ELSE 语句序列n]
END IF
CASE语句1
CASE
WHEN 条件1 THEN 语句序列1
[WHEN 条件2 THEN 语句序列2]
...
[ELSE 语句序列n]
END CASE
CASE语句2
CASE 表达式
WHEN 值1 THEN 语句序列1
[WHEN 值2 THEN 语句序列2]
...
[ELSE 语句序列n]
END CASE
WHILE语句
[开始标号:]WHILE条件 DO
程序段
END WHILE[结束标号]
REPEAT语句
[开始标号:]REPEAT
程序段
UNTIL 条件
END REPEAT[结束标号]
LOOP语句
[开始标号:]LOOP
程序段
END LOOP[结束标号]
五、存储过程
什么是存储过程?
- 一组可以编程的函数,完成特定功能的SQL语句集。
- 经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需求时)来调用执行。
- 存储过程是具有名字的一段代码,用来完成一个特定的功能。
为什么要使用存储过程?
- 将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用。
- 进行批量处理,提升效率。
- 统一接口,确保数据的安全。
存储过程的优点
- 存储过程和函数允许标准组件式编程,提高了SQL语句的重要性、共享性和可移植性。
- 存储过程能够实现较快的执行速度,能够减少网络流量。
- 存储过程和函数可以被作为一种安全机制来利用。
编写存储过程的注意事项
- 存储过程的编写比单句SQL语句复杂,需要用户具有更高的技能和更丰富的经验。
- 在编写存储过程时,需要创建这些数据库对象权限。
创建存储过程
语法
CREATE PROCEDURE procedure_name
([procedure_prameter[,......]])
[characteristic......] routine_body
说明
procedure_name: 要创建的存储过程的名字
procedure_parameter: 表示存储过程的参数
characteristic: 表示存储过程的特征
routine_body: 表示存储过程的SQL语句代码
可以用BEGIN......END来标志SQL语句的开始和结束
查看存储过程的状态信息
SHOW PROCEDURE STATUS LIKE
'procedure_name'
查看存储过程定义信息
SHOW CREATE PROCEDURE
procedure_name;
``
**修改存储过程**
```sql
ALTER PROCEDURE procedure_name
[characteristic......];
注意:这个语法用了修改存储过程的某些特征,比如读写权限。如果修改存储过程的内容,可以先删除该存储过程,再重新创建。
删除存储过程
DROP PROCEDURE procedure_name;
存储过程的语句结构
delimiter //
begin
SQL语句
end //
delimiter;