MySql中特殊运算符的使用方法总结

有些系统变量只有全局级的,比如 max_connnections,读取时可以不显示声明
global,但设置时需要,否则会提示你设置的为全局变量。

1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

这几个还是比较常用,后续再补充一下。。。

该风格一般用于单行注释
c风格:/* 注释内容 */ 一般用于多行注释

1. = 安全比较运算符

(1) declare carnum int
 或 declare carnum
int  default(10);   声明局部变量

总结

3.会话变量:只对连接的客户端有效。

@是局部变量声明,如果没有@的字段代表是列名,用户变量声明用。

2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

系统变量又分为全局系统变量和会话系统变量

4.局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量
declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量

前言

六、mysql变量的术语分类:

4. @@ 系统变量

所以,最后它们之间的层次关系是:变量包括局部变量和用户变量。用户变量包括会话变量和全局变量。

mysql中有4类运算符,它们是:

用户定义的变量就叫用户变量。这样理解的话,会话变量和全局变量都可以是用户定义的变量。只是他们是对当前客户端生效还是对所有客户端生效的区别了。所以,用户变量包括了会话变量和全局变量

:= 和 = 运算符都有赋值的作用,在大部分场景下并无区别,但 :=
更为全场景些。

drop procedure if exists updateDnAlert;
create  procedure updateDnAlert()   
BEGIN
    declare alertType VARCHAR(10);
    declare alertTypeId int;
    declare tableId int;
    DECLARE done INT DEFAULT 0;  

    DECLARE curDnAlert CURSOR FOR  SELECT id,type from webgps4.dn_alert;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 
    open curDnAlert;
    REPEAT
        FETCH curDnAlert into tableId , alertType;
        if not done THEN
            if alertType='出围栏'  THEN
                set alertTypeId = 5;
            elseif  alertType='震动' THEN
                set alertTypeId = 3;
            elseif  alertType='盗警' THEN
                set alertTypeId = 2;
            elseif  alertType='剪线' THEN
                set alertTypeId = 13;
            elseif  alertType='低电压' THEN
                set alertTypeId = 14;   
            end if;
            update webgps4.dn_alert set alertId = alertTypeId where id = tableId;
        END if;
    UNTIL done END REPEAT;
    CLOSE curDnAlert;  -- 关闭游标
END;

3. @ 用户变量

2.比较运算符
>            大于 1>2 False
<            小于 2<1 False
<=           小于等于 2<=2 True
>=           大于等于 3>=2 True
BETWEEN      在两值之间 5 BETWEEN 1 AND 10 True
NOT BETWEEN 不在两值之间 5 NOT BETWEEN 1 AND 10 False
IN           在集合中 5 IN (1,2,3,4) False
NOT IN       不在集合中 5 NOT IN (1,2,3,4) True
=             等于 2=3 False
<>, !=       不等于 2<>3 False
<=>          严格比较两个NULL值是否相等 NULL<=>NULL True
LIKE          简单模式匹配 “Guy Harrison” LIKE “Guy%” True
REGEXP       正则式匹配 “Guy Harrison” REGEXP “[Gg]网赌平台哪个信誉好,reg” False
IS NULL      为空 0 IS NULL False
IS NOT NULL 不为空 0 IS NOT NULL True

mysql中任何与NULL做比较都会是NULL,常用来做判断是否是NULL。

注释:

:= 不只在 set 和 update 时赋值的作用,在 select
也是赋值的作用,常与@结合使用,比如编号

4.位运算符
|   或
&   与
<< 左移位
>> 右移位
~   非(单目运算,按位取反)

2. := 赋值的作用

三.删除存储过程
1.基本语法:
drop procedure sp_name//

当然我也可以采用IS NULL

(4)
如下列代码中所示,DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
出错是设置done为1,正常情况下为0,if not done
then则成立进入if中,当游标结束,done被设置为1,于是UNTIL done END
REPEAT; 使得循环结束。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图