2011-07-14 54 views
7

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

只是一个中级Web应用程序开发人员的问题,他也是一个沟通专业,是一个喜欢特殊性的人。 :)

+1

好了,几乎所有的SQL书我有红,说:'INSERT/UPDATE/DELETE'命令 – Rahul

+0

我需要创建以抽象类为我的球队以实体框架实施工作单元,命令模式。我希望抽象类有一个模板Execute方法来处理setup和saveChanges,所以命名很重要。我想出的东西:AbstractMutateCommand,AbstractUpdateCommand,AbstractWriteCommand。选择了最后一个。 –

+0

我正在寻找相同的 - 选择/插入/更新/删除的术语,但**没有**的过程调用。我想我会称之为“声明”。 –

回答

5

INSERTUPDATEDELETEMERGE的通用术语是“更新”(即使它可能造成混乱 - 并不理想 - 那UPDATE仅仅是“更新”的一个子集)。另一个术语是“关系分配”。

的通称SELECTINSERTUPDATEDELETEMERGE(和任何用分号其他终止)被称为“声明”。

严格来说,“查询”是返回结果集(例如会排除SELECT..INTO..FROM语句)的SELECT语句。然而,使用术语“查询”来引用更新虽然非正式,但不幸的是很常见。例如,虽然“更新查询”是一个矛盾,但当我使用精确词语(site:stackoverflow.com "update query")对Google网站进行搜索时,我获得了17,300次点击!


UPDATE(双关语indended :)

@大卫马克思:我不同意你的要求,它是适当的参考 到插入/删除/合并为一个 '更新'。这将是极其令人困惑的 。只有更新是一个更新。

我同意我的原始答案,这种情况可能会令人困惑。我们幸运的在Stackoverflow上能够格式化答案和评论,以便关键字UPDATE可以区别于逻辑更新;用大写字母写关键字(按照完整标准SQL-92 :)的要求也有帮助。

但是,通过阅读通用数据库和计算科学文献,我可以告诉你'更新'确实是一个正确的总称。下面我提供了一个在引用此:

(2010年)“以关系型数据库理论概论”,休·达文[可免费PDF下载 - 谷歌它):

不同的更新运营商预期在关系数据库管理系统中有 通常被称为INSERT,DELETEUPDATE,这些是在教程D中使用的名称(也在SQL中)[p。28]

令人遗憾的是,关键字UPDATE已经变得如此广泛 被接受为仅用于更新 数据库的特定运算符的名称。请不要拍摄使者! [第168页]

虽然[关系]分配为 更新目的理论上足以,它通常是使用表达靶 relvar的当前值和新值之间的差的速记 更方便。有时候......这种差异只不过是将一个或多个元组添加到现有集合中而已;有时它只是 元组的某些属性值的变化;有时它只是删除一些现有的元组。对于这三个特殊情况下速记已经提到 为INSERTUPDATEDELETE分别,因为时间 远古 - 换句话说,甚至关系 数据库出现之前,虽然这当然来临之前的 更新的目标是文件,而不是relvars或SQL表[临165]

+0

我不同意你声称将INSERT/DELETE/MERGE称为“更新”是合适的。这将是非常混乱。只有更新是一个更新。 –

+0

@David Marx:查看我答案的更新。另外,请考虑我的MERGE是否具有'MERGE..IF MATCHED UPDEN ...'的多样性,可以将它看作是UPDATE还是更新? ;) – onedaywhen

0

有时除了select以外的任何东西都被认为是DML - 数据操作语言。然而这不是一个硬性和快速的区别。这与DML中的选择一样多。

4

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