博客
关于我
mysql存储过程批量建表
阅读量:798 次
发布时间:2023-02-12

本文共 1934 字,大约阅读时间需要 6 分钟。

使用MySQL存储过程创建多个数据库表

通过MySQL存储程序,可以自动化地创建多个数据库表。在本文中,我们将编写一个MySQL存储程序,该程序可以自动创建100张表。这将节省手动编写SQL语句的时间,提高效率。

存储程序代码解析

以下是存储程序的代码:

#mysqlDELIMITER $$CREATE PROCEDURE `createTables`() BEGIN    DECLARE i INT;    DECLARE table_name VARCHAR(20);    DECLARE table_pre VARCHAR(20);    DECLARE sql_text VARCHAR(2000);        SET i = 0;    SET table_name = '';    SET table_pre = 'user_convenient_';    SET sql_text = '';        WHILE i < 100 DO        IF i < 10 THEN            SET table_name = CONCAT(table_pre, '0', i);        ELSE            SET table_name = CONCAT(table_pre, i);        END IF;                SET sql_text = CONCAT('CREATE TABLE ', table_name,                              '(user_id bigint(20) NOT NULL DEFAULT 0 COMMENT \'用户ID\',                               operate_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT \'数据更新时间\',                               PRIMARY KEY (user_id)) ENGINE=INNODB DEFAULT CHARSET=utf8');            SELECT sql_text;        SET @sql_text = sql_text;        PREPARE stmt FROM @sql_text;        EXECUTE stmt;        DEALLOCATE PREPARE stmt;                SET i = i + 1;    END WHILE;END$$DELIMITER ;#drop PROCEDURE createTables;删除存储程序#call createTables();执行存储程序#show procedure status;列出存储程序状态#show create procedure createTables显示存储程序的具体内容

存储程序功能说明

  • 存储程序名称createTables
  • 变量声明
    • i:用于计数器,控制循环次数
    • table_name:存储当前要创建的表名
    • table_pre:表名前缀,用于生成表名
    • sql_text:存储生成的SQL语句
  • 循环结构
    • WHILE i < 100 DO:执行100次循环
    • IF i < 10 THEN ... ELSE ...:表名生成规则
      • i小于10时,表名格式为user_convenient_0i
      • 其他情况下,表名格式为user_convenient_i
  • SQL语句生成与执行
    • 生成创建表的SQL语句
    • 通过SELECT sql_text;显示SQL语句
    • 使用PREPAREEXECUTE执行SQL语句
    • 使用DEALLOCATE PREPARE stmt;释放准备好的语句
  • 如何使用存储程序

  • 登录MySQL
  • 执行存储程序
    #call createTables();
  • 验证存储程序
    #show procedure status;#show create procedure createTables;
  • 注意事项

  • 表名长度限制table_name的长度为20字符,确保表名不超过这个限制
  • 表结构固定:所有表的字段和结构保持一致
  • 数据库权限:确保有权限创建、删除表和执行存储程序
  • 通过上述存储程序,您可以快速创建100张表,适用于需要大量标准化数据模型的场景。如有任何问题或需要进一步的帮助,请随时联系我。

    转载地址:http://srbfk.baihongyu.com/

    你可能感兴趣的文章
    Nature | 电子学“超构器件”, 从零基础到精通,收藏这篇就够了!
    查看>>
    Nature和Science同时报道,新疆出土四千年前遗骸完成DNA测序,证实并非移民而是土著...
    查看>>
    Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论...
    查看>>
    Nat、端口映射、内网穿透有什么区别?
    查看>>
    Nat、端口映射、内网穿透有什么区别?
    查看>>
    nat打洞原理和实现
    查看>>
    NAT技术
    查看>>
    NAT模式/路由模式/全路由模式 (转)
    查看>>
    NAT模式下虚拟机centOs和主机ping不通解决方法
    查看>>
    NAT的两种模式SNAT和DNAT,到底有啥区别?
    查看>>
    NAT的全然分析及其UDP穿透的全然解决方式
    查看>>
    NAT类型与NAT模型详解
    查看>>
    NAT网络地址转换配置实战
    查看>>
    NAT网络地址转换配置详解
    查看>>
    navbar navbar-inverse 导航条设置颜色
    查看>>
    Navicat for MySQL 命令列 执行SQL语句 历史日志
    查看>>
    Navicat for MySQL 查看BLOB字段内容
    查看>>
    Navicat for MySQL笔记1
    查看>>
    Navicat for MySQL(Ubuntu)过期解决方法
    查看>>
    Navicat Premium 12 卸载和注册表的删除
    查看>>