码迷,mamicode.com
首页 > 数据库 > 详细

MySQL高级 第一章——变量

时间:2019-11-24 22:27:12      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:使用   详细介绍   class   set   提交   命令   efault   字段   The   

MySQL中的变量可以分为两类:

系统变量自定义变量,接下来请看详细介绍:

一、系统变量

——说明:系统变量由系统提供,不是用户定义,属于服务器层面

1.1 系统变量中又包含两类:

  • 全局变量
    • 作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启
  • 会话变量
    • 作用域:仅仅针对于当前会话(连接)有效

1.2 变量的查询

global:表示全局变量
session:表示会话变量

  • 1.2.1 查看所有系统变量

      SHOW GLOBAL VARIABLES;#查看所有的全局变量
      SHOW SESSION VARIABLES;#查看所有的会话变量
  • 1.2.2 查看满足条件的部分系统变量

      SHOW GLOBAL VARIABLES LIKE '%char%';#查看所有包含char的全局变量
      SHOW SESSION VARIABLES LIKE '%char%';#查看所有包含char的会话变量
  • 1.2.3 查看指定的某个系统变量的值(一般查看具体的值,需要用select命令)

      select @@global.系统变量名;
      select @@session.系统变量名;
      例:
      select @@autocommit;//查看自动提交是否开启
  • 1.2.4 为某个系统变量赋值

    • 方式一:

        set global 系统变量名 = 值;
        set session 系统变量名 = 值;
        例:
        set session tx_isolation = 'read-uncommitted';#设置隔离级别
    • 方式二:

        set @@global.系统变量名 = 值;
        set @@session.系统变量名 = 值;
        例:
        set @@session.tx_isolation = 'read-uncommitted';#设置隔离级别

注意(系统变量):

如果是全局级别,则需要加 global;
如果是会话级别,则需要加 session,如果不写则默认是 session 级别。

二、自定义变量

——说明:自定义变量是由用户自定义,不是由系统提供的
自定义变量中又包含两类:

用户变量(全局变量)
局部变量

1.1 用户变量(全局变量)

  • 用户变量(全局变量)
    • 作用域:针对于当前会话(连接)有效
    • (可以应用在任何地方,begin end里面或者begin end外面.)
  • 1.1.1 用户变量(全局变量)的声明并初始化

    赋值的操作符为 =或:=

      set @用户变量名 = 值;
      set @用户变量名 := 值;
      select @用户变量名 := 值;
  • 1.1.2 赋值

    • 方式一:(通过set或select)

        set @用户变量名 = 值;
        set @用户变量名 := 值;
        select @用户变量名 := 值;
        案例:
        set @name = 'json';
        set @name = 100;
    • 方式二:(通过select into)

        select 字段 into @变量名 from 表;
        案例:
        select count(*) into @name from employees;//查询员工表总人数
  • 1.1.3 查询

      select @变量名;
      案例:
      select @count;//查询变量值

1.2 局部变量(仅能应用在begin end中的第一句话!!!)

  • 局部变量
    • 作用域:仅仅在定义它的begin end中有效
  • 1.2.1 局部变量的声明并初始化

    • 类似于java中的变量的声明,必须加上类型。可以只声明,不初始化

        declare 变量名 类型;  #声明
        案例:
        declare name varchar(20);
        #-------
        declare 变量名 类型 default 值;  #初始化一个值
        案例:
        declare name varchar(20) default 'Tom';
  • 1.2.2 赋值

    • 方式一:(通过set或select)

        set 局部变量名 = 值;
        set 局部变量名 := 值;
        select @局部变量名 := 值;
        案例:
        set name = 'json';
        set name = 100;
    • 方式二:(通过select into)

        select 字段 into 局部变量名 from 表;
        案例:
        select count(*) into name from employees;//查询员工表总人数
  • 1.2.3 查询

      select 局部变量名;
      案例:
      select count;//查询局部变量值

注意(自定义变量):

  • 自定义变量中的 局部变量 仅能应用在 begin end 中的第一句话!!!
  • 再次强调

对比

自定义变量中,用户变量和局部变量的 对比:

作用域 定义和使用的位置 语法
用户变量(全局变量) 当前会话 会话中的任何地方 必须加@符号,不用限定类型
局部变量 begin end中 只能在begin end中,且为第一句话 一般不用加@符号,必须限定类型

MySQL高级 第一章——变量

标签:使用   详细介绍   class   set   提交   命令   efault   字段   The   

原文地址:https://www.cnblogs.com/orange-wan/p/11915566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!