MySQL DELETE 语句

你可以使用 DELETE FROM 命令来删除 MySQL 数据表中的记录。

你可以在 mysql> 命令提示符或 PHP 脚本中执行该命令。

语法

以下是 DELETE 语句从 MySQL 数据表中删除数据的通用语法:

DELETE FROM table_name
WHERE condition;

参数说明:

  • table_name 是你要删除数据的表的名称。
  • WHERE condition 是一个可选的子句,用于指定删除的行。如果省略 WHERE 子句,将删除表中的所有行。

更多说明:

  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
  • 你可以在 WHERE 子句中指定任何条件
  • 您可以在单个表中一次性删除记录。

当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。

实例

以下实例演示了如何使用 DELETE 语句。

1. 删除符合条件的行:

DELETE FROM students
WHERE graduation_year = 2021;

以上 SQL 语句删除了 students 表中所有 graduation_year 为 2021 的学生的记录。

2. 删除所有行:

DELETE FROM orders;

以上 SQL 语句删除了 orders 表中的所有记录,但表结构保持不变。

3. 使用子查询删除符合条件的行:

DELETE FROM customers
WHERE customer_id IN (
    SELECT customer_id
    FROM orders
    WHERE order_date < '2023-01-01'
);

以上 SQL 语句通过子查询删除了 orders 表中在 '2023-01-01' 之前下的订单对应的客户。

注意: 在使用 DELETE 语句时,请确保你提供了足够的条件来确保只有你想要删除的行被删除。如果不提供 WHERE 子句,将删除表中的所有行,可能导致不可预测的结果。


从命令行中删除数据

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

实例

以下实例将删除 runoob_tbl 表中 runoob_id 为3 的记录:

DELETE 语句:

mysql> use RUNOOB; Database changed mysql> DELETE FROM runoob_tbl WHERE runoob_id=3; Query OK, 1 row affected (0.23 sec)


使用 PHP 脚本删除数据

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

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

实例

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

MySQL DELETE 子句测试:

<?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 runoob_tbl
        WHERE runoob_id=3';
 
mysqli_select_db( $conn, 'RUNOOB' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('无法删除数据: ' . mysqli_error($conn));
}
echo '数据删除成功!';
mysqli_close($conn);
?>

<think>首先,用户的问题是:“mysql delete 语句”,意思是询问MySQL中的DELETE语句。 我需要使用中文回答问题,因为用户指定了“请使用中文回答问题”。 根据规则: - 回答完问题后,必须在末尾提出3-5个相关问题。 - 第一行必须完整输出“§§相关问题§§”,然后列出问题。 - 禁止换行分散,所以要连续输出相关问题。 回顾示例格式: - 回答部分包括解释和相关代码(如果有)。 - 然后是“§§相关问题§§”行。 - 接着是1. 2. 3. 等编号的问题。 所以,我的回答结构: 1. 解释MySQL DELETE语句。 2. 提供语法示例(用代码块)。 3. 注意事项或常见用法。 4. 然后输出“§§相关问题§§”。 5. 列出3-5个相关问题。 DELETE语句的基本解释: - DELETE语句用于从MySQL表中删除记录。 - 语法:DELETE FROM table_name WHERE condition; - 如果没有WHERE子句,会删除所有记录(危险!)。 - 可以使用LIMIT限制删除的行数。 示例代码: ```sql -- 删除指定条件的记录 DELETE FROM employees WHERE id = 101; -- 删除所有记录(谨慎使用) DELETE FROM employees; -- 使用LIMIT删除前10条 DELETE FROM employees ORDER BY id DESC LIMIT 10; ``` 注意事项: - 始终使用WHERE子句避免误删。 - 在事务中使用ROLLBACK以防错误。 - 考虑使用SOFT DELETE(标记删除)而不是物理删除。 现在,相关问题: - 必须基于用户的问题(DELETE语句)和我的回答提出。 - 数量:3-5个。 - 相关问题应该相关且有启发性。 可能的§§相关问题§§: 1. 如何防止误删数据? 2. DELETE语句与TRUNCATE TABLE的区别是什么? 3. 如何恢复被DELETE语句删除的数据? 4. 在事务中使用DELETE语句的安全性如何? 5. 什么是软删除(soft delete)及其实现方式? 确保问题数目在3到5之间。 最后,输出必须是连续的: - 回答部分结束后。 - 新段落:“§§相关问题§§” - 然后是编号列表:1. ... 2. ... 3. ... 完整回答: - 先用中文解释。 - 提供代码块。 - 注意事项。 - §§相关问题§§ - 问题列表。 </think>在MySQL中,`DELETE`语句用于从表中删除一条或多条记录。以下是关键语法和注意事项: ### 基本语法 ```sql -- 删除指定条件的记录(推荐使用WHERE避免全表删除DELETE FROM 表名 WHERE 条件; -- 示例:删除id为101的用户 DELETE FROM users WHERE user_id = 101; ``` ### 完整示例 ```sql -- 删除年龄大于60岁的用户,并限制删除前100条 DELETE FROM users WHERE age > 60 ORDER BY age DESC LIMIT 100; ``` ### 重要注意事项 1. **WHERE子句必需**:若无WHERE条件,会删除所有数据(如 `DELETE FROM users;`)。 2. **事务安全**:在事务中执行以便回滚(例如 `START TRANSACTION; DELETE ...; ROLLBACK;`)。 3. **LIMIT优化**:大数据删除时,使用 `LIMIT` 分批次操作减少锁表时间。 4. **外键约束**:若表有其他表的外键引用,需先处理依赖或用 `ON DELETE CASCADE`。 5. **备份建议**:执行前用 `SELECT * FROM 表名 WHERE 条件;` 验证数据,或提前备份表。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值