这是可能的还是我必须列出所有列?
INSERT INTO table_name (column1, **column3**, column2,...)
VALUES (value1, value2, value3,...)
我是否必须按顺序列出所有列并为每个列设置值?
答案 0 :(得分:5)
您只需要插入计划插入的列。唯一需要匹配的订单是列名称和值。
IE:3列:col1
,col2
,col3
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等,则值必须对应,并且按照查询成功执行的确切顺序。