嘉兴网站建设企业网站制作,公司注册地址要求,深圳高端网站制作费用,广东专业网站建设报价一、MySQL系统变量
系统变量是由系统提供#xff0c;属于服务器层面。
系统变量分为#xff1a;全局变量和会话变量。
全局变量一般要加 GLOBAL 关键字#xff0c;例如在《MySQL 基础 ————事务与隔离级别总结》中提到的 GLOBAL TRANSACTION#xff0c;就属于全局变量…一、MySQL系统变量
系统变量是由系统提供属于服务器层面。
系统变量分为全局变量和会话变量。
全局变量一般要加 GLOBAL 关键字例如在《MySQL 基础 ————事务与隔离级别总结》中提到的 GLOBAL TRANSACTION就属于全局变量它针对所有连接都会生效但是一旦MySQL服务重启同样会失效。
会话变量由 SESSION 关键字修饰一般可以省略比如 SET TRANSACTION ISOLATION 这里的事务隔离级别设置就只针对当前会话即当前连接。
二、查看系统变量
查看所有的全局或会话系统变量
SHOW GLOBAL|SESSION VARIABLES; 查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE %char%; 查看具体的变量值
SELECT global.character_set_client; SELECT character_set_client; 三、设置系统变量
系统变量可以被用户修改。有两种方式
方式一
SET GLOBAL|[SESSION] 系统变量名 值;
方式二
SET global|[session].系统变量名 值;
比如设置事务提交方式查看事务提交方式SELECT VARIABLES LIKE autocommit
-- 全局
SET GLOBAL autocommit 0;
SET global.autocommit 0;-- 当前会话
SET [SESSION] autocommit 0;
SET [session].autocommit 0;
四、自定义变量
自定义变量分为用户变量和局部变量。
4.1 用户变量
用户变量要求必须带有符号只针对当前会话有效。可在当前会话中的任何地方使用相当于针对本次连接的“全局变量”。
赋值操作可以用 或 : 两种。
4.1.1 声明并初始化
SET 变量名 变量值;
SET 变量名 : 变量值;
SELECT 变量名 : 变量值;
4.1.2 赋值更新用户变量的值
上述初始化的三种方法依然适用同时也可以使用 SELECT INTO:
SELECT 字段 INTO 变量名 FROM 表;
4.1.3 使用用户变量
SELECT 变量名;
4.2 局部变量
局部变量的作用域仅仅在定义它的 BEGIN... END存储过程中有效。而且声明语句一定要在 BEGIN...END 中的第一句话。
-- 声明
DECLARE 变量名 类型 [DEFAULT 默认值];
-- 赋值
SET 变量名 值;
SET 变量名 : 值;
SELECT 变量名 : 值;
SELECT 字段 INTO 变量名 FROM 表;
-- 使用局部变量
SELECT 变量名;
4.3 演示
1、用户变量演示
SET name Morty;
SELECT name; -- 输出 Morty [5Bytes]SET name 100;
SELECT name; -- 输出 100SET count 1;
SELECT count; -- 输出 1SELECT COUNT(*) INTO count FROM emp ;
SELECT count; -- 输出 11
2、局部变量演示
创建存储过程
-- 创建存储过程
DELIMITER $
CREATE PROCEDURE emp_name_pro()
BEGIN
DECLARE emp_name VARCHAR(5) DEFAULT Moryt;
SELECT emp_name;
END $
调用存储过程
CALL emp_name_pro; 五、用户变量与局部变量的比较 作用域定义和使用位置语法用户变量当前会话会话中的任何地方必须加不用指定类型局部变量存储过程的定义中BEGIN... END 的第一句一般不用加必须限定类型