为什么SQL INSERT和UPDATE语句具有不同的语法?

Bob*_*man 5 sql

在考虑关于SQL 语句的这个问题INSERT时,我想到两个语句之间语法的区别在很大程度上是人为的.也就是说,我们为什么不能这样做:

INSERT INTO MyTable SET Field1=Value1, Field2=Value2, ...
Run Code Online (Sandbox Code Playgroud)

要么

UPDATE MyTable ( Field1, Field2 ...) VALUES ( Value1, Value2, ... ) 
    WHERE some-key = some-value
Run Code Online (Sandbox Code Playgroud)

也许我错过了一些关键的东西.但是对于我们这些过去不得不连接我们的SQL语句的人来说,使用INSERTa UPDATE语句和语句的可比语法会节省大量的编码.

Ale*_*ler 6

他们提供不同的语法功能.在更新中,您指定的过滤器选择要应用更新的一组行.当然,为了相同的目的,该语法与SELECT查询共享.

在INSERT中,您没有选择任何行,而是生成一个需要指定一组值的新行.

在UPDATE中,LHS = RHS的东西是指定一个产生true或false(或者可能是null)的表达式.在INSERT中,VALUES子句是关于赋值.因此,虽然它们在表面上相似,但它们在语义上完全不同,imho.虽然我编写了一个SQL解析器,但这可能会影响我的观点.:)


Dav*_*ker 5

SQL Server 2008通过MERGE命令引入了UPSERT功能.这是逻辑等价物

IF FOUND THEN
 UPDATE
ELSE
 INSERT
Run Code Online (Sandbox Code Playgroud)