有什么理由使用 INSERT INTO tbl_name () VALUES();语法而不是 SET col_name = col_value,...?

Is there any reason to use INSERT INTO tbl_name () VALUES(); syntax instead of SET col_name = col_value,...?

我个人更喜欢使用以下语法:

INSERT INTO tab_name
SET
    col1 = value1,
    col2 = value2

我更喜欢这种语法,因为它使我能够完全控制列名和赋值之间的对应关系。从我的角度来看,它更形象。

然而,Internet 上的大多数示例和指南(以及 Stack Overflow 上的)都使用 INSERT VALUES 语法,如下所示:

INSERT INTO tab_name (col1,col2) VALUES (value1,value2)

我同意它可以稍微短一些。但尽管如此,我很难想象这会有什么用处。特别是如果插入(更新)列的数量超过 3 或 4。如果我需要添加或排除一个或多个列 to/from 查询,很容易导致错误。

所以问题是:是否有任何理由在 INSERT/UPDATE SET 上使用 INSERT/UPDATE () VALUES () 语法?

因为 SET

INSERT INTO tab_name
SET
    col1 = value1,
    col2 = value2

不是 SQL 标准。

如果您必须使用其他 DBMS,则不能使用此语法。

第一个是 SQL 标准,第二个是 MySQL 的扩展。

您也可以随时查看: MySQL INSERT INTO table VALUES.. vs INSERT INTO table SET