SQL 复制表定义,你想创建一个新表,该表和当前已存在的表保持相同的结构定义。例如,你希望为 DEPT
表创建一个副本,命名为 DEPT_2
。但是,你只想复制它的表结构,而不复制数据。
SQL 复制表定义 问题描述
你想创建一个新表,该表和当前已存在的表保持相同的结构定义。例如,你希望为 DEPT
表创建一个副本,命名为 DEPT_2
。但是,你只想复制它的表结构,而不复制数据。
SQL 复制表定义 解决方案
DB2
使用 CREATE TABLE
语句和 LIKE
子句。
create table dept_2 like dept
Oracle、MySQL 和 PostgreSQL
使用 CREATE TABLE
语句和一个不返回任何数据的子查询。
1 create table dept_2
2 as
3 select *
4 from dept
5 where 1 = 0
SQL Server
使用 SELECT
语句和 INTO
子句,但要保证该查询不返回任何数据。
1 select *
2 into dept_2
3 from dept
4 where 1 = 0
SQL 复制表定义 扩展知识
DB2
DB2 的 CREATE TABLE...LIKE
语句能以现有的表为模板快速创建一个新表。只要把模板表的名字放在 LIKE
关键字的后面即可。
Oracle、MySQL 和 PostgreSQL
使用 Create Table As Select
( 简写为 CTAS
) 语句时,除非为 WHERE
子句指定一个不可能为真的条件,否则,查询结果集将会被写入新表。本例中,WHERE
子句后面的表达式 1=0
会导致查询不返回任何结果。因此,上述 CTAS
语句的执行结果就是一张空表,该表的列取决于 SELECT
子句的查询结果。
SQL Server
使用 INTO
子句复制表定义时,除非为 WHERE
子句指定一个不可能为真的条件,否则的话查询结果集将会被写入新表。本例中,WHERE
子句后面的表达式 1=0
会导致查询不返回任何结果。上述语句的执行结果是一张空表,该表的列取决于 SELECT
子句的查询结果。