SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

SQL DELETE 语句

SQL DELETE 语句用于删除表中的现有记录。

DELETE 语法

1DELETE FROM 表名 WHERE 条件;

注意:在删除表中的记录时要小心!请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE子句,将会删除表中的所有记录!

演示数据库

以下是示例中使用的 Customers 表的一部分:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL DELETE 示例

以下 SQL 语句从 "Customers" 表中删除客户 "Alfreds Futterkiste":

1DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

此时,"Customers" 表将如下所示:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

删除所有记录

可以在不删除表的情况下删除表中的所有行。这意味着表结构、属性和索引将保持不变:

1DELETE FROM 表名;

以下 SQL 语句将删除 "Customers" 表中的所有行,而不删除表:

1DELETE FROM Customers;

删除表

要完全删除表,请使用DROP TABLE语句:

1删除 Customers 表: 2 3DROP TABLE Customers;

SQL TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句

SQL SELECT TOP 子句用于指定要返回的记录数。

SQL SELECT TOP 子句

SQL Server / MS Access 语法

1SELECT TOP number|percent column_name(s) 2FROM table_name 3WHERE condition;

MySQL 语法

1SELECT column_name(s) 2FROM table_name 3WHERE condition 4LIMIT number;

Oracle 12 语法

1SELECT column_name(s) 2FROM table_name 3ORDER BY column_name(s) 4FETCH FIRST number ROWS ONLY;

旧版 Oracle 语法

1SELECT column_name(s) 2FROM table_name 3WHERE ROWNUM <= number;

带有 ORDER BY 的旧版 Oracle 语法

1SELECT * 2FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s)) 3WHERE ROWNUM <= number;

演示数据库

以下是示例中使用的 Customers 表的一部分:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

示例

使用 SQL Server / MS Access 的 SELECT TOP

选择 "Customers" 表的前 3 条记录:

1SELECT TOP 3 * FROM Customers;

使用 MySQL 的 LIMIT

以下 SQL 语句展示了 MySQL 的等效示例:

选择 "Customers" 表的前 3 条记录:

1SELECT * FROM Customers 2LIMIT 3;

使用 Oracle 12 的 FETCH FIRST

以下 SQL 语句展示了 Oracle 的等效示例:

选择 "Customers" 表的前 3 条记录:

1SELECT * FROM Customers 2FETCH FIRST 3 ROWS ONLY;

使用旧版 Oracle 的 ROWNUM

以下 SQL 语句展示了旧版 Oracle 的等效示例:

选择 "Customers" 表的前 3 条记录:

1SELECT * FROM Customers 2WHERE ROWNUM <= 3;

添加 WHERE 子句

以下 SQL 语句从 "Customers" 表中选择前三条记录,其中国家是 "Germany"(对于 SQL Server/MS Access):

1SELECT TOP 3 * FROM Customers 2WHERE Country='Germany';

以下 SQL 语句展示了 MySQL 的等效示例:

1SELECT * FROM Customers 2WHERE Country='Germany' 3LIMIT 3;

以下 SQL 语句展示了 Oracle 的等效示例:

1SELECT * FROM Customers 2WHERE Country='Germany' 3FETCH FIRST 3 ROWS ONLY;

添加 ORDER BY 关键字

在要对结果进行排序并返回排序后结果的前 3 条记录时,添加 ORDER BY 关键字。

对于 SQL Server 和 MS Access:

1按 CustomerName 字母降序排序结果,并返回前 3 条记录: 2 3SELECT TOP 3 * FROM Customers 4ORDER BY CustomerName DESC;

以下 SQL 语句展示了 MySQL 的等效示例:

1SELECT * FROM Customers 2ORDER BY CustomerName DESC 3LIMIT 3;

以下 SQL 语句展示了 Oracle 的等效示例:

1SELECT * FROM Customers 2ORDER BY CustomerName DESC 3FETCH FIRST 3 ROWS ONLY;

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

点赞
收藏

评论区

加载中...

相关推荐

SQL 基础知识总结(1)

终于可以静下心来系统看一下SQL的东西,为了查阅方便特此记录,以下都是基于SQL必知必会教材,若能提出意见,不胜感激~~select语句通常用于从表中检索数据,最主要的无非就是select...from...where...,然后在根据自己的需要添加一下字段、检索条件等等,如果省略了from子句后就是简单的访问和处理表达式,如select3\2将返回

SQL Server中DELETE和TRUNCATE的区别

DELETE和TRUNCATE语句之间的区别是求职面试中最常见的问题之一。这两条语句都可以从表中删除数据。然而,也有不同之处。本文将重点讨论这些差异,并通过实例加以说明。TRUNCATEDELETE从表中删除所有记录。我们不能使用WHERE删除特定的记录删除所有记录,并可以使用WHERE删除特定记录。不触发DEL

mysql试题

drop,delete与truncate的区别:优先级:droptruncatedeleteTRUNCATE按行删除并不把删除操作记录记入日志保存(不可恢复)DELETE全部删除表内数据并可将删除操作记录在日志中,可以加where字句,可应用于table和viewDROP删除整个表(结构和数据)再插入时自增长id又

MySQL 清空表(truncate)与删除表中数据(delete) 详解

删除表信息的方式有两种:truncatetabletable\_name;delete\fromtable\_name;注:truncate操作中的table可以省略,delete操作中的\可以省略truncate、delete清空表数据的区别:1truncate是整体删除(速度较快),delete是逐条删

Mysql之数据操作

数据的增删改查:增:insertinto表名values();删:物理删除:deletefrom表名where条件;逻辑删除;改:update表名set列1值1,列2值2...where条件;查:全查:select\from数据表名;指定条件查:select\fr

mysql性能优化之数据库级别优化

一 优化SELECT语句1.1WHERE子句优化  本文暂时只讨论可以处理WHERE子句的优化,下面的一些实例使用SELECT语句,但是相同的优化同样适用DELETE和UPDATE语句中的WHERE子句,同样文中有些作者也不理解的地方,希望路过的大神指教 你或许会重写你的查询来让计算操作更快,或许会牺牲一些可读性.你通常可以不用浪费这个时间,