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


    SQL DELETE 语句

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

    DELETE 语法

    DELETE FROM 表名 WHERE 条件;
    
    • 1

    注意:在删除表中的记录时要小心!请注意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”:

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

    此时,“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

    删除所有记录

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

    DELETE FROM 表名;
    
    • 1

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

    DELETE FROM Customers;
    
    • 1

    删除表

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

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

    SQL TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句

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

    SQL SELECT TOP 子句

    SQL Server / MS Access 语法

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

    MySQL 语法

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

    Oracle 12 语法

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

    旧版 Oracle 语法

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

    带有 ORDER BY 的旧版 Oracle 语法

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

    演示数据库

    以下是示例中使用的 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 条记录:

    SELECT TOP 3 * FROM Customers;
    
    • 1

    使用 MySQL 的 LIMIT

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

    选择 “Customers” 表的前 3 条记录:

    SELECT * FROM Customers
    LIMIT 3;
    
    • 1
    • 2

    使用 Oracle 12 的 FETCH FIRST

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

    选择 “Customers” 表的前 3 条记录:

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

    使用旧版 Oracle 的 ROWNUM

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

    选择 “Customers” 表的前 3 条记录:

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

    添加 WHERE 子句

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

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

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

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

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

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

    添加 ORDER BY 关键字

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

    对于 SQL Server 和 MS Access:

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

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

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

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

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

    最后

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

    看完如果觉得有帮助,欢迎点赞、收藏关注
    在这里插入图片描述

  • 相关阅读:
    线程(下):读写者模型\环形队列\线程池
    猿创征文|HCIE-Security Day52:DDoS和防火墙(附场景和配置)
    【CV】第 15 章:结合计算机视觉和 NLP 技术
    【结构型模式】适配器模式
    G1D16-fraud-SVM
    炼丹系列1: 分层学习率&梯度累积
    C语言之婚礼上的谎言
    css常用属性
    微服务从代码到k8s部署应有尽有系列(三、鉴权)
    弘辽科技:淘宝店流量一直起不来是为什么?流量少怎么办?
  • 原文地址:https://blog.csdn.net/2302_76489021/article/details/134541793