(十八)变量


变量分为两种:系统变量自定义变量


系统变量

系统定义好的变量,大部分时候,根本不需要我们自己去管理这些变量,它们是用来控制服务器表现的,诸如:autocommitauto_increment 等等 ;

  • 查看系统变量

    # 查看所有系统变量,我这里是211个。
    ysql> show variables ;
    +---------------------------------+----------------------------------------------------------------+
    | Variable_name                   | Value                                                          |
    +---------------------------------+----------------------------------------------------------------+
    | auto_increment_increment        | 1                                                              |
    | auto_increment_offset           | 1                                                              |
    | automatic_sp_privileges         | ON                                                             |
    | back_log                        | 50                                                             |
    | basedir                         | D:mysql                                                      |
    | binlog_cache_size               | 32768                                                          |
    | bulk_insert_buffer_size         | 8388608                                                        |
    | character_set_client            | utf8                                                           |
    | character_set_connection        | utf8                                                           |
    | character_set_database          | utf8                                                           |
    | character_set_filesystem        | binary                                                         |
    | character_set_results           | utf8                                                           |
    | character_set_server            | utf8                                                           |
    | character_set_system            | u
    
    	.....							......
    	
    | version_compile_os              | Win32                                                          |
    | wait_timeout                    | 28800                                                          |
    +---------------------------------+----------------------------------------------------------------+
    211 rows in set
    
    
  • 查看具体变量值

    # 查看具体变量值 
    语法: select @@变量名 ;
    mysql> select @@wait_timeout,@@autocommit ;
    +----------------+--------------+
    | @@wait_timeout | @@autocommit |
    +----------------+--------------+
    |          28800 |            1 |
    +----------------+--------------+
    1 row in set
     
    
  • 修改系统变量

    分为两种:会话级别全局级别

    会话级别set [@@]变量名 = 值 ;,仅仅对当次连接有效 ;

    全局级别set global [@@]变量名 = 值 ; ,修改以后,对所有连接都起作用 (除去,在修改之前已经连接上服务器的连接);


自定义变量

用户自定义变量,变量名前面必须添加一个 @ ,用于区分系统变量 ;

所有自定义的变量都是 会话级别

  • 定义自定义变量

    set @变量名 =;
    
  • 查看自定义变量

    select @变量名  ;
    

    mysql 中,’=’ 会默认的当做比较符号处理(在很多地方),mysql 为了区分和赋值的概念,重新定义了一个新的赋值符号 := ;

    mysql 允许从数据表中直接获取数据,然后赋值给变量 ;

    # 边赋值,边查看
    -- 必须使用 :=  如果使用 = ,则变为了 比较
    select @变量名 := 字段名 from 数据源 ;
    
    

    mysql 允许只有赋值,不查看结果:

    要求严格:数据记录最多只允许 获取一条

    select 字段列表 from 表名 where 条件 into @变量名,@变量名,...;
    

border="0" src="//music.163.com/outchain/player?type=2&id=474042382&auto=1&height=66" width="330" height="86">
原文地址:https://www.cnblogs.com/young-youth/p/11665630.html