我正在使用MySQL。我有一张名为EMP的表,现在我需要创建另外一张(EMP_TWO)与原先表相同架构、相同列和相同约束的表。我该如何实现呢?
我正在使用MySQL。我有一张名为EMP的表,现在我需要创建另外一张(EMP_TWO)与原先表相同架构、相同列和相同约束的表。我该如何实现呢?
若要基于另一个表的结构/约束创建新表,请使用:
CREATE TABLE new_table LIKE old_table;
如果需要复制数据,请使用以下命令:
INSERT INTO new_table SELECT * FROM old_table;
注意 LIKE 选项的说明:
使用 LIKE 可以基于另一个表的定义(包括原表中定义的任何列属性和索引)创建一个空表:
CREATE TABLE new_table LIKE original_table; 使用与原始表相同的版本的表存储格式创建副本。需要对原表有 SELECT 权限。
LIKE 仅适用于基本表,不能用于视图。
CREATE TABLE ... LIKE 不会保留为原始表指定的任何 DATA DIRECTORY 或 INDEX DIRECTORY 表选项,也不会保留任何外键定义。
CREATE
语句中可以使用LIKE
。 - jprofittCREATE TABLE new_db.new_table LIKE old_db.old_table
就可以啦 :) - Jimmy Adaro如果您只想复制结构,请使用
create table new_tbl like old_tbl;
如果您希望复制结构和数据,请使用
create table new_tbl select * from old_tbl;
CREATE TABLE new_table AS SELECT * FROM old_table;
CREATE TABLE new_table LIKE Select * from Old_Table;
CREATE TABLE new_table LIKE Select column1, column2, column3 from Old_Table where column1 = Value1;
如果您的新表中需要相同的约束条件,首先必须创建模式,然后再进行模式数据的创建。
CREATE TABLE new_table LIKE Some_other_Table;
like
和select *
是否可能?我收到了错误。另请检查此答案https://dev59.com/FGkw5IYBdhLWcg3wGGm8 - chanchal118仅使用MySQL命令行8.0上述命令时,会显示以下错误:
ERROR 1327 (42000): Undeclared variable: at
因此,如果只想复制具有相同结构但不包含数据的表,则可以使用以下create table with like语句:
create table EMP_TWO like EMP;
如果想要复制表及其数据,请使用以下语句:
create table EMP_TWO select * from EMP;
如果只想复制表中的数据,请在创建空表后使用以下语句:
insert into EMP_TWO select * from EMP;
SHOW CREATE TABLE tablename
提供了可以重新创建包括索引等内容的 SQL 语句 - 只需将名称更改为您想要的新表名即可 :)