【问题标题】:Why 'Select' is called as DML statement ?为什么“选择”被称为 DML 语句?
【发布时间】:2013-10-07 07:17:28
【问题描述】:

我看到很多关于“选择”被称为 DML 的争论。有人能解释一下为什么它的 DML 因为它不操作模式上的任何数据吗?当它把锁放在桌子上时,这应该是 DML 吗?

*在维基百科*我可以看到

"纯只读的 SELECT 查询语句属于 'SQL-data' 语句 [2] 等被标准认为是 在 DML 之外。 SELECT ... INTO 形式被认为是 DML 因为它操纵(即修改)数据。在通常的实践中 但是,没有进行这种区分,并且 SELECT 被广泛考虑 成为 DML 的一部分。[3]"

但是在 SELECT * FROM INSERT 中,选择只会执行选择!请有人帮助我理解这个概念。

谢谢

【问题讨论】:

  • 维基百科摘录中有什么你不明白的?
  • “只会执行选择” - 你不认为它创建一个表并将数据插入到该表中的“其他”东西不仅仅是选择?
  • @X.L ANt 你认为选择 DML 吗?如果是这样,请解释一下它的数据操纵什么?
  • 我没有,但似乎有些人这样做(而且 SELECT INTO 显然是)。我只是觉得摘录很清楚。
  • 其实它有时也被认为是DQL(Data Query Language)的唯一命令。

标签: sql database sql-server-2005


【解决方案1】:

人们通常区分 DDL(数据定义语言,即管理模式对象)和 DML(数据操作语言,即管理由 DDL 创建的模式内的数据)。显然 SELECT 不是 DDL。

【讨论】:

  • 开个玩笑,因为 SELECT 不是 DDL 为什么我们应该将其包含为 DML ?我应该将 DML 理解为数据管理语言吗??
  • 好吧,您可以使用 SELECT 进行分组和聚合,并以某种方式操作数据,至少在数据呈现方式上是这样。对我来说主要区别是:DDL 创建模式。 DML 使用架构。
  • 我活着我在这里进行健康的讨论。如果我没有错,分组和聚合将不会操纵数据!我同意 DML 使用 sheme,而 DDL 创建 Uses (alter) schema。如果语言使用 scehma,我们可以将其归类为 DMl 吗??
  • 在一些(大多数?)实现中的一个重要区别是 DML(包括 SELECT)在事务中运行,而 DDL 不在。
  • @Thilo - 我上次检查时,DDL 也参与了交易。为什么你会认为它没有?
【解决方案2】:

数据操作语言 (DML) 是用于查询/检索和处理数据的词汇表。不要使用 Manipulation 这个词,这样的语句允许数据访问和处理。正如您使用 SQL Server 2005 标记的问题,可以参考以下链接:

http://technet.microsoft.com/en-US/library/ms177591(v=SQL.90).aspx

【讨论】:

  • en.wikipedia.org/wiki/Data_Manipulation_Language 它说“纯只读的 SELECT 查询语句与 'SQL-data' 语句[2] 一起分类,因此被标准视为在 DML 之外。SELECT ... INTO 形式被认为是 DML,因为它操纵(即修改)数据。但在通常的实践中,这种区别并不存在,并且 SELECT 被广泛认为是 DML 的一部分。[3]"
【解决方案3】:

SQL 标准将 SELECT 视为“数据操作”的一部分。

该标准的早期版本可在线获取 http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

在第 13 节中,定义了“数据操作”。

【讨论】:

    【解决方案4】:

    为什么Select是SQL中的DML语句?

    Click here for Link

    SELECT ... INTO 表单用于操作或修改数据。

    例如

    SELECT Column1, Column2 INTO DestinationTable
    来自
    源表

    从 SourceTable 复制 Coumn1,Column2 到 DestinationTable。

    所以 Select 是 dml 语句

    【讨论】:

    • 是 (SELECT Column1, Column2 INTO DestinationTable FROM SourceTable),这在 Oracle 中是可能的。
    • 我认为这个答案没有帮助;首先,问题是关于select,而不是专门针对select into;二、链接的描述和内容都没用
    【解决方案5】:

    选择部门,最大(工资) 来自雇员; 此查询操作数据然后显示,因此它被称为 dml。 因为我们使用聚合函数和 where 子句,所以它显示操纵数据

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 1970-01-01
      • 2021-10-29
      • 2010-11-01
      • 1970-01-01
      • 2023-03-21
      • 2017-07-19
      • 2011-11-30
      • 2019-12-12
      相关资源
      最近更新 更多