0

列数を割り当てずにテーブルを作成する mysql ステートメントを発行する方法はありますか? いくつかの変数を取得してテーブルに格納するために、MySQL C API を使用しています。私が直面している問題は、変数をテーブルに挿入する前に (明らかに) テーブルを作成する必要があることです。これらの変数は構造体 (1 つのテーブルに 2 つ、3 つ、または 4 つの変数) である場合があるため、次のように言わなくても済むようにする方法を探しています。

CREATE TABLE Structures(ID varchar(10) primary key, name varchar(25))

任意の数の列を挿入できるテーブルを作成しますか?

ここで少しあいまいな場合はお知らせください。

4

3 に答える 3

1

これをコーディングするもう1つの方法は、2つのテーブルとそれらの間に1対多を使用することです。

たとえば、次のようなテーブルがある場合があります-pcode、

table experiment
  experiment_id: long
  experiment_header: varchar(50)


table experiemnt_data
  experiemnt_data_id: long
  experiment_id: long
  key: varchar(20)
  value: long

 @id = insert into experiment  (experiment_header) value("test run")

 insert into experiment_data  (experiment_id, key, value) value(@id, 'x', 1)
 insert into experiment_data  (experiment_id, key, value) value(@id, 'y', 20)
于 2012-10-03T21:55:57.817 に答える
1

いいえ、できません。ただし、 を使用して実行時に列を追加できますALTER TABLE

ただし、個人的にはあまりお勧めしません。実装を開始する前に、データベースがどのように見えるかを知っておく必要があります。

于 2012-10-03T21:39:51.303 に答える
0

AS @Mark と @attis は次のように述べています。

できません。ただし、ALTER TABLE を使用して実行時に列を追加できます。

ただし、個人的にはあまりお勧めしません。実装を開始する前に、データベースがどのように見えるかを知っておく必要があります。

最善の解決策は次のとおりだと思います: 2 つのテーブルを作成します。

  • column( id, name)付き
  • values( id, column_id, value)付き

次に、それらを結合して結果を簡単に取得する必要があり、他の「列」を簡単に追加できます

すべてをvaluesテーブルに格納することもできますが、データに一貫性がない可能性があります。私の考えでは、文字列を比較するよりも数値を探す方が高速です (テーブル ロック、インデックスなど...)。

@Mark の投稿にコメントしたかったのですが、できません (評判が低すぎます)。

于 2016-12-23T15:38:08.387 に答える