当我从 PHPMyAdmin 获得插入语句时,它看起来像这样
INSERT INTO `users`(`user_id`, `user_name`, `user_passwd`) VALUES ([value-1],[value-2],[value-3])
但这不是也行得通:
INSERT INTO `users` VALUES ([value-1],[value-2],[value-3])
为什么额外的部分会做?
“额外部分”正在定义您要插入的列(按顺序)。
如果且仅当您将值插入每一列时,您可以省略该部分。也就是说,如果指定的值数与表中的列数相匹配。
大而粗的注释:
即使您在每一列中插入一个值,仍然指定列是一个非常好的主意。原因是,如果明天您决定需要向表中添加另一列,那么您未指定列的所有现有代码都会中断。
它允许您按任何顺序放置项目,还允许您排除自动增量字段。如果您按该顺序向每个字段插入数据,则可以排除它。
在第一种情况下,您可以按任何顺序插入您的值,而不一定是您定义表架构的顺序。您也可以选择跳过可为空的列。
在第二种情况下,您必须插入由表架构定义的值,并且您不能跳过可为空的列。您必须明确地null
为它们提供值。
使用第一种方法,您可以定义自己的列顺序来插入值。如果不指定它(如第二个示例),您必须以与表项目相同的顺序插入值
仅当您以与它们在表中出现的顺序相同的顺序指定值时,它才会起作用。如果您想以其他顺序指定值或仅将值插入表中的少数列,则必须使用完整版本。