zoukankan      html  css  js  c++  java
  • mysql生成随机测试数据

    一个demo:

     CREATE TABLE dept_InnoDB(
      deptno MEDIUMINT NOT NULL DEFAULT 0 ,
      dname VARCHAR(20) NOT NULL DEFAULT "" ,
      loc VARCHAR(13) NOT NULL DEFAULT ""
      )ENGINE = InnoDB DEFAULT CHARSET = utf8;

    创建2个function.

    CREATE DEFINER = `root`@`localhost` FUNCTION rand_string (n int)
     RETURNS varchar(255)
    BEGIN
    declare  chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    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;

    while do

    end while; 语法

    CREATE DEFINER = `root`@`localhost` FUNCTION `rand_loc`()
     RETURNS varchar(10)
    BEGIN
    declare return_str varchar(10) default 'Shanghai';
    declare n int default 0;
    set n=floor(rand()*10);
    case n
        when 0 then set return_str='Shanghai';
        WHEN 1 THEN SET return_str = 'Beijing';
      WHEN 2 THEN SET return_str = 'Shenzhen';
      WHEN 3 THEN SET return_str = 'Guangzhou';
      WHEN 4 THEN SET return_str = 'Tianjin';
      WHEN 5 THEN SET return_str = 'Chongqing';
      WHEN 6 THEN SET return_str = 'Chengdu';
      WHEN 7 THEN SET return_str = 'Wuhan';
      WHEN 8 THEN SET return_str = 'Changcha';
      WHEN 9 THEN SET return_str = 'Shenyang';
      ELSE SET return_str = 'Dalian';
     end CASE;
     
      return return_str;
    end;

    case x

         when 0 then set x='''

     .

    end case 语法

    一个存储过程:

    CREATE DEFINER = `root`@`localhost` PROCEDURE insert_dept(IN start int(10),IN max int(10))
    BEGIN
    declare i int default 0;
    set autocommit=0;
    REPEAT 
      set i=i+1;
      insert into dept_innodb values((start+i),rand_string(6),rand_loc());
    until i=max
    end repeat;
    commit;
    END;

    保存到文件中:

    select * from dept_innodb into outfile "C:/users/table1.csv"
    fields TERMINATED by ','
    lines TERMINATED by ' '
    ;

     InnoDB 事务模式与锁定

    在 InnoDB 事务处理模式中, the goal has been to combine the best properties of a multiversioning database to traditional two-phase locking. InnoDB 进行行级的锁定,并以与 Oracle 非锁定读取(non-locking)类似的方式读取数据。 InnoDB 中的锁定表的存储是如此(space-efficiently)而不再需要扩大锁定: 典型特色是一些用户可能锁定数据库中的任意行或任意行的子集,而不会引起 InnoDB 内存运行溢出。

    在 InnoDB 中,所有的用户操作均是以事务方式处理的。如果 MySQL 使用了自动提交(autocommit)方式,每个 SQL 语句将以一个单独的事务来处理。MySQL 通常是以自动提交方式建立一个服务连接的。

    如果使用 SET AUTOCOMMIT = 0 关闭自动提交模式,就认为用户总是以事务方式操作。如果发出一个 COMMIT 或 ROLLBACK 的 SQL 语句,它将停止当前的事务而重新开始新事务。两个语句将会释放所有在当前事务中设置的 InnoDB 锁定。COMMIT 意味着永久改变在当前事务中的更改并为其它用户可见。ROLLBACK 正好相反,它是取消当前事务的所有更改。

    如果以 AUTOCOMMIT = 1 建立一个连接,那么用户仍然可以通过以 BEGIN 开始和 COMMIT 或 ROLLBACK 为语句结束的方式来执行一个多语句的事务处理。

    php生成随机数据:http://www.haogongju.net/art/1414203

    http://www.jb51.net/article/19470.htm

  • 相关阅读:
    [Android-NDK编译] ndk 编译 c++ 兼容性问题汇总整理
    [云计算] 001.云计算简介
    eatwhatApp开发实战(十一)
    eatwhatApp开发实战(十)
    [Unity2d系列教程] 002.引用外部DLL
    Istio Sidecar
    Kubernetes Dashborad 搭建
    Istio 1.6架构及性能
    kubeadm 搭建kubernetes集群环境
    docker 安装
  • 原文地址:https://www.cnblogs.com/youxin/p/3568840.html
Copyright © 2011-2022 走看看