美文网首页
SQL变量, since 2021-12-20

SQL变量, since 2021-12-20

作者: Mc杰夫 | 来源:发表于2021-12-20 22:05 被阅读0次

(2021.12.20 Mon)
SQL中的变量分为user-defined variable, local variable和system variables.

User-defined Variable(UDV)

用户定义变量仅供一位用户使用,不能被其他用户使用。UDV在声明和使用时需要在前面加上@符号。UDV也叫会话变量(session variable)。

设置UDV可使用SETSELECT指令。注意到使用SELECT指令赋值时,赋值符号为:=

SET @var1 = 1, @var2 = 2;
SELECT @var3 := 3, @var4 := 4;
SET @var6 = CAST(b'1000001' AS UNSIGNED);
SET @var7 = b'1000001';

UDV可定义的数据类型包括integer, decimal, floating-point, binary or nonbinary string, or NULL value。

调用方法

SELECT place FROM table1 WHERE var_s BETWEEN @var3 AND @var4;

可在没有声明的情况下直接调用则返回NULL

SELECT @var5;

局部变量Local Variables

局部变量用DECLARE声明,并标明默认值用DEFAULT。如果没有指定默认值,则默认为NULL

局部变量用于存储过程,其作用域是BEGIN...END标记的范围。

DELIMITER //

CREATE PROCEDURE sp_test(var1 INT) 
BEGIN   
    DECLARE start  INT unsigned DEFAULT 1;  
    DECLARE finish INT unsigned DEFAULT 10;

    SELECT  var1, start, finish;

    SELECT * FROM places WHERE place BETWEEN start AND finish; 
END; //

DELIMITER ;

mysql > CALL sp_test(5);

System Variables

(2021.12.21 Tues)
系统变量,也叫全局变量。对所有客户端生效,只有super权限才能修改系统变量。其定义格式为

SET GLOBAL <var_name> = <var_value>;
SET @@global.<var_name> = <var_value>;

对系统变量可以通过表达式赋值,但是需要注意,服务器已经启动后(server runtime)使用SET赋值时可以使用乘号(*)等符号。而在服务器启动时(server startup)则不能通过运算符号对其赋值。下面的第一行和第四行都是正确的,其他错误。

$> mysql --max_allowed_packet = 16M
$> mysql --max_allowed_packet = 16*1024*1024
mysql> SET GLOBAL max_allowed_packet = 16M;
mysql> SET GLOBAL max_allowed_packet = 16*1024*1024;

在mysql console上,查看系统变量的指令是

mysql> show variables;

可以指定SESSIONGLOBAL关键词来找到对应的变量

SHOW GLOBAL VARIABLES LIKE '%ASDF%';
SHOW SESSION VARIABLES LIKE '%vnbm%';

Persist a global system variable to the mysqld-auto.cnf file (and set the runtime value):

SET PERSIST max_connections = 1000;
SET @@PERSIST.max_connections = 1000;

Persist a global system variable to the mysqld-auto.cnf file (without setting the runtime value):

SET PERSIST_ONLY back_log = 1000;
SET @@PERSIST_ONLY.back_log = 1000;

相关文章

  • SQL变量, since 2021-12-20

    (2021.12.20 Mon)SQL中的变量分为user-defined variable, local var...

  • SQL触发器trigger, since 2021-12-20

    (2021.12.23 Thur)触发器有时也称作事件-条件-动作规则(event-condition-actio...

  • SQL之变量

    参考:SQL Server中变量的声明和使用方法sql语句变量定义和样例 SQL中变量包括局部变量和全局变量 局部...

  • 引用型变量和记录型变量的使用

    PL/SQL的记录型变量和引用型变量 PL/SQL的记录型变量 举例: emp_rec emp%rowtype (...

  • SQL之T-SQL

    1、变量 要动态的写sql语句,就不能没有变量。声明变量并赋值: 在sql server 2008之后就可以对变量...

  • 第九章 其他参考资料(二)

    第九章 其他参考资料(二) 特殊变量 (SQL) 系统提供的变量。 SQL直接支持许多对象脚本特殊变量。这些变量包...

  • SQL变量

    变量的定义 SQL Server中的变量就是一个参数,可以对这个参数进行赋值。 变量的分类 变量分为局部变量和全局...

  • sql 变量

    变量分为局部变量和全局变量。 局部变量 以 @ 符号作为前缀 先声明再赋值。 其中,set 和 select 赋值...

  • 第十二章 使用嵌入式SQL(五)

    第十二章 使用嵌入式SQL(五) 嵌入式SQL变量 以下局部变量在嵌入式SQL中具有特殊用途。这些局部变量名称区分...

  • 2018-09-26

    命名空间 auto(since C++11) 引用c++==(附注:java里的变量都是reference)== ...

网友评论

      本文标题:SQL变量, since 2021-12-20

      本文链接:https://www.haomeiwen.com/subject/wsgzfrtx.html