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
  • 相关阅读:
    HTTP Header 详解
    nginx负载均衡配置
    Win10安装Oracle11g
    MySQL如何让别人远程连接自己的数据库
    Maven的安装以及配置
    linux上安装jdk,tomcat,mysql
    Centos7上安装docker
    ActiviMQ快速入门
    2018年上海后半年JAVA软件工程师面试真题
    Docker安装MySQL、Redis、Tomcat
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/15160133.html
Copyright © 2011-2022 走看看