SQL DELETE 语句

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

DELETE 语法

DELETE FROM 表名 WHERE 条件;

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

演示数据库

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

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

SQL DELETE 示例

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

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

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

CustomerID CustomerName ContactName Address City PostalCode Country
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

删除所有记录

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

DELETE FROM 表名;

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

DELETE FROM Customers;

删除表

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

删除 Customers 表:

DROP TABLE Customers;

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;

MySQL 语法

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

Oracle 12 语法

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;

旧版 Oracle 语法

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

带有 ORDER BY 的旧版 Oracle 语法

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

演示数据库

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

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

示例

使用 SQL Server / MS Access 的 SELECT TOP

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

SELECT TOP 3 * FROM Customers;

使用 MySQL 的 LIMIT

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

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

SELECT * FROM Customers
LIMIT 3;

使用 Oracle 12 的 FETCH FIRST

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

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

SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;

使用旧版 Oracle 的 ROWNUM

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

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

SELECT * FROM Customers
WHERE ROWNUM <= 3;

添加 WHERE 子句

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

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

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

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

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

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

添加 ORDER BY 关键字

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

对于 SQL Server 和 MS Access:

按 CustomerName 字母降序排序结果,并返回前 3 条记录:

SELECT TOP 3 * FROM Customers
ORDER BY CustomerName DESC;

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

SELECT * FROM Customers
ORDER BY CustomerName DESC
LIMIT 3;

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

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

最后

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

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

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

  1. sql记录去重(SQL查询或者删除表中重复记录)

    .查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select*from people where peopleIdin (select peopleIdfrom peopl ...

  2. mysql 删除表中记录

    一.清除mysql表中数据 delete from 表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以 ...

  3. Oracle 删除表中记录 如何释放表及表空间大小

    1.查看一个表所占的空间大小:SELECT bytes/1024/1024 ||'MB' TABLE_SIZE ,u.* FROM USER_SEGMENTS U WHERE U.SEGMENT_NA ...

  4. SQL语句删除表中的字段只留下最新一行

    方法一 DELETE FROM A WHERE `name` in ( SELECT a.name FROM( SELECT name FROM A a GROUP BY name HAVING CO ...

  5. ORACLE数据库删除表中记录报record is locked by another user

    在操作ORACLE数据库的时候,由于执行完,没有COMMIT,直接把PL/SQL关闭掉,后来导致那张表被锁住,当编辑时就会出现这个信息,record is locked by another user ...

  6. SQL Server删除表及删除表中数据的方法

    删除表的T-SQL语句为: drop table <表名> drop是丢弃的意思,drop table表示将一个表彻底删除掉. 删除表数据有两种方法:delete和truncate. de ...

  7. SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据

    SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...

  8. SQL语句 删除表user 中字段name 内容重复的记录,

    public class T01 { public static void main(String[] args) { int j=4; j=j+=j-=j*=j; System.out.printl ...

  9. sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)

    我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...

  10. 查询和删除表中重复数据sql语句

      1.查询表中重复数据.select * from peoplewhere peopleId in (select   peopleId   from   people   group   by   ...

随机推荐

  1. 【webserver 前置知识 03】Linux网络编程入门其二,I/O多路复用

    I/O多路复用 I/O多路复用使得程序能够同时监听多个文件描述符 LInux下实现I/O多路复用的系统调用主要由select.poll以及epoll(常问,要会自己写出来) 例子 阻塞等待 阻塞等待可 ...

  2. 【Azure Redis 缓存】VM 里的 Redis 能直接迁移到 Azure Cache for Redis ? 需要改动代码吗?

    问题描述 原来部署在VM 里的 Redis 能直接迁移到 Azure Cache for Redis? 需要改动代码吗? 问题解答 以上问题需要从两个方面来解答. 第一:VM中Redis的数据转移到 ...

  3. 图数据库 NebulaGraph 的 Java 数据解析实践与指导

    如何快速.即时.符合直觉地去处理 Nebula Java Client 中的数据解析?读这一篇就够了. 图数据库 NebulaGrpah 的论坛和微信群里,有不少用户问及了 Java 客户端数据解析的 ...

  4. Linux_Centos_yum报错总结

    ​ 此篇适用于yum报错[尝试其他镜像]并且[curl 外网]不通的情况,此时一般考虑是网络的问题 一,出现的报错信息: 此时测试curl / ping www.baidu.com会发现无法连通 二, ...

  5. vue3,实战项目随心笔记

    本项目模仿bibi 网站,主要是做一个pc和手机端的应用案例,主要涉及支付,三方登陆,css原子,妹子ui,路由缓存,组件封装,tailwindcss,vueuse 等常见企业级术应用, 由于本项目是 ...

  6. koa 文件下载 pdf预览 两个接口 - nodejs - chromeDownload chromePreview

    koa 文件下载 pdf预览 两个接口 - nodejs - chromeDownload chromePreview chrome.js const router = require("k ...

  7. 用python生成正玄波信号源码解析

    一 前记 项目需要生成不同频点的正玄波信号,没找到现成的软件,只能自己写一个了.顺便温习一下python. 二 源码解析: #!/usr/bin/python import numpy as np f ...

  8. Mysql查询数据量大小

    --按实例 SELECT CONCAT(round(sum(DATA_LENGTH/1024/1024/1024),2),"GB") as datazise FROM inform ...

  9. springMVC之对象中的基本类型数据绑定遇到的问题

    最进在开发关于SpringMVC框架的项目时,发现个数据绑定的问题,如果这个实体对象里的字段类型为long.int.double时,客户端就报400语法错误 源代码: controller: @Req ...

  10. 360Linux 运维工程师面试真题

    360Linux 运维工程师面试真题 首先我们来看下 360Linux 运维工程师招聘岗位要求: [岗位定义]运维工程师 [岗位薪资]15K-25K [基本要求]北京 / 经验不限 / 本科及以上 / ...