SQLserver: delete语句没有From,为什么可以执行

在 SQL Server 中,DELETE 语句确实不需要使用 FROM 子句来指定要删除的表。这与其他 SQL 语法稍有不同,但是 SQL Server 遵循了 ANSI SQL 标准的规定。

DELETE 语句结构

通常,DELETE 语句的基本结构是这样的:

sql
DELETE FROM table_name WHERE condition;

在 SQL Server 中,你可以省略 FROM 子句,直接写条件来指定要删除的数据,如下所示:

sql
DELETE table_name WHERE condition;

原因和解释

  1. ANSI SQL 标准:根据 ANSI SQL 标准,DELETE 语句的语法是允许省略 FROM 子句的。这意味着数据库管理系统(包括 SQL Server)在执行 DELETE 语句时会识别并正确处理不带 FROM 子句的语法。

  2. 语法简化:省略 FROM 子句可以简化 DELETE 语句的编写,特别是在你已经明确知道要删除哪个表中的数据时,可以直接在 DELETE 关键字后面指定表名和条件。

  3. 语法的灵活性:SQL Server 的设计考虑到了不同的 SQL 编写习惯和需求,因此在 DELETE 语句中允许了这种简化的语法形式,使得语句更加灵活和易于理解。

使用例子

例如,假设你有一个名为 Employees 的表,你想删除年龄小于 25 岁的员工记录,可以这样写 DELETE 语句:

sql
DELETE Employees WHERE Age < 25;

这条语句直接删除了 Employees 表中年龄小于 25 岁的员工记录,没有使用 FROM 子句。

总结关键字

SQL Server, DELETE语句, FROM子句省略, ANSI SQL