MYSQL常见概念四: 存储过程

定义:  利用纯sql集实现的"函数",外部程序直接调用该“函数”就可实现复杂的操作

特点: 1. 主动触发,这点与触发器不同,触发器是监听insert,update,delete操作后被触发进行的(被动)

           2. 功能强大,具有函数的普遍功能,能实现复杂逻辑

           3. 效率高,可被直接调用,无需分析优化编译

优点:   1.  简单调用即可实现复杂操作,即节省网络开销,又方便了代码逻辑

              2. 运行效率高

缺点:     难维护,不好移植,可拓展性差

适用场景:  来自知乎

存储过程例子: 

   先创建一张users表

DROP TABLE IF EXISTS users ;
CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `pass` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '2018-01-01 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

创建存储过程(以下语句可优化,哈哈哈,勿吐槽)

DROP PROCEDURE IF EXISTS procedure_insert_users;     -- 删除已经存在的存储过程
delimiter $$                                         -- 定义将;;设置为存储过程结尾符
create procedure procedure_insert_users(in num int)  -- 创建存储过程
begin
    declare i int default 0;                         -- 定义变量 i
    repeat                                           -- 循环 
        set i = i +1;
           insert into users(name,mobile,pass) values(CONCAT('test',i),13020304320+i,i);
        until i = num                                -- 循环终止条件
    end repeat;                                      --  结束循环
    commit;
end $$                                               -- 结束存储过程
delimiter ;

调用:

SET @mynum = 100000;                                 -- 设置个变量
CALL procedure_insert_users(@mynum);                 -- 调用存储过程


等以后用的更深入了再补充详细见解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值