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

时间:2011-07-14 21:18:20

标签: sql command nomenclature

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

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

3 个答案:

答案 0 :(得分:9)

INSERTUPDATEDELETEMERGE的通用术语是“更新”(即使它可能令人困惑 - 并且不理想 - UPDATE仅仅是“更新”的一个子集。另一个术语是“关系分配”。

SELECTINSERTUPDATEDELETEMERGE(以及以分号结尾的任何其他内容)的通用术语称为“语句”。

严格地说,“查询”是一个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):

  

关系DBMS中预期的不同更新运算符是   通常称为INSERTDELETEUPDATE,这些是。{   教程D中使用的名称(也在SQL中)[p.28]

     

令人遗憾的是,关键字UPDATE变得如此广泛   接受作为更新的一个特定运营商的名称   数据库。请不要拍信使! [第168页]

     

虽然[关系]赋值在理论上足够了   更新目的,使用速记通常更方便   表示目标的当前值之间的差异   relvar和新值。有时......差异只是   在现有集合中添加一个或多个元组;有时它是   只是改变了一些现有的属性值   元组;有时它只是删除了一些现有的   元组。已提及这三个特定案件的短缺   从时间开始,分别为INSERTUPDATEDELETE   远古 - 换句话说,甚至在关系出现之前   数据库,虽然当然在那之前出现了目标   更新是文件,而不是relvars或SQL表[p.165]

答案 1 :(得分:5)

如有疑问,请将其称为“声明”。

答案 2 :(得分:0)

有时除select之外的任何内容都被认为是DML - 数据操作语言。然而,这不是一个硬性和快速的区别。这就像DML中经常包含select一样。