zoukankan      html  css  js  c++  java
  • MySQL变量使用总结

    变量: 临时存储数据

    变量分为两种:

    • 系统变量
    • 自定义变量

    一、系统变量

    系统内部已经定义好的变量: 用户只需要直接访问(使用)

    系统提供了很多变量: 服务器对任何内容的处理(表现的任何特性)都是由变量所保存的值来确定

    是否自动提交: autocommit
    自增长步长: auto_increment_increment
    ...

    查看所有变量: show variables;

    在mysql中: 系统变量又分为了两类: session变量(会话级别),global变量(全局级别)
    show session variables;
    show global variables;

    session变量: 用户在客户端连上服务端之后才有的变量: 客户端断开,变量消失
    global变量: 只要服务器运行就会产生的变量(跟客户端没有关系).

    查看系统变量: select @@变量名;

    修改系统变量: 会话级别和全局级别

    会话级别修改
    set 变量名 = 值; -- 会话级别
    set session 变量名 = 值;

    全局级别修改
    set global 变量名 = 值;
    set @@global.变量名 = 值;

    全局级别的修改不会对已经连上服务器的客户端产生作用: 客户端必须重连

    二、自定义变量

    用户定义的变量

    定义规则: 在变量名字之前使用一个@符号
    set @自定义变量名 = 值;

    访问变量: select @变量名;

    因为在mysql中”=”通常是认为是比较运算符,而不是赋值运算符(事实可以): 为了解决这一的矛盾: mysql开发团队定义了新的赋值符号: :=(冒号 + 等号)

    在mysql中,可以访问任意一个不存在的变量: 这种变量的值都是null

    三、数据表获取变量

    有两种方式能够从数据表中获取数据

    语法1: select @变量名 := 字段名... From 表名 where条件; -- 从表中取出对应的字段的值,赋值给变量

    以上方案特别注意: 只能使用专门的赋值符号:= 不能使用=(变成比较)

    语法2: 专门从数据表中取出数据赋值给变量(不会显示数据)

    特别注意: 该方式是纯粹赋值,所以必须保证select查到的记录数是1条

    四、变量作用域

    Mysql中变量本质分为两种: 全局变量和局部变量
    对应的作用范围也分为两种: 全局作用域和局部作用域

    全局作用域: 结构之外(函数,触发器,存储过程)
    局部作用域: 结构之内

    全局变量: 使用set 关键字 + @变量名定义的变量都是全局变量,在任何地方都可以使用
    局部变量: 在结构内部定义的变量: 同时要求使用的是declare进行声明,而不是使用set @变量名),只能在定义的结构内部使用

    需求: 电子商务系统,有两张表: 商品表(id,名字,价格,货号,库存等), 订单表(id,订单号,商品id,时间,购买数量等)
    当用户下单成功, 订单生成(商品id,商品的数量): 商品库存必须减少.

  • 相关阅读:
    springmvc入门详解
    getClass 与getSimpleName
    mybati的存储过程
    mybatis与spring的整合
    mybatis分页插件以及懒加载
    mybatis知识总结
    【Java面试题】30 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。
    【Java面试题】29 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
    【Java面试题】28 简述synchronized和java.util.concurrent.locks.Lock的异同 ?
    【Java面试题】27 多线程笔试面试概念问答
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522214.html
Copyright © 2011-2022 走看看