MySQL DELETE 删除语句用法详解与示例

Mysql 教程


MySQL DELETE 语句用于从表中删除不再需要的记录。此查询从表中删除指定行并生成删除行数。我们可以在单个查询中删除多个记录,通过使用 delete 语句,我们还可以设定条件删除数据。

一旦我们使用这个查询删除了记录,数据将无法恢复。因此,在从表中删除任何记录之前,建议创建数据库的备份。数据库备份允许我们在将来需要时恢复数据。


语法格式

以下是 DELETE 语句删除数据的通用语法:

DELETE FROM table_name
[WHERE Clause]

上面的语句中,我们必须首先指定表名。其次,我们必须在WHERE子句中指定删除记录的条件,这是可选的。如果在语句中省略WHERE子句,该查询将从数据库表中删除整个记录。

如果要使用单个delete查询从多个表中删除记录,则必须使用delete语句添加JOIN子句。

如果希望在不知道已删除行数的情况下删除表中的所有记录,则必须使用提供更好性能的TRUNCATE table语句。


用命令行删除数据

这里我们将在 SQL DELETE 命令中使用 WHERE 子句来删除 MySQL 数据表 runoon_tbl 所选的数据。

DELETE 语句

以下实例将删除 runoon_tbl 表中 runoon_id 为3 的记录:

mysql> use RUNOON;
Database changed 

mysql> DELETE FROM runoon_tbl WHERE runoon_id=3; 
Query OK, 1 row affected (0.23 sec)

LIMIT 子句

Limit 子句用于限制从结果集中返回的行数,而不是获取表中的全部记录。有时我们想限制要从表中删除的行数;在这种情况下,我们可以使用LIMIT子句如下:

DELETE FROM table_name
WHERE condition
ORDER BY colm1, colm2, …
LIMIT row_count;

以下查询首先根据 runoon_title 的字母顺序对数据进行排序,然后从表中删除前三条记录:

mysql>  DELETE FROM runoon_tbl ORDER BY runoon_title LIMIT 3;    

 JOIN 子句

JOIN 子句用于添加两个或多个表。每当我们想从单个查询中的多个表中删除记录时,我们将使用 DELETE 语句的 JOIN 子句。请参考以下查询:

mysql> DELETE Employees, Payment FROM Employees   
INNER JOIN Payment      
ON Employees.emp_id = Payment.emp_id      
WHERE Employees.emp_id = 102;  


使用 PHP 脚本删除数据

PHP使用 mysqli_query() 函数来执行SQL语句, 你可以在 SQL DELETE 命令中使用或不使用 WHERE 子句。

该函数与 mysql> 命令符执行SQL命令的效果是一样的。

MySQL DELETE 语句测试

以下PHP实例将删除 runoon_tbl 表中 runoon_id 为 3 的记录:

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$sql = 'DELETE FROM runoon_tbl
        WHERE runoon_id=3';
 
mysqli_select_db( $conn, 'RUNOON' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('无法删除数据: ' . mysqli_error($conn));
}
echo '数据删除成功!';
mysqli_close($conn);
?>

执行前数据查询结果:

mysql> SELECT * FROM runoon_tbl WHERE runoon_id=3;
+-----------+---------------+---------------+-----------------+
| runoon_id | runoon_title  | runoon_author | submission_date |
+-----------+---------------+---------------+-----------------+
|         3 | 学习 Python   | RUNOON.COM    | 2016-05-06      |
+-----------+---------------+---------------+-----------------+
1 row in set (0.00 sec)

执行后数据查询结果:

mysql> SELECT * FROM runoon_tbl WHERE runoon_id=3;
Empty set (0.00 sec)

Mysql 教程


相关