SQL 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 语句从 “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 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|
选择 “Customers” 表的前 3 条记录:
SELECT TOP 3 * FROM Customers;
以下 SQL 语句展示了 MySQL 的等效示例:
选择 “Customers” 表的前 3 条记录:
SELECT * FROM Customers LIMIT 3;
以下 SQL 语句展示了 Oracle 的等效示例:
选择 “Customers” 表的前 3 条记录:
SELECT * FROM Customers FETCH FIRST 3 ROWS ONLY;
以下 SQL 语句展示了旧版 Oracle 的等效示例:
选择 “Customers” 表的前 3 条记录:
SELECT * FROM Customers WHERE ROWNUM <= 3;
以下 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;
在要对结果进行排序并返回排序后结果的前 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;