SQL命名法:INSERT/UPDATE/DELETE的"查询"或"命令"?

Pau*_*uno 11 sql command nomenclature

哪个更适合调用INSERT/UPDATE/DELETE语句?命令或查询?我认为"命令",因为"查询"意味着你提出一个问题,并期望得到你的问题的答案(和更多的信息,而不仅仅是"是的,这个操作是成功执行的,并且,可选地,这里是你的插入ID") .

只是来自中级Web应用程序开发人员的问题,他也是一名通信专业人员,并且是一位喜欢特异性的人.:)

one*_*hen 9

一个通称INSERT,UPDATE,DELETE并且MERGE是一个"更新"(即使它可能造成混乱-而不是理想的-这UPDATE仅仅是"更新"的一个子集).另一个术语是"关系分配".

对于通用术语SELECT,INSERT,UPDATE,DELETE,MERGE(和任何用分号其他终止)被称为"声明".

严格地说,"查询"是一个SELECT返回结果集的语句(例如,它会排除SELECT..INTO..FROM语句).但是,使用术语"查询"来表示更新,虽然是非正式的,但遗憾的是很常见.例如,虽然"更新查询"是一个矛盾的说法,但当我使用该确切术语(site:stackoverflow.com "update query")搜索此网站时,我会获得17,300次点击!


更新(双关语:)

@David Marx:我不同意你的说法,即将INSERT/DELETE/MERGE称为'更新'是合适的.这将是非常令人困惑的.只有UPDATE才是更新.

我在原来的答复中同意这种情况可能令人困惑.我们很幸运Stackoverflow能够格式化答案和注释,以便UPDATE可以将关键字与逻辑更新区分开来; 以大写形式编写关键字(按照完整标准SQL-92 :)的要求也有帮助.

但是,通过阅读通用数据库和计算科学文献,我可以告诉你"更新"确实是正确的集体术语.我在下面提供了一个引用:

"关系数据库理论简介"(2010),Hugh Darwen [免费pdf下载 - Google it):

预期在关系数据库管理系统的不同的更新运营商通常被称为INSERT,DELETE并且UPDATE,那些是在教程d(也在SQL)[第28页]中使用的名称

令人遗憾的是,关键字UPDATE已被广泛接受为仅用于更新数据库的一个特定运算符的名称.请不要拍信使![第168页]

尽管[关系]赋值在理论上足以用于更新目的,但通常使用表示目标relvar的当前值与新值之间的差异的简写来更方便.有时......差异只是在现有集合中添加了一个或多个元组; 有时它只是改变了一些现有元组的某些属性值; 有时它只是删除了一些现有的元组.对于这三个特殊情况下速记已经被称为INSERT,UPDATEDELETE分别自远古以来-换句话说,即使是关系数据库出现之前,虽然这当然来临之前更新的目标是文件,而不是relvars或SQL的桌[第165页]


Dav*_*arx 5

如有疑问,请将其称为"声明".