zoukankan      html  css  js  c++  java
  • MySQL中变量的使用

    1,变量的类型

      MySQL中的存储过程类似java中的方法。既然如此,在存储过程中也同样可以使用变量。

      mysql中的变量可以分为以下几个类型:局部变量,用户变量,会话变量,全局变量。

    2,变量的定义及使用

     1,局部变量

        MySQL中的局部变量与java中的局部变量非常类似,java中的局部变量作用域是变量所在的方法,而MySQL中的局部变量作用域是所在的存储过程。

        以下是局部变量的定义及赋值方式:声明用到了关键字declare。

    BEGIN
        #Routine body goes here...
        #变量的定义
        declare var2 int(4);
    
        #变量的赋值方式一:直接赋值
        set var2 = 2;
    
        #变量的赋值方式二:将查询结果赋值给变量
        select u_id into var2 from users where u_name = 'zhangsan';
    END

    2,用户变量

        用户变量类似于java中的成员变量,java中的成员变量使用对象访问,例如:user.getName();访问User类中的name成员变量,在不做修改的前提下,无论调用多少次该方法返回值都是一样的,成员变量的作用域是所在类。MySQL中的用户变量的作用域是当前连接,声明、赋值和查询都是用@符号。

    BEGIN
        #Routine body goes here...
    
        #变量的赋值方式一:直接赋值,方式有以下两种。
        set @var1 = 2;
        set @var2 := 3;
    
        #变量的赋值方式二:将查询结果赋值给变量
        select u_id into @var3 from users where u_name = 'zhangsan';
    
    END

    3,会话变量

        服务器为每个连接的客户端维护一系列会话变量。其作用域仅限于当前连接,即每个连接中的会话变量是独立的。以下是对于会话变量的相关操作:

    #显示所有的会话变量
    show session variables;
           
    #查询会话变量的值,方式有以下三种。
    show variables like '%auto_increment_increment%'; #查询变量值的通用方式
    select @@auto_increment_increment;                #使用@@方式查询
    select @@session.auto_increment_increment;        #使用@@session.的方式,类似于java中对象名.变量名 
    select @@local.auto_increment_increment;          #使用@@local.的方式,类似于java中对象名.变量名 
    
    #设置会话变量的值,方式有以下三种。
    set auto_increment_increment=1;           #直接设置
    set session auto_increment_increment=1;   #使用session关键字,设置选定的范围
    set @@session.auto_increment_increment=1; #使用@@session.的方式,类似于java中对象名.变量名
    set @@local.auto_increment_increment=1;   #使用@@local.的方式,类似于java中对象名.变量名

    4,全局变量

        当服务启动时,它将所有全局变量初始化为默认值。其作用域为server的整个生命周期。

    #显示所有的全局变量
    show global variables;
    
    #查询全局变量的值的两种方式
    show variables like '%sql_warnings%'; #查询变量值的通用方式
    select @@global.sql_warnings;         #使用@@global.的方式,类似于java中对象名.变量名
    
    
    #设置全局变量的值的两种方式
    set sql_warnings=FALSE;        #直接设置
    set global sql_warnings=FALSE; #使用global关键字,设置选定的范围,最好加上global
    set @@global.sql_warnings=OFF; #使用@@global.的方式,类似于java中对象名.变量名

    3,小的注意事项

      declare声明变量必须在存储过程的最开始,否则就会出错。

  • 相关阅读:
    阿里的面试官都喜欢问哪些问题?
    Spring AOP中的JDK和CGLib动态代理哪个效率更高?
    招聘季!送你21套经典面试题!助你一臂之力!
    Spring AOP中的JDK和CGLib动态代理哪个效率更高?
    为什么需要分布式配置中心?
    线上出故障了!我慌得一匹!教大家如何应对在线故障!
    阿里巴巴的26款超神Java开源项目!
    完了!生产事故!几百万消息在消息队列里积压了几个小时!
    十大经典排序算法(动图演示)
    用户画像学习笔记
  • 原文地址:https://www.cnblogs.com/zouhong/p/14392016.html
Copyright © 2011-2022 走看看