【mysql 存储过程】数据库从菜鸟走向大神系列3
来源:互联网 发布:修车软件下载 编辑:程序博客网 时间:2024/06/07 05:03
1、创建数据库
create database cgjr
2. 建表
我们新建一张学生表和教师表如下:
CREATE TABLE student( id INT NOT NULL AUTO_INCREMENT, first_name VARCHAR(10) NOT NULL, last_name VARCHAR(10) NOT NULL, sex VARCHAR(5) NOT NULL, score INT NOT NULL, PRIMARY KEY (`id`));CREATE TABLE teacher( id INT NOT NULL AUTO_INCREMENT, first_name VARCHAR(10) NOT NULL, last_name VARCHAR(10) NOT NULL, sex VARCHAR(5) NOT NULL, PRIMARY KEY (`id`));
3. 创建存储过程
这里按照1000的批次来进行插入,提升整体执行效率。另外使用了floor、substring和RAND等函数来协助生成随机数据。
SQL函数不了解可以看 mysql官方文档
/**增加学生数据的存储过程-- **/DROP PROCEDURE IF EXISTS add_student; DELIMITER // create PROCEDURE add_student(in num INT) BEGIN DECLARE rowid INT DEFAULT 0; DECLARE firstname CHAR(1); DECLARE name1 CHAR(1); DECLARE name2 CHAR(1); DECLARE lastname VARCHAR(3) DEFAULT ''; DECLARE sex CHAR(1); DECLARE score CHAR(2); SET @exedata = ""; WHILE rowid < num DO SET firstname = SUBSTRING('赵钱孙李周吴郑王林杨柳刘孙陈江阮侯邹高彭徐',FLOOR(1+21*RAND()),1); SET name1 = SUBSTRING('一二三四五六七八九十甲乙丙丁静景京晶名明铭敏闵民军君俊骏天田甜兲恬益依成城诚立莉力黎励',floor(1+43*RAND()),1); SET name2 = SUBSTRING('一二三四五六七八九十甲乙丙丁静景京晶名明铭敏闵民军君俊骏天田甜兲恬益依成城诚立莉力黎励',floor(1+43*RAND()),1); SET sex=SUBSTRING('男女',floor(1+2*RAND()),1); SET score= FLOOR(40 + (RAND() *60)); SET rowid = rowid + 1; IF ROUND(RAND())=0 THEN SET lastname =name1; END IF; IF ROUND(RAND())=1 THEN SET lastname = CONCAT(name1,name2); END IF; IF length(@exedata)>0 THEN SET @exedata = CONCAT(@exedata,','); END IF; SET @exedata=concat(@exedata,"('",firstname,"','",lastname,"','",sex,"','",score,"')"); IF rowid%1000=0 THEN SET @exesql =concat("insert into student(first_name,last_name,sex,score) values ", @exedata); prepare stmt from @exesql; execute stmt; DEALLOCATE prepare stmt; SET @exedata = ""; END IF; END WHILE; IF length(@exedata)>0 THEN SET @exesql =concat("insert into student(first_name,last_name,sex,score) values ", @exedata); prepare stmt from @exesql; execute stmt; DEALLOCATE prepare stmt; END IF; END //DELIMITER ;/**增加教师数据的存储过程-- **/DROP PROCEDURE IF EXISTS add_teacher; DELIMITER // create PROCEDURE add_teacher(in num INT) BEGIN DECLARE rowid INT DEFAULT 0; DECLARE firstname CHAR(1); DECLARE name1 CHAR(1); DECLARE name2 CHAR(1); DECLARE lastname VARCHAR(3) DEFAULT ''; DECLARE sex CHAR(1); SET @exedata = ""; WHILE rowid < num DO SET firstname = SUBSTRING('赵钱孙李周吴郑王林杨柳刘孙陈江阮侯邹高彭徐',FLOOR(1+21*RAND()),1); SET name1 = SUBSTRING('一二三四五六七八九十甲乙丙丁静景京晶名明铭敏闵民军君俊骏天田甜兲恬益依成城诚立莉力黎励',floor(1+43*RAND()),1); SET name2 = SUBSTRING('一二三四五六七八九十甲乙丙丁静景京晶名明铭敏闵民军君俊骏天田甜兲恬益依成城诚立莉力黎励',floor(1+43*RAND()),1); SET sex=SUBSTRING('男女',floor(1+2*RAND()),1); SET rowid = rowid + 1; IF ROUND(RAND())=0 THEN SET lastname =name1; END IF; IF ROUND(RAND())=1 THEN SET lastname = CONCAT(name1,name2); END IF; IF length(@exedata)>0 THEN SET @exedata = CONCAT(@exedata,','); END IF; SET @exedata=concat(@exedata,"('",firstname,"','",lastname,"','",sex,"')"); IF rowid%1000=0 THEN SET @exesql =concat("insert into teacher(first_name,last_name,sex) values ", @exedata); prepare stmt from @exesql; execute stmt; DEALLOCATE prepare stmt; SET @exedata = ""; END IF; END WHILE; IF length(@exedata)>0 THEN SET @exesql =concat("insert into teacher(first_name,last_name,sex) values ", @exedata); prepare stmt from @exesql; execute stmt; DEALLOCATE prepare stmt; END IF; END //DELIMITER ;
4、调用存储过程
call add_student(3)call add_teacher(10)
5、结果
6、创建事件定时跑存储过程
create event test_event_add_student on schedule every 30 second do call add_student(3);
7、开启事件
mysql> show variables like 'event_scheduler';+-----------------+-------+| Variable_name | Value |+-----------------+-------+| event_scheduler | OFF |+-----------------+-------+1 row in setmysql> set global event_scheduler = on;Query OK, 0 rows affectedmysql>
阅读全文
1 0
- 【mysql 存储过程】数据库从菜鸟走向大神系列3
- 【mysql 存储过程】数据库从菜鸟走向大神系列3
- 【mysql 存储过程】数据库从菜鸟走向大神系列1
- 【mysql 存储过程】数据库从菜鸟走向大神系列2
- MySQL---数据库从入门走向大神系列(五)-存储过程
- MySQL---数据库从入门走向大神系列(八)-在java中执行MySQL的存储过程
- MySQL---数据库从入门走向大神系列(一)-基础入门
- MySQL---数据库从入门走向大神系列--基础入门
- MySQL---数据库从入门走向大神系列(三)-修改数据库编码/DOS窗口编码
- MySQL---数据库从入门走向大神系列(七)-Java访问数据库配置及简单使用方法execute
- MySQL---数据库从入门走向大神系列(三)-修改数据库编码/DOS窗口编码
- MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查
- MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系
- MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
- MySQL---数据库从入门走向大神系列(十二)-构建MVC项目
- MySQL---数据库从入门走向大神系列(十三)-BasicDataSource创建DataSource(DBCP连接池配置)
- MySQL---数据库从入门走向大神系列(十四)-ComboPooledDataSource(C3P0连接池配置)
- MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
- 欧拉回路的判断
- 自然语言处理-nltk学习(一)
- Linux tomcat 部署
- PHP在文章无缩略图时抓取单张或者多张文章内容图片!
- 十年一觉程设梦[完整版]
- 【mysql 存储过程】数据库从菜鸟走向大神系列3
- nand flash 使用
- Android之调用第三方API导航(高德,百度,google)
- python操作docx
- Mysql User表权限字段说明全介绍
- 复选框选中判断的兼容性处理
- 【STM32F103攻城笔记】内部晶振HSI倍频设置系统时钟
- github添加公钥,并使用SSH
- linux 搭建 kafka集群