zoukankan      html  css  js  c++  java
  • SQL/变量

      变量

    #变量
    /*
    系统变量:
        全局变量
        会话变量
    自定义变量:
        用户变量
        局部变量
    */
    
    #一、系统变量
    
    /*
    说明:变量由系统提供的,不是用户定义,属于服务器层面
    注意:
    如果是全局级别,则需要加 GLOBAL ,如果是会话级别,则需要加SESSION,如果不写,则默认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、全局变量
    /*
    作用域:服务器每次启动将为所有的全局变量赋初始值,针对所有的会话(连接)有效,但不能跨重启
    跨重启,需要对服务器进行设置
    */
    
    #查看所有的全局变量
    SHOW GLOBAL VARIABLES;
    
    #查看部分的全局变量
    SHOW GLOBAL VARIABLES LIKE '%char%';
    
    #查看指定的全局变量的值
    SELECT @@global.autocommit;
    SELECT @@tx_isolation;
    
    #为某个指定的全局变量赋值
    SET @@global.autocommit = 0; #针对服务器的,所有连接有效
    
    #2、会话变量  #比全局变量稍多
    /*
    作用域:仅仅针对当前会话(连接)有效
    */
    
    #查看所有的会话变量
    SHOW VARIABLES;
    SHOW SESSION VARIABLES;
    
    #查看部分的会话变量
    SHOW VARIABLES LIKE '%char%';
    SHOW SESSION VARIABLES LIKE '%char%';
    
    #查看指定的某个会话变量
    SELECT @@tx_isolation;
    SELECT @@session.tx_isolation;
    
    #为某个会话变量赋值
    #方式一:
    SET @@session.tx_isolation = 'read-uncommitted';
    #方式二:
    SET SESSION tx_isolation = 'read-committed';
    
    
    #二、自定义变量
    /*
    说明:变量是用户自定义的,不是由系统的
    使用步骤:
    声明
    赋值
    使用(查看、比较、运算等)
    */
    
    #1、用户变量
    /*
    作用域:针对于当前会话(连接)有效,同于会话变量的作用域
    应用在任何地方,也就是begin end的里面 或者 begin end的外面
    */
    
    #声明并初始化
    SET @用户变量名 = 值;
    SET @用户变量名:=值;
    SELECT @用户变量名:=值;
    
    #赋值(更新用户变量的值)
    #方式一:通过set或select
    SET @用户变量名 = 值;
    SET @用户变量名:=值;
    SELECT @用户变量名:=值;
    #方式二:通过select into
        SELECT 字段 INTO @变量名  #INTO @变量名
        FROM 表;
    #使用(查看用户变量的值)
    SELECT @用户变量名;
    
    
    #声明并初始化
    SET @name = 'john';
    SET @name = 100;
    SET @count = 1;  #
    #赋值
    SELECT COUNT(*) INTO @count #
    FROM employees;
    #查看
    SELECT @name;
    SELECT @count;
    
    #2、局部变量
    /*
    作用域:仅仅在定义它的begin end中有效
    应用在begin end中的第一句话
    */
    
    #声明
    DECLARE 变量名 类型;
    DECLARE 变量名 类型 DEFAULT 值;
    
    #赋值
    #方式一:通过set或select
    SET 局部变量名 = 值;
    SET 局部变量名:=值;
    SELECT @局部变量名:=值;  #
    #方式二:通过select into
        SELECT 字段 INTO 局部变量名  #INTO 局部变量名
        FROM 表;
    
    #使用
    SELECT 局部变量名;
    
    
    #对比用户变量和局部变量
    /*
              作用域         定义和使用的位置               语法
    用户变量      当前会话          会话中的任何地方              必须加上@符合, 不用限定类型
    局部变量    begin end 中    只能在begin end中,且为第一句话        一般不加@符号, 需要限定类型
    
    */
    
    #声明两个变量并赋初始值,求和,并打印
    
    #用户变量
    SET @m = 1;
    SET @n = 2;
    SET @sum = @m + @n;
    SELECT @sum;
    
    #局部变量
    
    #命令提示符下
    DELIMITER $  #设置存储过程结束标志
    CREATE OR REPLACE PROCEDURE pro()  #创建或修改存储过程
    BEGIN   #多条sql语句
        DECLARE m INT DEFAULT 2;  
        DECLARE n INT DEFAULT 3;
        DECLARE SUM INT;
        SET SUM = m + n;
        SELECT SUM;
    END$   #end后面 $ 结束标志
    
    CALL pro()$ #调用存储过程
    
    #查询编辑器内
    
    DELIMITER $  #设置存储过程结束标志
    CREATE OR REPLACE PROCEDURE pro()  #创建或修改存储过程
    BEGIN   #多条sql语句
        DECLARE m INT DEFAULT 2;  
        DECLARE n INT DEFAULT 5;
        DECLARE SUM INT;
        SET SUM = m + n;
        SELECT SUM;
    END$   #end后面 $ 结束标志
    
    CALL pro();
    View Code
  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    70. Climbing Stairs
    647. Palindromic Substrings
    609. Find Duplicate File in System
    583. Delete Operation for Two Strings
    556 Next Greater Element III
    553. Optimal Division
    539. Minimum Time Difference
    537. Complex Number Multiplication
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/15160133.html
Copyright © 2011-2022 走看看