当前位置: 首页 > 面试题库 >

SQL中的DELETE和DELETE FROM之间的区别?

萧业
2023-03-14
问题内容

有一个吗?我正在研究一些存储过程,并且在一个地方找到了以下行:

DELETE BI_Appointments
WHERE VisitType != (
    SELECT TOP 1 CheckupType
    FROM BI_Settings
    WHERE DoctorName = @DoctorName)

这样做是否与以下操作相同:

DELETE FROM BI_Appointments
WHERE VisitType != (
    SELECT TOP 1 CheckupType
    FROM BI_Settings
    WHERE DoctorName = @DoctorName)

还是语法错误,还是完全不同的东西?


问题答案:

假设这是T-SQL或MS SQL Server,则没有区别,并且语句相同。第一个FROM关键字在DELETE语句中在语法上是可选的。

http://technet.microsoft.com/zh-
CN/library/ms189835.aspx

关键字是可选的,原因有两个。

首先,该标准要求FROM在子句中使用关键字,因此必须遵守该关键字才能符合标准。

其次,尽管关键字是多余的,但这可能不是为什么它是可选的。我相信这是因为SQL Server允许您JOINDELETE语句中指定a
,而将第一个FROM强制性设置变为笨拙。

例如,这是一个普通的删除操作:

DELETE FROM Employee WHERE ID = @value

可以简化为:

DELETE Employee WHERE ID = @value

SQL Server允许您基于另一个表删除带有JOIN

DELETE Employee
FROM Employee
    JOIN Site
       ON Employee.SiteID = Site.ID
WHERE Site.Status = 'Closed'

如果第一个FROM关键字不是可选的,则上面的第二个查询将看起来像这样:

DELETE FROM Employee
FROM Employee
    JOIN Site
       ON Employee.SiteID = Site.ID
WHERE Site.Status = 'Closed'

上面的查询完全有效并且可以执行,但是它是一个非常尴尬的查询。很难说这是一个查询。看起来由于“重复”FROM子句,两个人混在一起了。

注意:由于没有ORDER BY子句,因此示例子查询可能不确定。



 类似资料:
  • 本文向大家介绍DELETE和DROP SQL之间的区别,包括了DELETE和DROP SQL之间的区别的使用技巧和注意事项,需要的朋友参考一下 DELETE是数据操作语言命令DML命令,用于从关系/表中删除元组/记录。DROP是一种数据定义语言DDL命令,用于删除模式的命名元素,如关系/表,约束或整个模式。 以下是DELETE和DROP之间的重要区别。 序号 键 删除 下降 1 目的 DELETE

  • 问题内容: SQL解释逻辑运算符和的方式是否有所不同? 问题答案: 对于mySQL:手册未明确说明,但它们被列为相同: AND, && 逻辑与。如果所有操作数都不为零且不为NULL,则计算为1;如果一个或多个操作数为0,则计算为0,否则返回NULL。 该运算符优先级页面也没什么distiction。

  • 本文向大家介绍SQL和PL / SQL之间的区别,包括了SQL和PL / SQL之间的区别的使用技巧和注意事项,需要的朋友参考一下 SQL,结构化查询语言是一种用于创建,维护和检索关系数据库的标准数据库语言,而PL / SQL是SQL的过程语言扩展,它扩展了SQL并提供了过程功能。 以下是SQL与PL / SQL之间的重要区别。 序号 键 的SQL PL / SQL 1 定义 SQL,是数据库的结

  • 问题内容: 之间有什么区别 例如: 如果我使用一个或另一个真的有关系吗? 问题答案: 基本上destroy在模型上运行任何回调,而delete实际上不运行。 从Rails API中: 删除数据库中的记录并冻结该实例以反映不应进行任何更改(因为它们不能持久保存)。返回冻结的实例。 只需在记录的主键上使用SQL DELETE语句删除该行,就不会执行任何回调。 要强制执行对象的回调或任何:关联选项,请使

  • 本文向大家介绍SQL和NoSQL之间的区别,包括了SQL和NoSQL之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,SQL和NoSQL都是数据库的类型,根据它们的实现和性质,它们都被分为两种类型。 以下是SQL和NoSQL之间的重要区别。 序号 键 的SQL NoSQL 1 类型 SQL数据库通常被归类为关系数据库,即RDBMS。 而NOSQL数据库被称为非关系数据库或分布式数据库。

  • 本文向大家介绍SQL Server中的ETL和ELT之间的区别,包括了SQL Server中的ETL和ELT之间的区别的使用技巧和注意事项,需要的朋友参考一下 ETL代表提取,转换和加载。ETL工具用于从源RDBMS数据库中提取数据并转换提取的数据,例如应用业务逻辑和计算等。然后将数据加载到目标数据仓库中。在ETL工具中,在ETL服务器上执行的数据转换。用于少量数据。 ELT代表提取,加载和转换。