我了解 DML 在技术上包含仅查询但不修改持久数据的 SQL 动词。(参见,例如,wikipedia或oracle或orafaq)
但是,我经常希望提及“所有且只有那些修改存储/持久数据的 SQL 动词”——基本上INSERT
是 , UPDATE
,DELETE
但不是普通的SELECT
. 对于 DML 的这个子集,是否有官方/标准化术语,或者可能单独存在一个有说服力和优雅的术语?
DML 包括SELECT INTO
(而不是 just SELECT
),因为它是 INSERT 的同义词。无需细分。
上班路上想了想,才想起 SELECT是用来操作数据的。例如:
SELECT t.firstname +' '+ t.lastname --String concatenation
SELECT CAST(t.column AS int) --Datatype change
我的教授曾经将它们定义为编辑(而不是读取),但我不知道宫内节育器的标准术语。
基于 CRUD:创建、读取、更新和删除,你可以说 CUD(创建、更新、删除)。但是,我不确定是否有人使用它。
遗憾的是,从官方的角度来看,我认为没有。也许我们需要弥补一个?
就个人而言,我认为 DML 一词具有误导性,因为该术语并没有真正描述 SELECT 的工作方式,因为它(通常)实际上并没有修改任何东西。它只在临时空间中以不同的方式“收集”关系数据并返回一组指定的数据。
所以,如果这是我的选择,我会说:
DML 将描述 INSERT/UPDATE/DELETE
和
DRL(数据检索语言)将描述 SELECT。
数据操作语言 (DML) 是用于添加、更新和删除数据的 SQL 子集:
并且在那里讨论的语句(INSERT、UPDATE、DELETE、MERGE、TRUNCATE 等)被放置在与 SELECT不同的类别中。
因此,根据 Wikipedia,DML 可能不一定包含 SELECT。
根据SQL-92 标准,查看目录会发现 DML 确实包含 SELECT INTO:
13 Data manipulation ............................................371 (...) 13.5 <select statement: single row> .............................382 (...)
那里列出的定义描述了SELECT <columns> INTO ...
.