调用INSERT / UPDATE / DELETE语句哪个更合适?命令或查询?我认为“命令”,因为“查询”意味着你提出一个问题,并期望得到你的问题的答案(和更多的信息,而不仅仅是“是的,这个操作是成功执行的,并且,可选地,这里是你的插入ID”)
只是来自中级Web应用程序开发人员的问题,他也是一名通信专业人员,并且喜欢特异性。 :)
答案 0 :(得分: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):
关系DBMS中预期的不同更新运算符是 通常称为
INSERT
,DELETE
和UPDATE
,这些是。{ 教程D中使用的名称(也在SQL中)[p.28]令人遗憾的是,关键字
UPDATE
变得如此广泛 接受作为更新的一个特定运营商的名称 数据库。请不要拍信使! [第168页]虽然[关系]赋值在理论上足够了 更新目的,使用速记通常更方便 表示目标的当前值之间的差异 relvar和新值。有时......差异只是 在现有集合中添加一个或多个元组;有时它是 只是改变了一些现有的属性值 元组;有时它只是删除了一些现有的 元组。已提及这三个特定案件的短缺 从时间开始,分别为
INSERT
,UPDATE
和DELETE
远古 - 换句话说,甚至在关系出现之前 数据库,虽然当然在那之前出现了目标 更新是文件,而不是relvars或SQL表[p.165]
答案 1 :(得分:5)
如有疑问,请将其称为“声明”。
答案 2 :(得分:0)
有时除select之外的任何内容都被认为是DML - 数据操作语言。然而,这不是一个硬性和快速的区别。这就像DML中经常包含select一样。