我是否必须按顺序列出所有列,并在INSERT语句中为每个列设置值?

时间:2009-08-11 21:47:56

标签: mysql insert

这是可能的还是我必须列出所有列?

INSERT INTO table_name (column1, **column3**, column2,...)
VALUES (value1, value2, value3,...)

我是否必须按顺序列出所有列并为每个列设置值?

4 个答案:

答案 0 :(得分:5)

您只需要插入计划插入的列。唯一需要匹配的订单是列名称和值。

IE:3列:col1col2col3

INSERT INTO TABLE ( {COL1 {1}} {COL2 {1}} {col1value {1}} {col2value {1}}

, {COL2 {1}} {COL3 {1}} {col2value {1}} {col3value {1}}

) VALUES( {COL3 {1}} {COL2 {1}} {col3value {1}} {col2value {1}}

答案 1 :(得分:1)

对于您的INSERT语句,它应该是这样的:

INSERT INTO table_name (column1, column3, column2,...) VALUES (value1, value3, value2,...)

由于您移动了column3,因此value3应与其“匹配”

答案 2 :(得分:1)

您可以按任何顺序放置查询列,只要您像上面那样指定该顺序即可。您作为VALUE子句的一部分插入的实际值必须与查询的INSERT INTO (x,y,z)部分匹配。

指定的任何列都将插入默认值。默认值由创建列时设置的DEFAULT值确定。

如果某个列上有INSERT规范且没有NOT NULL值,您的DEFAULT可能会失败,并且您未在查询中提供一个。

答案 3 :(得分:0)

您的列名必须与您要插入的值相对应。例如,在上面的查询中,如果column1是varchar,column3是int等,则值必须对应,并且按照查询成功执行的确切顺序。