有什么理由使用 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
我个人更喜欢使用以下语法:
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