0

有什么方法可以发出 mysql 语句来创建表而无需分配列数?我正在使用 MySQL C API 来获取一些变量,然后将它们存储在一个表中。我遇到的问题是我必须在将变量插入表之前(显然)创建表。这些变量有时是结构(两个、三个或四个变量放在一个表中),所以我正在寻找一种不必说的方法:

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

但是创建一个可以插入任意数量列的表?

如果我在这里有点含糊,请告诉我。

4

3 回答 3

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 添加列。

但是,就个人而言,我不建议这样做。在开始实施之前,您应该知道您的数据库是什么样的。

我认为最好的解决方案可能是:创建两个表:

  • column与 ( id, name)
  • values与 ( id, column_id, value)

那么您只需加入他们即可轻松获得结果,并且您可以轻松添加其他“列”

您也可以将所有内容存储在values表中,但您的数据可能不一致,而且在我看来,查找数字比比较字符串(表锁、索引等)要快

我想评论@Mark 帖子,但不能(声誉太低)

于 2016-12-23T15:38:08.387 回答