SQL INSERT没有指定列.怎么了?

Cha*_*son 7 sql postgresql

正在寻找心爱的W3schools并找到了这个页面并且实际上学到了一些有趣的东西.我不知道你可以在不指定值的列的情况下调用insert命令.例如;

INSERT INTO table_name
 VALUES (value1, value2, value3,...)
Run Code Online (Sandbox Code Playgroud)

从我朦胧的记忆中拉出来,我似乎记得SQL教授提到你必须把字段视为没有任何特定的顺序(虽然在RDB方面,但它不能保证).

我的问题是,服务器如何知道哪些值被分配到哪些字段?*我会自己测试一下,但我不打算使用生产服务器来做我现在可以访问的所有内容.

如果这项技术具体,我正在研究PostgresSQL.这个特殊的语法怎么有用呢?

Jon*_*ton 7

你的教授是对的 - 你应该在命名值之前明确命名列.

在这种情况下,虽然值将按它们在表定义中出现的顺序插入.

这个问题是,如果该顺序发生变化,或者删除或添加了列(即使它们可以为空),那么插入将会中断.

就其有用性而言,在生产代码中并没有那么多.如果您手动编写快速插入代码,那么它可能只是帮助您节省键入所有列名称.


pod*_*ska 5

它们按照在表定义中的顺序插入到字段中。

因此,如果您的表有字段 (a,b,c),则 a=value1,b=value2,c=value3。

你的教授是对的,这是懒惰的,而且容易损坏。但对于快速而肮脏的惰性插入很有用。