我必须创建 8 个具有完全相同结构的表。最简单的方法是复制粘贴代码并为表应用不同的名称。我想变得很酷,用一个周期创造它们。我怎样才能使那个循环以及应用不同名称的最佳方法是什么?谢谢
问问题
3868 次
3 回答
8
创建具有重复结构的表的最快方法如下:
CREATE TABLE tb1
(
id int not null auto_increment,
...,
primary key (id)
);
create table tb2 like tb1;
create table tb3 like tb1;
create table tb4 like tb1;
...
create table tb8 like tb1;
这会复制表结构和相应的索引。
如果您需要制作没有索引的表,这对您来说可能没问题
CREATE TABLE tb1
(
id int not null auto_increment,
...,
primary key (id)
);
CREATE TABLE tb2 AS SELECT * FROM tb1 WHERE 1=2;
根据列定义,这可能有效,也可能无效。
警告
这不能用于具有外键约束的表。这将分阶段进行。
于 2012-12-06T15:53:26.910 回答
1
我相信 MySQL 的语法是
CREATE TABLE <tablename> LIKE <extant table name>;
于 2012-12-06T15:53:45.677 回答
0
CREATE TABLE A (
a INTEGER;
b INTEGER;
);
CREATE TABLE B AS A; --WITH DATA added to end will copy both ddl and data.
CREATE TABLE C AS A;
CREATE TABLE D AS A;
CREATE TABLE E AS A;
CREATE TABLE F AS A;
CREATE TABLE G AS A;
CREATE TABLE H AS A;
尽管我怀疑您是否在这里遇到 XY 问题。可以更紧凑地实现具有相同结构的 8 个表,并且在一个结构中,DBMS 将能够更好地管理 1 个表和一个额外的指标 attr 以确定当前行属于 8 个中的哪一个。
CREATE TABLE A (
a INTEGER;
b INTEGER;
table_num INTEGER CHECK ( table_num >= 0 && table_num <= 7 );
)Primary Index(a,b,table_num)
Index(table_num);
另外我不太了解sql-server,所以所有这些语句可能需要针对方言进行调整,我不确定......但总体思路应该是一样的。
于 2012-12-06T15:51:43.640 回答