有什么方法可以发出 mysql 语句来创建表而无需分配列数?我正在使用 MySQL C API 来获取一些变量,然后将它们存储在一个表中。我遇到的问题是我必须在将变量插入表之前(显然)创建表。这些变量有时是结构(两个、三个或四个变量放在一个表中),所以我正在寻找一种不必说的方法:
CREATE TABLE Structures(ID varchar(10) primary key, name varchar(25))
但是创建一个可以插入任意数量列的表?
如果我在这里有点含糊,请告诉我。
另一种编码方式是使用两个表和它们之间的一对多。
例如,您可能有一个像这样的表 - 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)
不,你不能。但是,您可以在运行时使用ALTER TABLE
.
但是,就个人而言,我不建议这样做。在开始实施之前,您应该知道您的数据库是什么样的。
AS @Mark 和@attis 说:
你不能。但是,您可以在运行时使用 ALTER TABLE 添加列。
但是,就个人而言,我不建议这样做。在开始实施之前,您应该知道您的数据库是什么样的。
我认为最好的解决方案可能是:创建两个表:
column
与 ( id
, name
)values
与 ( id
, column_id
, value
)那么您只需加入他们即可轻松获得结果,并且您可以轻松添加其他“列”
您也可以将所有内容存储在values
表中,但您的数据可能不一致,而且在我看来,查找数字比比较字符串(表锁、索引等)要快
我想评论@Mark 帖子,但不能(声誉太低)