MySQL(变量 存储过程 触发器 函数)

变量

全局变量(内置变量):可以在多个会话中去访问他
-- 查看所有全局变量
show variables
-- 查看某个全局变量
select @@变量名
-- 修改全局变量
set 变量名=新值
-- mysql服务器的接收数据的编码
SET @@character_set_client=utf8; 设置数据库编码
-- mysql服务器输出数据的编码
set @@character_set_results=utf8;
-- 查看数据库编码
SELECT @@character_set_client;

会话变量:
	只存在于当前客户端与数据库服务器端的一次连接当中
	如果连接断开 那么会话变量全部丢失
-- 定义会话变量 
set @变量=-- 查看会话变量
select @变量

局部变量:
	在存储过程中使用的变量就叫局部变量 
	只要存储过程执行完毕 局部变量就丢失
-- 定义局部变量的语法
DECLARE i INT DEFAULT 1;  
-- 给变量设置值
set i=10;

定义一个变量,作为一个临时展示的字段
SELECT (@i:=@i+1) AS id,ename,job,sal 
	FROM emp,(SELECT @i:=0) AS init;
说明: SELECT @i:=0意思
    它的意思是为变量@i赋值(如:set @i=0;)
    在mysql中用户变量赋值有两种方式 一种是=另一种是:= 
    其中区别在于使用set赋值时两种方式都可以使用
    使用select赋值时只能使用:=

存储过程

概念

存储过程是数据库中的一个对象 
存储在服务端 用来封装多条SQL语句且带有逻辑性 可以实现一个功能
由于他在创建时 就已经对SQL进行了编译 所以执行效率高 
而且可以重复调用 类似与我们Java中的方法

语法

DELIMITER $$

CREATE

    PROCEDURE `数据库名`.`存储过程名`()
    
    BEGIN

    END$$

DELIMITER ;

注意:
	创建存储过程需要管理员分配权限 
补充:
	delimiter是mysql定义结束标记的 
	在mysql客户端中结束标记默认是分号;
	
	如果一次输入的语句较多 并且语句中间有分号 
	这时需要新指定一个特殊的结束符
	delimiter $$ 表示mysql用$$表示mysql语句结束
	过程结束后肯定会有一句delimiter 
	表示恢复成默认的

参数

in:输入参数
out:输出参数
inout:输入输出参数

DELIMITER $$ 
CREATE PROCEDURE `security`.`test2`(IN num INT,OUT res INT)
BEGIN
  SELECT * FROM sys_role WHERE id = num;
  SELECT COUNT(*) FROM sys_role INTO res;
END $$ 
DELIMITER ; 

CALL `security`.`test2`(1,@res);
SELECT @res;

调用存储过程 call

语法: CALL `security`.`test2`(1,@res);
查询结果: SELECT @res;

删除存储过程 drop

 语法: DROP PROCEDURE test1;

查看存储过程 show

-- 查看所有的存储过程状态
SHOW PROCEDURE STATUS; 
-- 查看创建存储过程的语句
SHOW CREATE PROCEDURE 存储过程名; 

判断的存储过程 if

DELIMITER $$
CREATE PROCEDURE week_procedure(IN num INT, OUT str VARCHAR(32))
    BEGIN
        IF num=1 THEN
           SET str='星期一';
        -- 注意elseif  连在一块
        ELSEIF num=2 THEN 
           SET str='星期二';
        ELSE
           SET str='输入有误';
         -- 注意要结束if  后面有分号   
        END IF;   
    END$$
DELIMITER ;

CALL week_procedure(1,@str);
SELECT @str; #星期一

循环的存储过程 while do

DELIMITER $$
CREATE
    PROCEDURE `security`
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值