【问题标题】:When to CREATE TABLE AS SELECT versus CREATE TABLE LIKE?何时将 CREATE TABLE AS SELECT 与 CREATE TABLE LIKE?
【发布时间】:2013-06-29 00:05:48
【问题描述】:

我可以使用以下方式“复制”表格:
CREATE TABLE copy LIKE original_table

CREATE TABLE copy as select * from original_table

在后一种情况下,仅复制数据,但不复制主键等。
所以我想知道我什么时候更喜欢使用select as

【问题讨论】:

    标签: mysql sql database select create-table


    【解决方案1】:

    它们做不同的事情。 CREATE TABLE LIKE 创建一个 empty 表,其结构与原始表相同。

    CREATE TABLE AS SELECT 将数据插入到新表中。结果表不为空。此外,CREATE TABLE AS SELECT 常用于更复杂的查询,以生成临时表。在这种情况下没有“原始”表。查询的结果只是被捕获为一个表格。

    编辑:

    进行备份的“标准”方法是使用 . . . . backup 在数据库级别。这将备份数据库中的所有对象。备份多个表很重要,例如,为了维护对象之间的关系完整性。

    如果您只想要一个表的真实副本,请先执行create table like,然后执行insert into。但是,这可能会对 auto_increment 字段构成挑战。您可能希望删除列上的 auto_increment 属性,以便填充此类列。

    【讨论】:

    • 那么创建表的备份副本的标准方法是什么?
    【解决方案2】:

    当新表不是旧表的精确副本,而是仅包含选定的列或连接产生的列时,通常使用第二种形式。

    【讨论】:

      【解决方案3】:

      当您有复杂的选择时,最有可能使用“Create Table as Select...”

      例如:

      create table t2 as select * from t1 where x1=7 and y1 <>2 from  t1;
      

      现在,如果您不需要如此复杂的选择,显然您应该使用 Create Like。您也可以使用此语法更改 PI。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-27
        • 2020-02-08
        • 2013-12-27
        • 1970-01-01
        相关资源
        最近更新 更多