zoukankan      html  css  js  c++  java
  • MySql的回顾十二:变量

      这是个光荣而又艰巨的任务!

      光荣在于平淡,艰巨在于漫长!

      又是一个周末,又可以带领各位小伙伴们继续学习探索MySql的知识了,今天一起来学习变量,有人可能就会问变量!!!,MySql还有变量?emmmm其实学之前我也是这么认为的,事实却是....真的有!所有还是要学,来来来慢慢往下看,最好看的时候拉起你的客户端工具,也试试,的确是有的,不骗你的。

    系统变量:
    全局变量:整个服务器
    会话变量:客户端的一次连接
    
    自定义变量:
    用户变量
    局部变量
    
    #一.系统变量
    说明:变量由系统提供,不是用户定义,属于服务器层面。
    注意:
    如果是全局级别,则需要加GLOBAL,如果是会话级别,需要加SESSION,什么都不写默认是SESSION
    使用的语法:#系统的变量不用定义直接使用。
    SHOW GLOBAL|【SESSION】 VARIABLES;
    1.查看所有的系统变量
    SHOW GLOBAL VARIABLES;
    查看会话的
    SHOW SESSION VARIABLES;
    
    2.查看满足条件的部分系统变量
    SHOW GLOBAL|【SESSION】 VARIABLES LIKE '%char%';
    
    3.查看指定的某个系统变量的值
    SELECT @@GLOBAL.系统变量名;
    SELECT @@SESSION.系统变量名;
    
    4.为某个系统变量赋值
    方式一:
    SET GLOBAL 系统变量名 = 值;
    SET SESSION 系统变量名 = 值;
    方式二:
    SET @@GLOBAL.系统变量=值;
    SET @@SESSION.系统变量=值;
    
    #1.全局变量
    #①查看所有的全局变量
    SHOW GLOBAL VARIABLES;

    #②查看部分的全局变量
    SHOW GLOBAL VARIABLES LIKE '%char%';

    #③查看指定的全局变量的值
    SELECT @@global.autocommit;

    #查看隔离级别
    SELECT @@tx_isolation;

    #查看某个指定的全局变量赋值(注意中间的那个点)
    #先修改
    #再次查看
    SET @@GLOBAL.autocommit=0;
    SELECT @@GLOBAL.autocommit;

    重新开启一个会话,再次查询

    #会话变量
    作用域:仅仅针对于当前会话(连接)有效
    
    #查看所有的会话变量
    SHOW SESSION VARIABLES;
    SHOW VARIABLES;

    #查看部分的会话变量
    SHOW VARIABLES LIKE '%char%';
    SHOW SESSION VARIABLES LIKE '%char%'; 

    #③查看指定的某个会话变量
    SELECT @@tx_isolation;
    SELECT @@SESSION.tx_isolation;

    #为某个会话变量赋值
    方式一:
    SET @@SESSION.tx_isolation='read-uncommitted';
    #查看当前的隔离级额别的会话变量
    SELECT @@SESSION.tx_isolation;

    方式二:
    SET SESSION tx_isolation='read-committed';
    #查看当前的隔离级额别的会话变量
    SELECT @@SESSION.tx_isolation;

    #二.自定义变量
    说明:变量是用户自定义的。
    使用步骤:
    声明
    赋值
    使用(查看,比较,运算等)
    
    #1.用户变量
    作用域:针对当前会话(连接)有效,同于会话变量的作用域。
    应用在任何地方,也就是begin end里面或者begin end外面。
    
    #声明并初始化
    方式一:
    SET @用户变量名=值;
    方式二:
    SET @用户变量名:=值;
    方式三:
    SELECT @用户名:=值;
    
    #②赋值(更新用户变量的值)
    方式一:通过SET或SELECT
    SET @用户变量名=值;
    SET @用户变量名:=值;
    SELECT @用户名:=值;
    #例:赋值.弱类型语言,第一次赋值字符串varchar,第二次复制INT
    SET @NAME='john';
    SET @NAME=100;
    方式二:通过SELECT INTO
    SELECT 字段 INTO @变量名
    FROM 表;
    
    #例:变量赋值
    SET @COUNT=1;
    SELECT COUNT(*) INTO @COUNT
    FROM employees;
    #使用(查看某个用户变量的值)
    SELECT @用户变量名;
    #例:查看变量
    SELECT @COUNT;

    #2.局部变量
    作用域:仅仅在定义它的begin end中有效。
    应用在begin end中的第一句话!!!
    
    #①声明
    DECLARE 变量名 类型;
    DECLARE 变量名 类型 DEFAULT 值;
    
    #②赋值
    方式一:通过SET或者SELECT
    SET 局部变量名=值;
    SET 局部变量名:=值;
    SELECT @局部变量名:=值;
    
    方式二:通过SELECT INTO
    SELECT 字段 INTO 局部变量名
    FROM 表;
    
    #③使用
    SELECT 局部变量名;

    对比用户变量和局部变量

    #案例:声明两个变量并复制,求和,并打印
    #用户变量
    SET @m=1;
    SET @n=2;
    SET @SUM=@m+@n;
    SELECT @SUM;

    变量到此结束,看到这里的读者们现在应该相信了MySql里面的确是有变量的,那屏幕前的你一定就会好奇,搞了这些东西,那在哪用呢?

    要不你猜猜?

    其是在存储过程里面用的,MySql基础回顾系列的最终回《存储过程与流程控制》将在下篇文章带领读者彻底介绍完成。

  • 相关阅读:
    Codeforces Round #239(Div. 2) 做后扯淡玩
    hdu 3507 Print Article
    prufer序列
    POJ 2778 DNA Sequence
    Codeforces Round #237 (Div. 2)
    poj3352
    图论知识
    POJ 2186
    Codeforces Round #236 (Div. 2)
    POJ 2823 Sliding Window
  • 原文地址:https://www.cnblogs.com/jxearlier/p/13581948.html
Copyright © 2011-2022 走看看