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,商品的数量): 商品库存必须减少.

  • 相关阅读:
    [ USACO 2018 OPEN ] Out of Sorts (Platinum)
    [ USACO 2018 OPEN ] Out of Sorts (Gold)
    [ USACO 2018 OPEN ] Out of Sorts (Silver)
    [ BZOJ 4236 ] JOIOJI
    [ HAOI 2012 ] 容易题
    [ HAOI 2008 ] 玩具取名
    「BZOJ 4502」串
    Codeforces 493 E.Devu and Birthday Celebration
    「TJOI 2018」教科书般的亵渎
    「TJOI 2018」游园会 Party
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522214.html
Copyright © 2011-2022 走看看