全部版块 我的主页
论坛 休闲区 十二区 灌水吧
350 0
2020-03-16

  ->构建一个海量表   
           创建表EMP雇员
      mysql>CREATE TABLE emp
            (empno  MEDIUMINT UNSIGNED  NOT NULL DEFAULT 0, /*编号*/
            ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/
            job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/
            mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上级编号*/
            hiredate DATE NOT NULL,/*入职时间*/
            sal DECIMAL(7,2)  NOT NULL,/*薪水*/
            comm DECIMAL(7,2) NOT NULL,/*红利*/
            deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/
            )ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

      mysql>delimiter $$

   ->创建一个函数
      mysql>create function rand_string(n INT)
            returns varchar(255) #该函数会返回一个字符串
            begin
            #定义了一个变量 chars_str,类型 varchar(100)
            #默认给 chars_str 初始值  'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ'
            declare chars_str varchar(100)default
             'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
            declare return_str varchar(255)default '';
            declare i int default 0;
            while i < n do
              set return_str=concat(return_str,substring(chars_str,floor(1+rand()*52),1));
              set i = i + 1;
              end while;
             return return_str;
             end $$

    ->自定了一个函数,返回一个随机的部门号    (生成表的供应编号)
       mysql>create function rand_num( )
             returns int(5)
             begin
             declare i int default 0;
             set i = floor(10+rand()*500);
             return i;
             end $$

    ->编写的函数
       mysql>create procedure insert_emp(in start int(10),in max_num int(10))
             begin
             declare i int default 0;
             #set autocommit =0 把autocommit设置成0
             #autocommit = 0 含义: 不要自动提交
             set autocommit = 0;  
             repeat
             set i = i + 1;
             insert into emp values ((start+i),rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());
              until i = max_num
             end repeat;
              commit;
             end $$
      mysql>call insert_emp(100001,4000000);
      mysql>select count(*) from emp;  //查看记录

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群