代码拉取完成,页面将自动刷新
-- Author: Artman Tao (www.gettoweb.net)
-- Date: 2019.06.30
DROP DATABASE IF EXISTS `faker`;
CREATE DATABASE IF NOT EXISTS `faker` DEFAULT CHARSET utf8mb4;
USE `faker`;
SET NAMES utf8; -- 请根据您的编辑器字符集编码进行调整
CREATE TABLE `male_first_name`(
`id` INT UNSIGNED AUTO_INCREMENT,
`first_name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`first_name`)
);
CREATE TABLE `female_first_name`(
`id` INT UNSIGNED AUTO_INCREMENT,
`first_name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`first_name`)
);
INSERT INTO `male_first_name`(`first_name`)
VALUES
('绍齐'),('博文'),('梓晨'),('胤祥'),('瑞霖'),('明哲'),('天翊'),('凯瑞'),('健雄'),('耀杰'),('潇然'),
('子涵'), ('钰轩'),('智辉'),('致远'),('俊驰'),('烨磊'),('晟睿'),('文昊'),('修洁'),('黎昕'),('远航'),
('旭尧'),('鸿涛'),('伟祺'),('荣轩'),('越泽'),('浩宇'),('瑾瑜'),('皓轩'),('擎苍'),('擎宇'),('志泽'),
('子轩'),('睿渊'),('雨泽'),('楷瑞'),('建辉'),('晋鹏'),('天磊'),('绍辉'),('泽洋'),('鑫磊'),('鹏煊'),
('昊强'),('伟宸'),('博超'),('君浩'),('子骞'),('鹏涛'),('炎彬'),('鹤轩'),('越彬'),('风华'),('靖琪'),
('明辉'),('伟诚'),('明轩'),('健柏'),('修杰'),('弘文'),('嘉懿'),('煜城'),('懿轩'),('烨伟'),('苑博'),
('伟泽'),('熠彤'),('博涛'),('烨华'),('煜祺'),('智宸'),('正豪'),('昊然'),('明杰'),('立诚'),('立轩'),
('立辉'),('峻熙'),('鸿煊'),('烨霖'),('哲瀚'),('鑫鹏'),('昊天'),('思聪'),('展鹏'),('笑愚'),('志强'),
('炫明'),('雪松'),('思源'),('智渊'),('思淼'),('晓啸'),('天宇'),('浩然'),('文轩'),('鹭洋'),('振家'),
('乐驹'),('晓博'),('文博'),('昊焱'),('立果'),('金鑫'),('锦程'),('嘉熙'),('鹏飞'),('子默'),('思远'),
('浩轩'),('语堂'),('聪健'),('明'),('文'),('果'),('思'),('鹏'),('驰'),('涛'),('琪'),('浩'),('航'),
('彬')
;
INSERT INTO `female_first_name`(`first_name`)
VALUES
('雨秋'),('云霞'),('子怡'),('紫衣'),('美琼'),('雯雯'),('丝雨'),('思雨'),('梦秋'),('美美'),('小秋'),
('晓珺'),('佩瑶'),('小柔'),('晓月'),('春晓'),('冬梅'),('蓓蓓'),('蕾蕾'),('瑶佳'),('嘉美'),('璐璐'),
('瑶瑶'),('美芝'),('美智'),('如心'),('季柔'),('恒佳'),('丽丽'),('明娟'),('红莓'),('兰兰'),('爱秋'),
('招娣'),('敏霞'),('小霞'),('小梅'),('小红'),('琪琪'),('美琪'),('美瑶'),('琚瑶'),('芳芳'),('晨晨'),
('小可'),('可欣'),('蕊蕊'),('悦悦'),('冬雨'),('倩雯'),('静雯'),('静静'),('丹丹'),('美静'),('静怡'),
('可怡'),('乐乐'),('甜甜'),('航佳'),('柔儿'),('雅瑜'),('知秋'),('小夏'),('小美'),('小媚'),('珍珍'),
('玉秀'),('秀梅'),('秀秀'),('莎莎'),('丽莎'),('美'),('梅'),('秀'),('柔'),('娟'),('曦'),('红'),('英'),
('雯'),('倩')
;
CREATE TABLE `last_name`(
`id` INT UNSIGNED AUTO_INCREMENT,
`last_name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`last_name`)
);
INSERT INTO `last_name`(`last_name`)
VALUES
('王'),('李'),('张'),('刘'),('陈'),('杨'),('黄'),('吴'),('赵'),('周'),('徐'),('孙'),('马'),('朱'),
('胡'),('林'),('郭'),('何'),('高'),('罗'),('郑'),('梁'),('谢'),('宋'),('唐'),('许'),('邓'),('冯'),
('韩'),('曹'),('曾'),('彭'),('萧'),('蔡'),('潘'),('田'),('董'),('袁'),('于'),('余'),('叶'),('蒋'),
('杜'),('苏'),('魏'),('程'),('吕'),('丁'),('沈'),('任'),('姚'),('卢'),('傅'),('钟'),('姜'),('崔'),
('谭'),('廖'),('范'),('汪'),('陆'),('金'),('石'),('戴'),('贾'),('韦'),('夏'),('邱'),('方'),('侯'),
('邹'),('熊'),('孟'),('秦'),('白'),('江'),('阎'),('薛'),('尹'),('段'),('雷'),('黎'),('史'),('龙'),
('陶'),('贺'),('顾'),('毛'),('郝'),('龚'),('邵'),('万'),('钱'),('严'),('赖'),('覃'),('洪'),('武'),
('莫'),('孔')
;
CREATE TABLE `city`(
`id` INT UNSIGNED AUTO_INCREMENT,
`city` VARCHAR(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`city`)
);
INSERT INTO `city`(`city`)
VALUES
('北京市'),
('上海市'),
('天津市'),
('重庆市'),
('黑龙江省哈尔滨市'),
('吉林省长春市'),
('辽宁省沈阳市'),
('内蒙古呼和浩特市'),
('河北省石家庄市'),
('新疆乌鲁木齐市'),
('甘肃省兰州市'),
('青海省西宁市'),
('陕西省西安市'),
('宁夏银川市'),
('河南省郑州市'),
('山东省济南市'),
('山西省太原市'),
('安徽省合肥市'),
('湖北省武汉市'),
('湖南省长沙市'),
('江苏省南京市'),
('四川省成都市'),
('贵州省贵阳市'),
('云南省昆明市'),
('广西南宁市'),
('西藏拉萨市'),
('浙江省杭州市'),
('江西省南昌市'),
('广东省广州市'),
('福建省'),
('台湾省台北市'),
('海南省海口市'),
('香港'),
('澳门')
;
CREATE TABLE department(
`id` INT UNSIGNED AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`name`)
);
INSERT INTO department(`name`)
VALUES
('市场部'),
('人事处'),
('销售部'),
('采购部'),
('设计部'),
('生产部'),
('物流部'),
('信息部'),
('后勤处'),
('规划部'),
('对外交流处'),
('财务处')
;
DELIMITER $$
DROP FUNCTION IF EXISTS idno;
CREATE FUNCTION idno_sp(gender CHAR(2), min_age INT, max_age INT) RETURNS CHAR(18)
BEGIN
DECLARE factor CHAR(17);
DECLARE partial_id CHAR(17);
DECLARE pc TINYINT;
DECLARE _sum INT;
DECLARE mod_result TINYINT;
DECLARE check_bit CHAR(1);
SELECT FLOOR(110000+RAND()*(650000-110000+1)) INTO @region;
SELECT past(min_age,max_age,'Y') INTO @birth_date;
SELECT FLOOR(0+RAND()*(6-0+1)) INTO @serial1;
IF gender='M' OR gender='m' OR gender='男' THEN
SELECT SUBSTRING('13579',FLOOR(1+RAND()*(5-1+1)),1) INTO @serial2;
ELSE
SELECT SUBSTRING('2468',FLOOR(1+RAND()*(4-1+1)),1) INTO @serial2;
END IF;
SET partial_id=CONCAT(@region,DATE_FORMAT(@birth_date,'%Y%m%d'),'0',@serial1,@serial2);
SET factor="79A584216379A5842";
SET pc=1;
SET _sum=0;
do_it: WHILE pc<=17 DO
SELECT SUBSTRING(partial_id,pc,1) INTO @ai;
SELECT SUBSTRING(factor,pc,1) INTO @wi;
IF @wi='A' THEN
SET @wi='10';
END IF;
SET _sum=_sum+cast(@ai AS INT)*CAST(@wi AS INT);
SET pc=pc+1;
END WHILE do_it;
SET mod_result=_sum%11;
CASE mod_result
WHEN 0 THEN SET check_bit=1;
WHEN 1 THEN SET check_bit=0;
WHEN 2 THEN SET check_bit='X';
WHEN 3 THEN SET check_bit=9;
WHEN 4 THEN SET check_bit=8;
WHEN 5 THEN SET check_bit=7;
WHEN 6 THEN SET check_bit=6;
WHEN 7 THEN SET check_bit=5;
WHEN 8 THEN SET check_bit=4;
WHEN 9 THEN SET check_bit=3;
WHEN 10 THEN SET check_bit=2;
END CASE;
RETURN CONCAT(partial_id,check_bit);
END
$$
DROP FUNCTION IF EXISTS idno_g;
CREATE FUNCTION idno_g(gender CHAR(2)) RETURNS CHAR(18)
BEGIN
RETURN idno_sp(gender,1,100);
END
$$
DROP FUNCTION IF EXISTS idno;
CREATE FUNCTION idno() RETURNS CHAR(18)
BEGIN
RETURN idno_sp(gender(),1,100);
END
$$
DROP FUNCTION IF EXISTS gender;
CREATE FUNCTION gender() RETURNS CHAR(10)
BEGIN
SELECT FLOOR(RAND()*10+1) INTO @factor;
IF @factor>5 THEN
RETURN '男';
ELSE
RETURN '女';
END IF;
END
$$
CREATE FUNCTION last_name() RETURNS VARCHAR(100)
BEGIN
SELECT MAX(`id`) INTO @max_id FROM last_name;
SELECT MIN(`id`) INTO @min_id FROM last_name;
get_name: LOOP
SELECT FLOOR(@min_id+RAND()*(@max_id-@min_id+1)) INTO @id;
SELECT COUNT(*) INTO @id_count FROM last_name WHERE id=@id;
IF @id_count!=1 THEN
ITERATE get_name;
END IF;
SELECT `last_name` INTO @the_last_name FROM last_name WHERE id=@id;
LEAVE get_name;
END LOOP get_name;
RETURN @the_last_name;
END
$$
CREATE FUNCTION first_name(gender CHAR(2)) RETURNS VARCHAR(100)
BEGIN
IF gender='M' OR gender='m' OR gender='男' THEN
SELECT MAX(`id`) INTO @max_id FROM male_first_name;
SELECT MIN(`id`) INTO @min_id FROM male_first_name;
get_name1: LOOP
SELECT FLOOR(@min_id+RAND()*(@max_id-@min_id+1)) INTO @id;
SELECT COUNT(*) INTO @id_count FROM male_first_name WHERE id=@id;
IF @id_count!=1 THEN
ITERATE get_name1;
END IF;
SELECT `first_name` INTO @the_first_name FROM male_first_name WHERE id=@id;
LEAVE get_name1;
END LOOP get_name1;
ELSE
SELECT MAX(`id`) INTO @max_id FROM female_first_name;
SELECT MIN(`id`) INTO @min_id FROM female_first_name;
get_name2: LOOP
SELECT FLOOR(@min_id+RAND()*(@max_id-@min_id+1)) INTO @id;
SELECT COUNT(*) INTO @id_count FROM female_first_name WHERE id=@id;
IF @id_count!=1 THEN
ITERATE get_name2;
END IF;
SELECT `first_name` INTO @the_first_name FROM female_first_name WHERE id=@id;
LEAVE get_name2;
END LOOP get_name2;
END IF;
RETURN @the_first_name;
END
$$
CREATE FUNCTION pname (gender CHAR(1)) RETURNS VARCHAR(200)
BEGIN
RETURN CONCAT(last_name(),first_name(gender));
END
$$
CREATE FUNCTION phone () RETURNS VARCHAR(50)
BEGIN
SELECT SUBSTRING('147A',FLOOR(RAND()*4+1),1) INTO @pos1;
IF @pos1='A' THEN
SET @pos1=10;
END IF;
SELECT SUBSTRING('010021022023',@pos1,3) INTO @region1;
SELECT FLOOR(200+RAND()*(1000-200)) INTO @region2;
SELECT FLOOR(RAND()*100000000-1) INTO @num;
SELECT FLOOR(RAND()*10) INTO @factor;
IF @factor>7 THEN
RETURN CONCAT(@region1,'-',@num);
ELSEIF @factor<=7 THEN
RETURN CONCAT('0',@region2,'-',@num);
END IF;
END
$$
CREATE FUNCTION mobile() RETURNS VARCHAR(50)
BEGIN
SELECT SUBSTRING('13579',FLOOR(RAND()*5+1),1) INTO @pos1;
SELECT SUBSTRING('0104071013',@pos1,2) INTO @pos2;
SELECT SUBSTRING('130133138180189',@pos2,3) INTO @prefix;
SELECT FLOOR(RAND()*100000000-1) INTO @num;
RETURN CONCAT(@prefix,' ',SUBSTRING(CAST(@num AS CHAR),1,4),' ',SUBSTRING(CAST(@num AS CHAR),5,4));
END
$$
CREATE FUNCTION email() RETURNS VARCHAR(100)
BEGIN
SELECT SUBSTRING('faucibusurabituarcudiamtinciduntvolutpatmassavelfeugiatconguemassaestibulumnequearcuaccumsanedtellussedluctusimperdietnibhhasellusvulputatevulputatemetusaviverra',FLOOR(RAND()*(150)+1),FLOOR(RAND()*(4+1)+9)) INTO @u_name;
SELECT SUBSTRING('faucibusurabituarcudiamtinciduntvolutpatmassavelfeugiatconguemassaestibulumnequearcuaccumsanedtellussedluctusimperdietnibhhasellusvulputatevulputatemetusaviverra',FLOOR(RAND()*(150)+1),FLOOR(RAND()*(4+1)+10)) INTO @s_name;
RETURN CONCAT(@u_name,'@',@s_name,'.com');
END
$$
CREATE FUNCTION `city`() RETURNS VARCHAR(100)
BEGIN
SELECT MAX(`id`) INTO @max_id FROM city;
SELECT MIN(`id`) INTO @min_id FROM city;
get_name: LOOP
SELECT FLOOR(@min_id+RAND()*(@max_id-@min_id+1)) INTO @id;
SELECT COUNT(*) INTO @id_count FROM city WHERE id=@id;
IF @id_count!=1 THEN
ITERATE get_name;
END IF;
SELECT `city` INTO @the_city FROM city WHERE id=@id;
LEAVE get_name;
END LOOP get_name;
RETURN @the_city;
END
$$
CREATE FUNCTION address() RETURNS VARCHAR(200)
BEGIN
SELECT SUBSTRING('路街',FLOOR(RAND()*2+1),1) INTO @street_suffix;
RETURN CONCAT(city(),first_name('M'),@street_suffix,FLOOR(RAND()*10000),'号');
END
$$
CREATE FUNCTION zip() RETURNS CHAR(6)
BEGIN
RETURN CAST(FLOOR(100000+RAND()*(800000-100000+1)) AS CHAR);
END
$$
CREATE FUNCTION qq() RETURNS VARCHAR(15)
BEGIN
RETURN CAST(FLOOR(RAND()*(1000000000-1000000)) as CHAR);
END
$$
CREATE FUNCTION wechat() RETURNS VARCHAR(50)
BEGIN
return mobile();
END
$$
CREATE FUNCTION future(_from INT, _to INT, what CHAR(1)) RETURNS DATE
BEGIN
DECLARE _tmp INT;
IF _from<=0 THEN
SET _from=1;
END IF;
IF _to<=0 THEN
SET _to=1;
END IF;
IF _from>_to THEN
SET _tmp=_from;
SET _from=_to;
SET _to=_tmp;
END IF;
SELECT FLOOR(_from+RAND()*(_to-_from+1)) INTO @rand;
IF what='y' or what='Y' THEN
RETURN DATE_ADD(NOW(), INTERVAL @rand YEAR);
ELSEIF what='m' or what='M' THEN
RETURN DATE_ADD(NOW(), INTERVAL @rand MONTH);
ELSEIF what='d' or what='D' THEN
RETURN DATE_ADD(NOW(), INTERVAL @rand DAY);
END IF;
END
$$
CREATE FUNCTION past(_from INT, _to INT, what CHAR(1)) RETURNS DATE
BEGIN
DECLARE _tmp INT;
IF _from<=0 THEN
SET _from=1;
END IF;
IF _to<=0 THEN
SET _to=1;
END IF;
IF _from>_to THEN
SET _tmp=_from;
SET _from=_to;
SET _to=_tmp;
END IF;
SELECT FLOOR(_from+RAND()*(_to-_from+1)) INTO @rand;
IF what='y' or what='Y' THEN
RETURN DATE_SUB(NOW(), INTERVAL @rand YEAR);
ELSEIF what='m' or what='M' THEN
RETURN DATE_SUB(NOW(), INTERVAL @rand MONTH);
ELSEIF what='d' or what='D' THEN
RETURN DATE_SUB(NOW(), INTERVAL @rand DAY);
END IF;
END
$$
CREATE FUNCTION date_between(_from DATE, _to DATE) RETURNS DATE
BEGIN
IF _from=_to THEN
SET _to=_to+1;
END IF;
IF _from<_to THEN
SELECT DATEDIFF(_from,_to) INTO @diff;
SET @diff=0-@diff;
RETURN DATE_ADD(_from, INTERVAL FLOOR(RAND()*@diff+1) DAY);
ELSE
SELECT DATEDIFF(_from,_to) INTO @diff;
RETURN DATE_ADD(_to, INTERVAL FLOOR(RAND()*@diff+1) DAY);
END IF;
END
$$
CREATE FUNCTION company() RETURNS VARCHAR(100)
BEGIN
RETURN CONCAT(first_name('M'),'有限公司');
END
$$
CREATE FUNCTION random_digit() RETURNS CHAR(1)
BEGIN
RETURN SUBSTRING('0123456789',FLOOR(1+RAND()*(10-1+1)),1);
END
$$
CREATE FUNCTION random_int_sp(_min INT, _max INT ) RETURNS INT
BEGIN
RETURN FLOOR(_min+RAND()*(_max-_min+1));
END
$$
CREATE FUNCTION random_money_sp(_min DECIMAL, _max DECIMAL) RETURNS DECIMAL(20,2)
BEGIN
SELECT _min+RAND()*(_max-_min+1) INTO @left;
RETURN CAST(@left AS DECIMAL(20,2));
END
$$
-- HELPERS
CREATE FUNCTION date_from_id_helper(id_no VARCHAR(30)) RETURNS DATE
BEGIN
IF LENGTH(id_no)!=18 THEN
SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=30001, MESSAGE_TEXT='身份证格式错误(位数错误)!';
END IF;
SELECT SUBSTRING(id_no,7,8) INTO @date_str;
SELECT STR_TO_DATE(@date_str,'%Y%m%d') INTO @birth_date;
IF DAYNAME(@birth_date) IS NULL THEN
SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=30001, MESSAGE_TEXT='身份证格式错误(日期错误)!';
END IF;
RETURN @birth_date;
END
$$
CREATE FUNCTION gender_from_id_helper(id_no VARCHAR(30)) RETURNS CHAR(2)
BEGIN
IF LENGTH(id_no)!=18 THEN
SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=30001, MESSAGE_TEXT='身份证格式错误(位数错误)!';
END IF;
SELECT SUBSTRING(id_no,17,1) INTO @flag;
IF @flag%2=0 THEN
RETURN '女';
ELSE
RETURN '男';
END IF;
END
$$
DELIMITER ;
CREATE TABLE functions(
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100) NOT NULL UNIQUE,
`retv` VARCHAR(100) NOT NULL,
`function` VARCHAR(1024) NOT NULL,
`usage` VARCHAR(1024) NOT NULL
);
INSERT INTO functions(`name`,`retv`,`function`,`usage`)
VALUES
('函数:idno_sp(gender CHAR(2), min_age INT UNSIGNED, max_age INT UNSIGNED)','返回值:可验证的中国身份证号','用于随机生成指定年龄段和性别的中国身份证号','参数--\ngender: 单个英文字符: “M”或“m”或“男”生成男性身份证号,其它生成女性身份证。\nmin-age: 最小年龄;\nmax-age: 最大年龄。'),
('函数:idno_g(gender CHAR(2))','返回值:可验证的中国身份证号','用于生成指定性别的100岁以内的中国身份证。','参数--\ngender: 单个英文字符: “M”或“m”或“男”生成男性身份证号,其它生成女性身份证。'),
('函数:idno()','返回值:可验证的中国身份证号','用于随机生成任何性别任何年龄的合法的身份证号','本函数无参数,直接调用 idno() 即可。'),
('函数:gender()','返回值:中文性别。','用于随机生成中文性别','本函数无参数,直接调用 gender() 即可。'),
('函数:first_name(gender CHAR(1))','返回值:中文名字。','用于随机生成中文名字。','参数 gender,单个英文字符: “M”或“m”或“男”生成男性名字,其它生成女性名字。'),
('函数:last_name()','返回值:中文姓氏。','用于随机获取中文姓氏。','本函数无参数,直接调用 last_name() 即可。'),
('函数:pname (gender CHAR(1))','返回值:中文姓名。','用于随机生成中文姓名。','参数 gender,单个英文字符: “M”或“m”或“男”生成男性姓名,其它生成女性姓名。'),
('函数:phone()','返回值:中国大陆格式电话号码。','用于随机生成电话号码。','本函数无参数,直接调用 phone() 即可。'),
('函数:mobile()','返回值:中国大陆格式手机号码。','用于生成手机号码。','本函数无参数,直接调用 mobile() 即可。'),
('函数:email()','返回值:电邮地址。','用于生成合法的电邮地址。','本函数无参数,直接调用 email() 即可。'),
('函数:city()','返回值:中国省市自治区直辖市首府城市。','用于随机获取中国省市自治区直辖市首府城市。','本函数无参数,直接调用 city() 即可。'),
('函数:address()','返回值:中国格式地址。','用于生成中国格式地址。','本函数无参数,直接调用 address() 即可。'),
('函数:zip()','返回值:邮政编码。','用于随机生成中国大陆格式的邮政编码。','本函数无参数,直接调用 zip() 即可。'),
('函数:qq()','返回值:QQ号。','用于随机生成 QQ 号。','本函数无参数,直接调用 qq() 即可。'),
('函数:wechat()','返回值:微信号(手机格式)','用于随机生成微信号。','本函数无参数,直接调用 wechat() 即可。'),
('函数:future(_from TINYINT, _to TINYINT, what CHAR(1))','返回值:未来某个日期。','用于生成未来某个日期。','参数--\n _from: 最小数目;\n_to:最大数目;\nwhat: “Y” 表示年,“M”表示月,“D”表示天。\n例如:future(3,10,"Y") 表示获取未来3到10年的任何一个日期。'),
('函数:past(_from TINYINT, _to TINYINT, what CHAR(1))','返回值:过去某个日期。','用于生成过去某个日期。','参数--\n _from: 最小数目;\n_to:最大数目;\nwhat: “Y” 表示年,“M”表示月,“D”表示天。\n例如:past(3,10,"Y") 表示获取3年前到10年的任何一个日期。'),
('函数:date_between(_from DATE, _to DATE)','返回值:两个日期之间的某个日期。','用于生成指定日期区间的某个日期。','参数--\n_from: 起始日期;\n_to: 终止日期。\n不要求起始日期要大于终止日期。'),
('函数:date_from_id_helper()','返回值:日期','用于从给定的身份证号中取出出生日期','参数:身份证号(非法身份证号会报错)'),
('函数:gender_from_id_helper()','返回值:中文性别','用于从给定的身份证号中取出性别','参数:身份证号(非法身份证号会报错)')
-- ('','','',''),
-- ('','','',''),
;
-- TEST
CREATE TABLE `staff`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`cid` CHAR(18) NOT NULL,
`name` VARCHAR(50) NOT NULL,
`gender` CHAR(2) NOT NULL,
`birth_date` DATE NOT NULL,
`hired_at` DATE NOT NULL,
`conttact_due_at` DATE NOT NULL,
`email` VARCHAR(100) NOT NULL,
`work_phone` VARCHAR(50) NOT NULL,
`mobile` VARCHAR(50),
`qq` VARCHAR(50),
`wechat` VARCHAR(50),
`address` VARCHAR(200),
`zip` CHAR(6),
PRIMARY KEY (`id`)
);
DELIMITER $$
CREATE PROCEDURE fill_fake_staff_data()
BEGIN
DECLARE _count INT;
SET _count=1000;
SELECT faker.gender() INTO @gender;
SELECT faker.idno_sp(@gender,18,55) INTO @idno;
-- DECLARE exit handler FOR SQLEXCEPTION, SQLWARNING
-- BEGIN
-- ROLLBACK;
-- RESIGNAL;
-- END;
SET autocommit=0;
START TRANSACTION;
WHILE _count>0 DO
INSERT INTO `staff` VALUES
(
NULL, -- id
@idno, -- cid
faker.pname(@gender), -- name
@gender, -- gender
faker.date_from_id_helper(@idno), -- birth_date
faker.past(3,10,'Y'), -- hired_date
faker.future(3,5,'Y'), -- contract_due_at
faker.email(), -- email
faker.phone(), -- work_phone
faker.mobile(), -- mobile
faker.qq(), -- qq
faker.wechat(), -- wechat
faker.address(), -- address
faker.zip() -- zip
);
SET _count=_count-1;
END WHILE;
COMMIT;
END
$$
DELIMITER ;
CALL fill_fake_staff_data();
SET NAMES GB2312; -- 如果不在 Windows 下,或您的 Windows 控制台使用了 UTF8 编码,请注释掉此行。
-- SELECT COUNT(*) FROM `staff`;
-- SELECT * FROM `staff` LIMIT 10;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。