mysql - 如何在单个查询中创建几个表。 MySQL

标签 mysql sql database

我需要使用 php 在 mysql 中创建 5-10 个表,但我认为有比创建 10 个查询更好的方法,所以我的问题是,如何使用单个查询来做到这一点?有可能吗?每张 table 都不一样。

$sql = "CREATE TABLE IF NOT EXISTS `db_countries` (
           `countrykey` int(11) NOT NULL,
           `countrynamelat` varchar(500) NOT NULL default '',
            PRIMARY KEY  (`countrykey`)
        ) ENGINE=MyISAM  DEFAULT CHARSET=utf8";

mysql_query($sql);

  $sql2 = "CREATE TABLE IF NOT EXISTS `db_city`(
              `city_key` int(11) NOT NULL,
              `city_name` varchar(500) NOT NULL,
              `city_code` int(11) NOT NULL,
              `city_country_key` int(11) NOT NULL,
            PRIMARY KEY(`city_key`)
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8";
    mysql_query($sql2) or die(mysql_error());

最佳答案

您可以创建一个存储过程来创建所有表:

DELIMITER $$

CREATE PROCEDURE `localhost`.`sp_CreateTables` ()
BEGIN
  CREATE TABLE IF NOT EXISTS `db_countries` (
     `countrykey` int(11) NOT NULL,
     `countrynamelat` varchar(500) NOT NULL default '',
      PRIMARY KEY  (`countrykey`)
  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

  CREATE TABLE IF NOT EXISTS `db_city`(
    `city_key` int(11) NOT NULL,
     `city_name` varchar(500) NOT NULL,
     `city_code` int(11) NOT NULL,
     `city_country_key` int(11) NOT NULL,
     PRIMARY KEY(`city_key`)
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
END

然后只需从 PHP 调用存储过程即可:

$sql = "call sp_CreateTables()";
mysql_query($sql) or die(mysql_error());

关于mysql - 如何在单个查询中创建几个表。 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811157/

相关文章:

通过 cPanel 创建的 MySql 用户在尝试登录时获取 'access denied'

sql - 使用 case 语句时,PostgreSQL 列必须出现在 GROUP BY 子句中或用于聚合函数中

sql - 根据与同一 View 中其他行的比较来选择行

sql - 一对多/零对多关系?

mysql - 如何对计数数据进行分组

mysql - 无法通过phpMyAdmin访问数据库

PHP MySQL 语句什么都不返回?

php - 显示基于另一行值的金额总和

mysql - 大型聊天应用程序 Mysql 数据库消息存储 每条消息 1 行或将整个线程附加到 1 个长文本字段

iphone - 更好的方法 - 为 iPad 应用程序使用数据库或网络服务