mysql中的变量知识点
直接po代码
#变量
/*
系统变量:
全局变量
会话变量
自定义变量:
用户变量
局部变量
*/
#一、系统变量
/*
说明:变量由系统定义,不是用户定义,属于服务器层面
注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别
使用步骤:
1、查看所有系统变量
show global|【session】variables;
2、查看满足条件的部分系统变量
show global|【session】 variables like '%char%';
3、查看指定的系统变量的值
select @@global|【session】.系统变量名;
4、为某个系统变量赋值
方式一:
set global|【session】系统变量名=值;
方式二:
set @@global|【session】.系统变量名=值;
*/
#1》全局变量
/*
作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有会话(连接)有效,但不能跨重启(
我们去修改全局变量的值后,mysql服务一旦重启,修改的全局变量的值又会被还原成服务器默认的初始值)
*/
#查看所有会话变量
SHOW SESSION VARIABLES;
#默认为会话(SESSION)变量
SHOW VARIABLES;
#查看满足条件的部分会话变量
SHOW SESSION VARIABLES LIKE '%autocommit%';
#查看满足条件的部分会话变量
SHOW VARIABLES LIKE '%autocommit%';
#查看指定的系统变量的值
SELECT @@session.autocommit;
#查看指定的系统变量的值(默认是会话级别)
SELECT @@autocommit;
#
SELECT @@global.autocommit;
SELECT @@session.autocommit
#查看所有全局变量
SHOW GLOBAL VARIABLES;
#查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%char%';
#查看指定的系统变量的值
SELECT @@global.autocommit;
SELECT @@session.autocommit;
SELECT @@autocommit;
#
SELECT @@global.tx_isolation;
SELECT @@session.tx_isolation;
SELECT @@tx_isolation;
#为某个系统变量赋值
SET @@global.autocommit=0;
SET GLOBAL autocommit=0;
#
SET @@session.autocommit=0;
SET @@autocommit=0;
SET SESSION autocommit =0;
SET autocommit =0;
#2》会话变量
/*
作用域:针对于当前会话(连接)有效
*/
#1.查看所有的会话变量
SHOW SESSION VARIABLES;
#省略SESSION关键字
SHOW VARIABLES;
#查看部分的会话变量
SHOW SESSION VARIABLES LIKE '%autocommit%';
SHOW SESSION VARIABLES LIKE '%char%';
SHOW VARIABLES LIKE '%autocommit%';
SHOW VARIABLES LIKE '%char%';
#查看指定的某个会话变量
SELECT @@autocommit;
SELECT @@session.autocommit;
SELECT @@tx_isolation;
SELECT @@session.tx_isolation;
#为某个会话变量赋值
#方式1
SET @@session.autocommit = 0;
#省略session关键字
SET @@autocommit = 0;
#方式2
SET SESSION autocommit = 0;
#省略SESSION关键字
SET autocommit = 0;
#
SET SESSION tx_isolation = 'read-uncommitted';
SET tx_isolation = 'read-committed';
#二、自定义变量
/*
说明:变量由用户自定义,而不是系统提供的
使用步骤:
1、声明
2、赋值
3、使用(查看、比较、运算等)
*/
#1》用户变量
/*
作用域:针对于当前会话(连接)有效,作用域同于会话变量
应用在任何地方,也就是begin end里面或begin end外面
*/
#注意:用户变量要求声明时必须初始化
#赋值操作符有 =和:=这2种
#1.声明并初始化(3种方式)
#注意:如果是使用set方式赋值的话,支持=和:=这2种赋值操作符
#方式1
SET @变量名=值;
#方式2
SET @变量名:=值;
#注意:如果是使用SELECT方式赋值的话,那就只支持:=这种赋值操作符
#方式3
SELECT @变量名:=值;
#2.赋值(更新变量的值)
#方式一:
SET @变量名=值;
SET @变量名:=值;
SELECT @变量名:=值;
#方式二:
SELECT 字段 INTO @变量名
FROM 表;
#3.使用(查看变量的值)
SELECT @变量名;
#案例
#声明并初始化(初始化时对数据类型没有要求)
SET @myTest = 'tom';
#赋值(赋值时对数据类型没有要求)
SET @myTest = 888;
#查看/使用
SELECT @myTest;
SELECT @myTest < 2;
#声明并初始化
SET @count=666;
#赋值
SELECT COUNT(*) INTO @count FROM employees;
#查看变量/使用变量
SELECT @count;
SELECT CONCAT('总共有员工', @count, '人');
#声明并初始化
SET @max_salary := 1800;
#赋值
SELECT MAX(salary) INTO @max_salary FROM employees;
#使用
SELECT @max_salary, CONCAT('企业最高薪水为', @max_salary, '元') AS 最高薪水;
#
SET @employee_id := 105;
SELECT * FROM employees WHERE employee_id = @employee_id;
#案例,用户变量
SET @num1 = 20;
SET @num2 = 30;
SET @sum = @num1 + @num2;
SELECT @sum;
#
SET @num1 := 30;
SET @num2 := 90;
SET @sum := @num1 + @num2;
SELECT @sum;
#
SELECT @num1 := 50;
SELECT @num2 := 15;
SELECT @sum := @num2 + @num1;
SELECT @sum;
#
#2》局部变量
/*
作用域:仅仅在定义它的begin end块中有效
应用在 begin end中的第一句话
*/
#1.声明(要求指定数据类型,可以只声明,不初始化)
DECLARE 变量名 类型;
DECLARE 变量名 类型 【DEFAULT 值】;
#2.赋值(更新变量的值)
#方式一:
SET 局部变量名=值;或
SET 局部变量名:=值;或
SELECT @局部变量名:=值;
#方式二:
SELECT 字段 INTO 局部变量名
FROM 表;
#3.使用(查看变量的值)
SELECT 局部变量名;
作用域 定义位置 语法
用户变量 当前会话 会话的任何地方 加@符号,不用指定类型
局部变量 定义它的BEGIN END中 BEGIN END的第一句话 一般不用加@,需要指定类型
#案例:声明两个变量,求和并打印
#用户变量
SET @m = 5;
SET @n = 8;
SET @sum = @m + @n;
SELECT @sum;
#案例,局部变量
/*
declare myNum1 int default 60;
DECLARE myNum2 INT DEFAULT 15;
declare mySum double;
set mySum = myNum1 + myNum2;
select mySum;
*/