MySQL循环插入100w条数据
CREATE DATABASE `数据库名称`
删库-删表sql语句-需要删除的时候使用该语句
-- 删除库 DROP DATABASE `数据库名称` -- 删除表 DROP TABLE `表名称` -- 删除函数 DROP FUNCTION 函数名称 -- 删除视图 DROP VIEW 视图名称 -- 删除存储过程 DROP PROCEDURE 存储过程名称
简单创建一张表
-- 创建数据库 CREATE DATABASE `demo` -- 切换到指定的数据库 USE demo -- 创建一张 users 表 CREATE TABLE `users`( -- 创建字段id 超大int类型(long)设置自增,不允许为空 `id` BIGINT(64) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) DEFAULT COMMENT 用户昵称, `pwd` VARCHAR(64) DEFAULT COMMENT 用户密码, PRIMARY KEY (`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT=用户表;
编写循环体
-- 标志,写函数前一定要写,很重要 DELIMITER $$ -- 创建一个function函数叫 mock_data() CREATE FUNCTION mock_data() RETURNS INT BEGIN DECLARE num INT DEFAULT 1000000; DECLARE i INT DEFAULT 0; WHILE i<num DO -- 循环体 INSERT INTO `users`(`name`,`pwd`)VALUES(CONCAT(用户,i),CONCAT(RAND()*(RAND(999999999-100000000)+1000000000))); -- i每次+1操作 SET i = i+1; END WHILE; RETURN i; -- 结束需要和标志定义的一样,这个很重要 END $$ SELECT mock_data();
细节注意:
如果使用的是 navicat 11版本的工具是没有 delimiter 关键字的,当然navicat其他版本我就不清楚了。需要用SQLyog工具,当前我用到SQLyog版本为8.32,SQLyog就可以。并且MySQL的版本是5.7.35,其他版本慎用
MySQL版本
SQLyog
Navicat
问题注意:如果出现 FUNCTION mock_data already exists 错误
解决方法1:
-- 使用sql语句执行删除函数操作 DROP FUNCTION mock_data;
解决方法2:
使用 SQLyog 工具 Functions文件,选择你需要删除的函数
使用 Navicat 工具 找到函数,选择你需要删除的函数即可
最后看一下结果
索引创建
-- id_表名_字段名 -- CREATE FULLTEXT INDEX 索引名 ON 表(字段) == 创建全文索引1 -- ALTER TABLE 表 ADD FULLTEXT INDEX 索引名(字段) == 创建全文索引2 -- CREATE INDEX 索引名 ON 表(字段) == 在某个字段上创建索引 CREATE INDEX users_name ON users(`name`) CREATE FULLTEXT INDEX users_all ON users(`name`,`pwd`) ALTER TABLE users ADD FULLTEXT INDEX fulltext_users(`name`,`pwd`)
下一篇:
手把手教你配置MySQL数据库(图,文)