SQL命名法:INSERTUPDATEDELETE是``纯粹的''还是``指令性的''?

SQL命名法:INSERTUPDATEDELETE是``纯粹的''还是``指令性的''?,第1张

SQL命名法:INSERT / UPDATE / DELETE是``纯粹的''还是``指令性的''?

一个通称

INSERT
UPDATe
DELETE
并且
MERGE
是一个“更新”(即使它可能造成混乱-
而不是理想的-这
UPDATE
仅仅是“更新”的一个子集)。替代术语是“关系分配”。

该通称

SELECT
INSERT
UPDATE
DELETE
MERGE
(和任何用分号其他终止)被称为“声明”。

严格来说,“查询”是

SELECT
返回结果集的语句(例如,将排除
SELECT..INTO..FROM
语句)。但是,不幸的是,使用术语“查询”来指代更新是非正式的,但这是非常普遍的。例如,尽管“更新查询”是一个矛盾词,但是当我使用该确切术语(
site:stackoverflow.com"update query"
)在Google上对该网站进行Google搜索时,我得到了17,300次点击!


更新(双关语:)

@David Marx:我不同意您的说法,将INSERT / DELETE /
MERGE称为“更新”是适当的。那将非常令人困惑。只有UPDATE是更新。

我在最初的回答中同意,这种情况可能令人困惑。我们很幸运能够使用Stackoverflow格式化答案和注释,以便

UPDATE
区分关键字和逻辑更新。以大写形式编写关键字(完全标准SQL-92要求:)也有帮助。

但是,通过阅读一般的数据库和计算机科学文献,我可以告诉您“更新”确实是正确的统称。我在下面为此提供了一个引文:

Hugh Darwen撰写的“关系数据库理论概论”(2010年)(免费提供pdf下载-Google):

预期在关系数据库管理系统的不同的更新运营商通常被称为

INSERT
DELETE
并且
UPDATE
,那些是在教程d(也在SQL)[第28页]中使用的名称

令人遗憾的是,关键字

UPDATE
已被广泛接受为只是一个用于更新数据库的特定运算符的名称。请不要射击信使![p.168]

尽管[关系]分配在理论上足以进行更新,但是使用速记表达目标relvar的当前值和新值之间的差异通常更为方便。有时…这种区别只是在现有集合中添加一个或多个元组;有时,它只是对某些现有元组的某些属性值的更改;有时只是删除一些现有的元组。对于这三个特殊情况下速记已经被称为

INSERT
UPDATE
DELETE
分别自远古以来-
换句话说,即使是关系数据库出现之前,虽然这当然来临之前更新的目标是文件,而不是relvars或SQL桌子[p.165]



欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5649664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存