所以,假设我有一个包含20列的表,并且我想向它们插入数据,并且第一列只是一个主索引,如果我不为它分配一个,它将自动具有数值。主索引已自动增加。
所以我的问题是,我是否总是这样做(这很烦人而且很慢)
INSERT INTO table (col1,col2,col3,col4,col5,col6) VALUES (col1value,col2value,col3value,col4,value,col5value,col6value)
或者,我可以只指定值(假设我正在填充除主要索引之外的所有列),如此
INSERT INTO table VALUES (col1values,col2values,col3values,col4values,col5values,col6values)
还是会破桌子?
答案 0 :(得分:4)
不,您不能使用第二种解决方案,除非您提供与字段数一样多的值。您仍然可以使用NULL
提供主键值。然后,MySQL将使用自动递增的值替换它(假设您的列是PRIMARY KEY + AUTO_INCREMENT)。
然而,第一种解决方案非常好。
答案 1 :(得分:0)
tldr;您需要定义要插入的列。
Mysql假设你没有输入下面的列名
INSERT INTO table (column_name1, column_name2, column_name3)
您将在稍后定义值定义中的所有列。在不定义列名的情况下,它不知道要为主键跳过哪一行。
如果您在上面的示例中将主键设置为column_name2,则可以使用此示例。
答案 2 :(得分:0)
第一个是正确的。
在第二个中,您可以将主键属性指定为null或使用INSERT INTO table VALUES('',col2values,col3values,col4values,col5values,col6values)
,假设第一个字段是主键。