0

当我从 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])

为什么额外的部分会做?

4

5 回答 5

3

“额外部分”正在定义您要插入的列(按顺序)。

如果且仅当您将值插入每一列时,您可以省略该部分。也就是说,如果指定的值数与表中的列数相匹配。

大而粗的注释:
即使您在每一列中插入一个值,仍然指定列是一个非常好的主意。原因是,如果明天您决定需要向表中添加另一列,那么您未指定列的所有现有代码都会中断。

于 2013-07-13T00:37:09.993 回答
1

它允许您按任何顺序放置项目,还允许您排除自动增量字段。如果您按该顺序向每个字段插入数据,则可以排除它。

于 2013-07-13T00:38:27.953 回答
1

在第一种情况下,您可以按任何顺序插入您的值,而不一定是您定义表架构的顺序。您也可以选择跳过可为空的列。

在第二种情况下,您必须插入由表架构定义的值,并且您不能跳过可为空的列。您必须明确地null为它们提供值。

于 2013-07-13T00:39:04.037 回答
0

使用第一种方法,您可以定义自己的列顺序来插入值。如果不指定它(如第二个示例),您必须以与表项目相同的顺序插入值

于 2013-07-13T00:38:12.953 回答
0

仅当您以与它们在表中出现的顺序相同的顺序指定值时,它才会起作用。如果您想以其他顺序指定值或仅将值插入表中的少数列,则必须使用完整版本。

于 2013-07-13T00:43:33.587 回答