术语:DML“修改事物”
Posted
技术标签:
【中文标题】术语:DML“修改事物”【英文标题】:Terminology: DML "that modifies things" 【发布时间】:2010-12-02 16:14:58 【问题描述】:我了解 DML 在技术上包含仅查询但不修改持久数据的 SQL 动词。 (参见,例如,wikipedia 或 oracle 或 orafaq)
但是,我经常希望提及“所有且仅是那些修改存储/持久数据的 SQL 动词”——基本上是 INSERT
、UPDATE
、DELETE
,但 不是 SELECT
。对于这个 DML 子集,是否有官方/标准化术语,或者可能单独存在一个有说服力和优雅的术语?
【问题讨论】:
哇,我看了一眼这个问题的标题,读到“恶魔学:'那会改变事物'。” 【参考方案1】:DML 包括 SELECT INTO
(而不仅仅是 SELECT
),因为它是 INSERT 的同义词。无需细分。
上班路上想了想,才想起SELECT 是是用来操作数据的。例如:
SELECT t.firstname +' '+ t.lastname --String concatenation
SELECT CAST(t.column AS int) --Datatype change
【讨论】:
是的,DML 是您要查找的术语。 是的,很聪明,但是一个普通的 SELECT 只能转换临时投影中的数据,它不能修改存储或持久的数据,这是我问题背后的意图。我会澄清的。 @pilcrow:修改意味着持久性,但在某些情况下不需要持久性 - 需要是暂时的。但这仍然是数据操作。【参考方案2】:我的教授曾经将它们定义为 Edits(而不是 Reads),但我不知道 IUD 的标准术语。
【讨论】:
嗯,我更喜欢这样:“DML 编辑。”【参考方案3】:遗憾的是,从官方的角度来看,我认为没有。或许我们需要补一张?
就个人而言,我认为 DML 一词具有误导性,因为该术语并没有真正描述 SELECT 的工作方式,因为它(通常)实际上并没有修改任何东西。它只是在临时空间中以不同的方式“收集”关系数据,并返回一组指定的数据。
所以,如果是我的选择,我会这样说:
DML 将描述 INSERT/UPDATE/DELETE
和
DRL(数据检索语言)将描述 SELECT。
【讨论】:
已接受。虽然我认为我们会无休止地争论新术语,但我认为你的答案的主旨已经死了。 也许我们都同意 DML 的意思是“数据操作语言”(与 DDL 相对,仍然是“数据定义语言”)。 :)【参考方案4】:基于 CRUD:Create, read, update and delete,您可以只说 CUD(创建、更新、删除)。但是,我不确定是否有人使用它。
【讨论】:
【参考方案5】:根据Wikipedia article on SQL,
数据操作语言 (DML) 是用于添加的 SQL 子集, 更新和删除数据:
而statements discussed there(INSERT、UPDATE、DELETE、MERGE、TRUNCATE 等)被放置在different category 中,而不是 SELECT。
因此,根据 Wikipedia,DML 可能不一定包含 SELECT。
根据SQL-92 standard,查看目录显示 DML 确实包含 SELECT INTO:
13 Data manipulation ............................................371 (...) 13.5 <select statement: single row> .............................382 (...)
那里列出的定义描述了SELECT <columns> INTO ...
。
【讨论】:
以上是关于术语:DML“修改事物”的主要内容,如果未能解决你的问题,请参考以下文章