2

まったく同じ構造の8つのテーブルを作成する必要があります。最も簡単な方法は、コードをコピーして貼り付け、テーブルに異なる名前を適用することです。かっこよくて、1サイクルで作りたいです。そのサイクルをどのように作成できますか?また、異なる名前を適用するための最良の方法は何ですか?ありがとう

4

3 に答える 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つのテーブルと、現在の行が8つのうちどれに属するかを判別するための追加のインジケーターattrでより適切に管理できます。

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 に答える