• MySQL的存储过程,索引,视图操作


    对MySQL的操作网上有很多,这是我自己的练习随笔,适合初学者。/* 创建数据库test_db */

    /* 创建数据库test_db */
    CREATE DATABASE test_db;
    
    /* 使用test_db数据库 */
    USE test_db;
    
    /* 创建t_user表*/
    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
      `user_id` int(11) NOT NULL AUTO_INCREMENT,
      `user_name` varchar(255) NOT NULL,
      `user_password` varchar(255) NOT NULL,
      `phone` varchar(255) NOT NULL,
      PRIMARY KEY (`user_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=113418 DEFAULT CHARSET=utf8;
    
    /* 创建t_details表 */
    DROP TABLE IF EXISTS `t_details`;
    CREATE TABLE `t_details` (
      `details_id` bigint(8) NOT NULL AUTO_INCREMENT,
      `details_name` varchar(255) DEFAULT NULL,
      `details_phone` varchar(255) DEFAULT NULL,
      `details_gender` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`details_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    /* 删除存储过程 */
    DROP PROCEDURE t_proce;
    
    /* 创建存储过程 */
    CREATE PROCEDURE t_proce()
    begin                                                                 /*开始*/
     
    declare num001 , num002 int(11);                                /*定义num001和num002的数据类型为int*/
    declare sessionid VARCHAR(50);
     
    set num001 = 137 , num002 = 10002000;                            /*设置num001=137,num002=10000001*/
    SET sessionid = 'CD9A5B83DB39E152CBE7EE';
    while num002 > 10000000 do                                     /*num002大于10000000时一直添加*/
     
    insert into t_user(user_name,user_password,phone)
     
    values(concat("克隆人" , num001) ,sessionid,  concat(num001 , num002));        /*在t_user表中插入数据*/
     
    set num002 = num002-1;             /*设置num002=num002+1*/
     
    end while;                                                          /*循环2千次*/
     
    end;
    
    /* 调用存储过程 */
    CALL t_proce();
    
    /* 同步数据,把t_user表数据同步到t_details中 */
    insert into t_details(details_name,details_phone,details_gender) 
    select user_name,phone,'男' from t_user;
    
    /* 左连接查询数据 */
    SELECT * FROM t_user
    LEFT JOIN t_details ON t_details.details_phone = t_user.phone;
    
    /* 删除表中数据 */
    TRUNCATE TABLE t_user;
    TRUNCATE TABLE t_details;
    /* 查看索引 */
    SHOW INDEX FROM t_user;
    SHOW INDEX FROM t_details;
    /* 删除索引 */
    DROP INDEX phone ON t_user;
    DROP INDEX phone ON t_details;
    
    /* 新建存储过程,重新循环添加数据 */
    CREATE PROCEDURE t_proce1()
    begin                                                                 /*开始*/
     
    declare num001 VARCHAR(50);
    declare num002 int(11);                                
    declare sessionid VARCHAR(50);
     
    SET num001 = '13***';
    SET num002 = 1020000;                            
    SET sessionid = 'CD9A5B83DB39E152CBE7EE';
    while num002 > 1000000 do                                     /*num002一直大于0 所以无限循环添加*/
     
    insert into t_user(user_name,user_password,phone)
     
    values(concat("克隆人" , num002) ,sessionid,  concat(num001 , num002));        /*在t_user表中插入数据*/
     
    set num002 = num002-1;             /*设置num002=num002+1*/
     
    end while;                                                          /*当num<1000000时,不再执行插入操作循环结束*/
     
    end;
    
    /* 调用存储过程 */
    CALL t_proce1();
    
    /* 同步数据,把t_user表数据同步到t_details中 */
    insert into t_details(details_name,details_phone,details_gender) 
    select user_name,phone,'男' from t_user;
    
    /* 左连接查询数据 */
    SELECT * FROM t_user
    LEFT JOIN t_details ON t_details.details_phone = t_user.phone;
    
    /* 创建中间表 */
    DROP TABLE IF EXISTS `user_details_ext`;
    CREATE TABLE `user_details_ext` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `user_id` bigint(20) NOT NULL,
      `phone_crc_32` bigint(20) NOT NULL,
      `phone` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `phone_crc_32` (`phone_crc_32`) USING BTREE,
      KEY `user_id` (`user_id`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=270332 DEFAULT CHARSET=utf8mb4;
    
    
    /* 多表联合查询创建视图 */
    CREATE VIEW view_user_details
    AS
    SELECT t_user.*,t_details.details_gender 
    FROM t_user
    LEFT JOIN t_details ON t_details.details_phone = t_user.phone;
    
    /* 查看创建的视图  */
    SELECT * FROM view_user_details;
    
    /* 查看当前时间 */
        SELECT NOW();
    
    /*
     查看当前时间时发现与系统时间不一样
     执行下面的操作语句就好了
    */
    
    show variables like '%zone%';
    select @@time_zone;
    set global time_zone = '+8:00';
    set time_zone = '+8:00';
    /* 刷新,立即执行 */
    flush privileges;
    

      

  • 相关阅读:
    转Vtype扩展
    Can't connect to MySQL server on 'ip' (13)
    观察者+js 模式
    (转)ASP.NET架构分析
    sql得到时间
    Js+XML 操作 (转)
    js中的math对象
    property和attribute的区别
    CSS样式定义
    linux 开启 mount
  • 原文地址:https://www.cnblogs.com/qjc-hll-520/p/13712360.html
Copyright © 2020-2023  润新知