在不预先定义多个列的情况下创建表

时间:2012-10-03 21:33:51

标签: mysql sql database

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

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

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

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

3 个答案:

答案 0 :(得分:1)

不,你不能。但是,您可以使用ALTER TABLE在运行时添加列。

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

答案 1 :(得分: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)

答案 2 :(得分:0)

AS @Mark和@attis说:

  

你做不到。但是,您可以使用ALTER在运行时添加列   表

     

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

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

  • column与(idname
  • values与(idcolumn_idvalue

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

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

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