create database if not exists testDB default charset utf8 collate utf8_general_ci;
USE testDB;
CREATE TABLE IF NOT EXISTS `test`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `email` VARCHAR(40) NOT NULL, `mobile` BIGINT(11) NOT NULL, `submission_date` DATETIME, PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
DELIMITER $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义) CREATE PROCEDURE proc() BEGIN DECLARE num INT; SET num = 1; truncate table test; set autocommit=0; set unique_checks=0; WHILE num < 10 DO INSERT INTO `test` ( `id`, `name`, `email`, `mobile`, `submission_date` ) VALUES ( num, concat(num,'tester'), concat(num,'tester@qq.com'), 15000000000 + num, now() ); SET num = num + 1; END WHILE; set autocommit=1; set unique_checks=1; END$$
执行完成后,可以将语句的结束符号恢复为分号
delimiter;
默认情况下,存储过程和默认数据库相关联,如果想指定存储过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀。 在定义过程时,使用 DELIMITER $$ 命令将语句的结束符号从分号 ; 临时改为两个 $$,使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释。
call proc();
drop procedure proc;
在测试过程你可能会需要删除数据,可以使用truncate
TRUNCATE test;