首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单个查询中创建几个表。MySQL

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

Stack Overflow用户
提问于 2012-05-30 14:40:05
回答 1查看 4.2K关注 0票数 2

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

代码语言:javascript
复制
$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());
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-30 14:45:32

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

代码语言:javascript
复制
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调用存储过程:

代码语言:javascript
复制
$sql = "call sp_CreateTables()";
mysql_query($sql) or die(mysql_error());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10811157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档