为什么SQL INSERT和UPDATE语句有不同的语法?
问题描述:
在考虑this question关于SQL INSERT
声明时,我想到两种声明在语法上的区别主要是人为的。也就是说,我们为什么不能做:为什么SQL INSERT和UPDATE语句有不同的语法?
INSERT INTO MyTable SET Field1=Value1, Field2=Value2, ...
或
UPDATE MyTable (Field1, Field2 ...) VALUES (Value1, Value2, ...)
WHERE some-key = some-value
也许我失去了一些东西的关键。但对于那些过去不得不连接我们的SQL语句的人来说,使用INSERT
和UPDATE
语句的语法可以节省大量的编码。
答
它们提供不同的语法功能。在更新中,您将指定一个筛选器,用于选择要应用更新的一组行。当然,为了相同的目的,该语法与SELECT查询共享。
在INSERT中,您没有选择任何行,您正在生成一个需要指定一组值的新行。
在更新中,LHS = RHS的东西是指定其产生真或假的(或也许空:)和在INSERT的表达式,VALUES子句是大约的值分配。所以虽然它们表面上相似,但它们在语义上完全不同,恕我直言。虽然我写了一个SQL解析器,所以可能会影响我的观点。 :)
答
我相信这样做是为了让你可以做一个插入语句,而不需要明确的值。如果您在表中的每一单个列放一个值,你可以这样写:
INSERT INTO my_table的值(“值1”,2);代替
:
插入到MY_TABLE(列1,列2)的值( “值1”,2);
导入和导出整个(大)的数据库的情况下,这是非常宝贵的削减文件大小和处理时间。如今,随着形式的快照之类的,也可能是“无价的少” :-)
不是一个真正的问题= P – ajdams 2009-11-09 22:46:50
抱歉,这是一个讨论型的问题,并不真正适合网站的意图。 – jkndrkn 2009-11-09 22:47:33
@ajdams - 我不知道,但我相信,如果它可以在所有被要求,它应该是维基 – 2009-11-09 22:48:37