mysql模擬大量數據

1,創建表

id name sex phone birthplace grade
唯一、自增 姓名 性別 11位手機號、唯一 籍貫 年級
create table student(
    id int(4) primary key not null auto_increment,
    name varchar(32) not null,
    sex varchar(2) not null,
    phone varchar(32) not null unique,
    brithplace varchar(32) not null,
    grade int(1) not null
);

2,創建函數

編寫生成電話號碼的函數:

DELIMITER $$ 
create function generate_phone()
returns varchar(11)
begin
    declare phone varchar(11) default "1";    
    declare i int default 0; 
    set phone = concat(phone, elt(ceiling((rand()*10))%4+1,"3","5","7","8"));    
    while i < 9
    do
       set phone = concat(phone, elt(ceiling((rand()*10)),"0","1","2","3","4","5","6","7","8","9"));
       set i = i + 1;
    end while; 
    return phone;
end ;$$
DELIMITER ;

隨機生成年級的函數:

DELIMITER $$ 
create function generate_grade()
returns int(1)
begin
    return ceiling((rand()*10))%9+1;
end $$
DELIMITER ;

隨機生成性別的函數:

DELIMITER $$ 
create function generate_sex()
returns varchar(2)
begin
    return elt(ceiling(rand()*2), "男","女");
end $$
DELIMITER ;

隨機生成出生地的函數:

DELIMITER $$ 
create function generate_brithplace()
returns varchar(32)
begin
    return  elt(ceiling(rand()*100)%34+1,"河北省","山西省","遼寧省","吉林省","黑龍省","江蘇省","浙江省","安徽省","福建省","江西省","山東省","河南省","湖北省","湖南省","廣東省","海南省","四川省","貴州省 ","雲南省","陝西省","甘肅省","青海省","臺灣省","北京市","上海市","重慶市","天津市","廣西","寧夏","西藏","新疆","內蒙古","香港","澳門");
end $$
DELIMITER ;

隨機生成男孩名字的函數:

DELIMITER $$ 
create function generate_boyname() returns varchar(2)
begin
    declare name varchar(2) default '';
    declare i int default 0;
    declare n int default 0;    
    set n = ceiling(rand()*2);    
    while i < n
    do
       set name = concat(name, elt(ceiling(rand()*1000)%200+1,"辰","逸","雨","澤","瑾","瑜","聖","傑","楷","瑞","浩","南","卡","思","旭","堯","俊","楠","天","磊","燁","偉","世","博","昊","哲","瀚","冠","明","輝","金","傲","越","材","霖","朋","健","柏","鴻","濤","懿","軒","鵬","煊","彬","益","弘","宸","苑","君","文","鑫","睿","淵","達","強","曉","嘯","風","樺","馳","松","德","振","豪","鶴","紹","鼎","寒","志","靖","琪","擎","宇","國","龍","厲","誠","翰","超","晟","棋","沙","歐","智","勁","祺","皓","新","泰","佑","致","韻","舟","瑋","倫","然","炫","星","野","雪","嘉","煜","城","昌","建","平","炎","峻","熙","洋","榮","展","遠","圖","翱","依","海","震","康","鋒","崇","杭","運","賢","元","盛","江","春","凱","勝","福","來","聚","原","才","邦","慶","生","月","陽","巖","浪","晉","玄","歡","恆","羽","恩","青","餘","波","修","永","潤","若","信","勳","琦","晨","杉","暢","凡","翎","承","淘","茂","石","鑑","尚","唯","仁","敬","玉","全","帆","影","雲","觀","雷","常","柯","倚","向","鎮","言","耀","耿","古","聞","名","東","悠","昆","寶","復","喬","柳","林","均"));
       set i = i + 1;
    end while;
    return name;
end ; $$
DELIMITER ;

隨機生成一個女孩的名字:

