zoukankan      html  css  js  c++  java
  • mysql 变量声明及赋值的三种方式

    1.情景展示

      在mysql中,如何申明一个变量并进行使用?

      MySQL中主要有三种类型的变量:局部变量、系统变量及用户自定义变量。

    2.局部变量(无前缀)

      2.1 声明变量

      作用域:BEGIN,END之间才能访问得到;

      适用范围:可以用在存储过程或函数中;

      使用前提:必须使用关键词DECLARE或者作为存储过程的输入或输出参数使用。

      说       明:

      多个变量的声明必须使用多个declare一一对应,否则会报错;

      定义变量的数据类型时,必须指定允许接收的最大字节数,否则会报错。

      以上两种变量的定义方式,在BEGIN,END之间进行赋值之后,就能直接使用啦。

      2.2 变量赋值

      方式一:在定义变量的时候设置默认值;

      比如:

    DECLARE
    		V_END_NUMBER VARCHAR ( 50 ) DEFAULT '12345';
    

      需要提醒的一点是:在使用declare定义变量的时候,如果不设置默认值的话,它的初始化值=NULL。

      方式二:select cloumn1, cloumn2, ... into v_name1, v_name2, ... from table。

      这里还涉及两种情况:

      当将查询结果塞给两个及以上变量时,INTO左边的字段和INTO右边的变量数量必须一一对应上才行,并且只能使用一个INTO;

      当将查询结果塞给一个变量时,可以将这个作为最后一个查询字段,并且可以使用INTO赋值,后面不能再跟其他字段。

    3.系统变量(以@@为前缀)

      MySQL服务器维护许多系统变量配置为默认值。系统变量可以分为:

      GLOBAL类型:全局变量(影响服务器的整体操作);

      SESSION类型:会话变量(影响其对各个客户端连接的操作);

      BOTH类型:现在还不知道它是个啥。

      3.1 查询变量

      要查看正在运行的服务器使用的当前值,有两种方式:

      方式一:SHOW VARIABLES 语句或变量名;

      以自动提交为例:

      方式二:SELECT @@变量名。

      以自动提交为例:

      3.2 修改变量

      修改全局变量有2种方式:

    SET GLOBAL sort_buffer_size=1000000;
    SET @@global.sort_buffer_size=1000000;
    

      修改会话变量有4种方式:

    SET sort_buffer_size=1000000;
    SET SESSION sort_buffer_size=1000000;
    SET @@sort_buffer_size=1000000;
    SET @@local.sort_buffer_size=10000;

    4.自定义变量(以@为前缀)

      您可以访问任何用户定义的变量,而不声明它或初始化它;

      如果引用尚未初始化的变量,则它的值为NULL,并且类型为字符串;

      变量类型:整数,小数,浮点数,二进制或非二进制字符串或NULL;

      用户定义的变量是会话特定的。 也就是说,由一个客户端定义的用户变量不能被其他客户端看到或使用。

      使用自定义变量,无需声明直接赋值就可以啦。

      4.1 变量赋值

      方式一:使用set

      变形一:set @变量名=变量值

      变形二:set @变量名:=变量值

      

      方式二:使用select

      注意:使用select赋值,必须使用“:=”,不能使用“=”,因为等于号在这里代表的含义是:比较;

      变形一:select @变量名:=变量值

      变形二:select @变量名:=字段名 from table where ... limit 1;

      说明:通过查表给变量赋值的方式,前提条件是查询结果只有一条记录;

      为什么要限定一条记录,因为变量只有一个值!下面我们可以进行一下测试:

      看似变量userKey2有多个变量值,事实果真如此吗?

      其实际结果只有一项,就是上面多条记录最末行的值。

      4.2 变量使用

      用法:@变量名

      这样一来,就可以看出:使用局部变量最终是要服务于于SQL的,不然变量的定义没有任何意义。

      我们可以得出这样的结论:局部变量适用于SQL执行。

    写在最后

      哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

     相关推荐:

  • 相关阅读:
    【原】泛型委托
    【原】web页面登陆验证
    【原】在一般处理程序中设置session
    16Aspx.com-PHP企业整站源码 景观石材大理石类织梦模板 含手机移动端 完整源码 APP+PC
    16Aspx.com-将15位身份证转换成18位
    16Aspx.com-书通网中小学生免费在线学习网站源码 带采集带手机版帝国cms内核
    16Aspx.com源码2014年7月详细
    Web电子商务网(三层)V2.0源码
    毫秒级百万数据分页存储过程
    C#做的一个加密/解密的类
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/14112059.html
Copyright © 2011-2022 走看看