博客
关于我
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返回的时间和实际数据存储的时间有误差(java+mysql)
    查看>>
    mysql还有哪些自带的函数呢?别到处找了,看这个就够了。
    查看>>
    Mysql进入数据库
    查看>>
    mysql进阶 with-as 性能调优
    查看>>
    mysql进阶-查询优化-慢查询日志
    查看>>
    wargame narnia writeup
    查看>>
    MySQL进阶篇SQL优化(InnoDB锁问题排查与解决)
    查看>>
    Mysql进阶索引篇03——2个新特性,11+7条设计原则教你创建索引
    查看>>
    mysql远程连接设置
    查看>>
    MySql连接出现1251Client does not support authentication protocol requested by server解决方法
    查看>>
    Mysql连接时报时区错误
    查看>>
    MySql连接时提示:unknown Mysql server host
    查看>>
    MySQL连环炮,你扛得住嘛?
    查看>>
    mysql逗号分隔的字符串如何搜索
    查看>>
    MySQL通用优化手册
    查看>>
    Mysql通过data文件恢复
    查看>>
    MYSQL遇到Deadlock found when trying to get lock,解决方案
    查看>>
    MYSQL遇到Deadlock found when trying to get lock,解决方案
    查看>>
    mysql部署错误
    查看>>
    MySQL配置信息解读(my.cnf)
    查看>>