DELIMITER $$ 
create function generate_girlname() returns varchar(2)
begin
    declare name varchar(2) default '';
    declare i int default 0;
    declare n int default 0;    
    set n = ceiling(rand()*2);    
    while i < n
    do
       set name = concat(name, elt(ceiling(rand()*1000)%200+1,"靜","敏","燕","豔","麗","娟","莉","芳","萍","玲","娜","丹","潔","紅","穎","琳","霞","婷","慧","瑩","晶","華","倩","英","佳","梅","雪","蕾","琴","璐","偉","雲","蓉","青","薇","欣","瓊","寧","平","媛","虹","傑","婧","雯","茜","楠","洋","君","輝","菲","琦","妍","陽","波","俊","鑫","磊","軍","爽","蘭","晨","冰","瑤","瑾","巖","瑛","悅","羣","瑋","歡","瑜","蕊","宇","明","珊","榮","超","琪","玉","怡","文","嵐","楊","婕","旭","鳳","健","芬","芸","曉","萌","飛","露","菁","惠","宏","瑞","蓓","林","璇","珍","月","利","勤","清","帆","迪","微","斌","嬌","影","巍","朋","莎","彬","峯","昕","樂","星","新","燁","暉","卉","晴","曼","越","靖","維","曄","藝","睿","芹","淼","黎","暢","椒","鵬","春","彥","柳","夢","毅","妮","坤","翠","然","鈺","蔚","曦","茹","凌","揚","凡","美","彤","園","煒","捷","亮","葉","苗","菊","勇","銳","雨","力","翔","慶","方","琰","聰","瀟","威","甜","帥","進","琛","花","雅","立","姣","馨","珏","秀","亞","珂","思","哲","冉","驪","雙","婭","胡","培","斐","嘉","蓮","鶯","佩","劍"));
       set i = i + 1;
    end while;
    return name;
end ; $$
DELIMITER ;

根據性別隨機生成一個姓名:

DELIMITER $$ 
create function generate_name(sex varchar(2))
returns varchar(3)
begin
    declare firstname varchar(2) default '';
    declare lastname varchar(2) default '';    
    set firstname = elt(ceiling(rand()*1000)%200+1,"趙","錢","孫","李","周","吳","鄭","王","馮","陳","衛","蔣","沈","韓","楊","朱","秦","尤","許","何","呂","施","張","孔","曹","嚴","華","金","魏","陶","姜","戚","謝","鄒","喻","柏","水","竇","章","雲","蘇","潘","葛","範","彭","郎","魯","韋","昌","馬","苗","鳳","花","方","俞","任","袁","柳","鮑","史","唐","費","廉","岑","薛","雷","賀","倪","湯","滕","殷","羅","畢","郝","鄔","安","常","樂","於","時","傅","皮","卞","齊","康","伍","餘","元","卜","顧","孟","平","黃","和","穆","蕭","尹","姚","邵","湛","汪","祁","毛","禹","狄","米","貝","明","臧","計","伏","成","戴","談","宋","茅","龐","熊","紀","舒","屈","項","祝","董","梁","杜","阮","藍","席","季","麻","強","賈","路","婁","危","江","童","顏","郭","梅","盛","林","刁","鍾","徐","邱","駱","高","夏","蔡","田","樊","胡","凌","霍","虞","萬","支","柯","昝","管","盧","莫","經","房","裘","繆","幹","解","應","宗","丁","宣","賁","鄧","鬱","單","杭","洪","包","諸","左","石","崔","吉","鈕","龔","程","嵇","邢","滑","裴","陸","榮","翁","荀","羊","於","惠");
    
    if ( sex = "男" ) then
        set lastname = generate_boyname();    
    else
        set lastname = generate_girlname();   
    end if;
    
    return concat(firstname, lastname);
end $$
DELIMITER ;

3,編寫過程:

DELIMITER @
create procedure proc_data (in total int)
begin 
declare i int default 1;
declare phone varchar(32);
declare sex varchar(2);
declare continue handler for 1062 
begin
    select concat(i) "count", concat("phone ", phone, " alrady exist") "info"; 
    set i = i - 1 ;
end; 
while i <= total do
    set phone = generate_phone();
    set sex = generate_sex();
    insert into student(name, sex, phone, brithplace, grade) values(generate_name(sex), sex, phone, generate_brithplace(), generategrade());
    set i = i + 1 ;
end while;
end;@
DELIMITER ;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章