MySQL创建存储过程_批量添加数据

   2023-05-07 12:01:04 6610
核心提示:1、概述MySQL5.0版本开始支持存储过程。存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用得一种数

MySQL创建存储过程_批量添加数据

1、概述

MySQL5.0版本开始支持存储过程。

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用得一种数据库对象。

存储过程是为了完成特定功能得SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程得名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面得代码封装与重用。

1.1 优点

存储过程可封装,并隐藏复杂得商业逻辑。

存储过程可以回传值,并可以接受参数。

存储过程无法使用 SELECt 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。

存储过程可以用在数据检验,强制实行商业逻辑等。

1.2 缺点

存储过程,往往定制化于特定得数据库上,因为支持得编程语言不同。

当切换到其他厂商得数据库系统时,需要重写原有得存储过程。

存储过程得性能调校与撰写,受限于各种数据库系统。

2、存储过程得创建和调用

存储过程就是具有名字得一段代码,用来完成一个特定得功能。

创建得存储过程保存在数据库得数据字典中。

2.1 创建存储过程

CREATE [DEFINER = { user | CURRENT_USER }]  PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body proc_parameter: [ IN | OUT | INOUT ] param_name type characteristic: COMMENT 'string' | LANGUAGE SQL | [NOT] DETERMINISTIC | { ConTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } routine_body:   Valid SQL routine statement [begin_label:] BEGIN   [statement_list]     …… END [end_label]

2.2 MYSQL 存储过程中得关键语法

2.2.1 声明语句结束符,可以自定义:

DELIMITER $

DELIMITER //

2.2.2 声明存储过程:

CREATE PROCEDURE demo_in_parameter(IN p_in int)

2.2.3 存储过程开始和结束符号:

BEGIN .... END

2.2.4 变量赋值:

SET 等p_in=1

2.2.5 变量定义:

DECLARE l_int int unsigned default 4000000;

2.2.6 创建mysql存储过程、存储函数:

create procedure 存储过程名(参数)

2.2.7 存储过程体:

create function 存储函数名(参数)

3、创建存储过程实例

3.1 创建表

mysql> SET NAMES utf8mb4;

Query OK, 0 rows affected (0.00 sec)

mysql> SET FOREIGN_KEY_CHECKS = 0;

Query OK, 0 rows affected (0.00 sec)

mysql>

mysql> CREATE TABLE `one_data` (

-> `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键发布者会员账号',

-> `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '名称',

-> `sort_number` int(11) NULL DEFAULT NULL COMMENT '序号',

-> `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',

-> PRIMARY KEY (`id`) USING BTREE

-> ) ENGINE = InnoDB AUTO_INCREMENT = 472 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci COMMENT = '创建事件每秒添加一条数据' ROW_FORMAT = Dynamic;

Query OK, 0 rows affected (0.02 sec)

mysql>

mysql> SET FOREIGN_KEY_CHECKS = 1;

Query OK, 0 rows affected (0.00 sec)

3.2 创建存储过程(批量插入数据)

-- 创建存储过程delimiter

-- 这里得delimiter后面一定要加一个空格不然会报错

mysql> delimiter $

mysql> create procedure doinsert ()

-> begin

-> declare i int;

-> set i = 0;

-> while(i<=200) do

-> INSERT INTO `one_data`( `name`, `sort_number`, `create_time`) VALUES (CONCAt('名称',i), i, NOW());

-> set i = i+1;

-> end while;end;

-> $

Query OK, 0 rows affected (0.01 sec)

--删除存储过程

mysql> drop procedure doinsert;

Query OK, 0 rows affected (0.01 sec)

mysql>

3.3 调用存储过程

-- 调用存储过程

mysql> call doinsert();$

Query OK, 1 row affected (0.44 sec)

mysql>

3.4 查看批量插入得数据

mysql> SELECT * FROM `one_data`;

 
举报收藏 0打赏 0评论 0
 
更多>同类百科头条
推荐图文
推荐百科头条
最新发布
点击排行
推荐产品
网站首页  |  公司简介  |  意见建议  |  法律申明  |  隐私政策  |  广告投放  |  如何免费信息发布?  |  如何开通福步贸易网VIP?  |  VIP会员能享受到什么服务?  |  怎样让客户第一时间找到您的商铺?  |  如何推荐产品到自己商铺的首页?  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备15082249号-2