博客
关于我
mysql存储过程批量建表
阅读量:796 次
发布时间: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/

    你可能感兴趣的文章
    MySQL架构与SQL的执行流程_2
    查看>>
    MySQL架构介绍
    查看>>
    MySQL架构优化
    查看>>
    MySQL查看数据库相关信息
    查看>>
    MySQL查看表结构和表中数据
    查看>>
    MySQL查询优化:LIMIT 1避免全表扫描
    查看>>
    MySQL查询优化之索引
    查看>>
    mysql查询储存过程,函数,触发过程
    查看>>
    mysql查询总成绩的前3名学生信息
    查看>>
    MySQL查询报错ERROR:No query specified
    查看>>
    MySQL查询数据库所有表名及其注释
    查看>>
    MySQL查询数据表中数据记录(包括多表查询)
    查看>>
    mysql查询语句能否让一个字段不显示出来_天天写order by,你知道Mysql底层执行原理吗?
    查看>>
    MySQL死锁套路:一次诡异的批量插入死锁问题分析
    查看>>
    Mysql死锁问题Deadlock found when trying to get lock;try restarting transaction
    查看>>
    mysql每个数据库的最大连接数_MySQL数据库最大连接数
    查看>>
    Mysql流程控制结构,if函数、case结构、if结构、循环结构
    查看>>
    mysql添加用户
    查看>>
    MySQL添加用户、删除用户与授权
    查看>>
    Mysql添加用户并授予只能查询权限
    查看>>