MySQL数据删除语句

MySQL数据删除语句MySQL 数据删除语句在 MySQL 中 可以使用 DELETE 语句来删除表的一行或者多行数据

MySQL数据删除语句

在 MySQL中,可以使用 DELETE 语句来删除表的一行或者多行数据。

基础语法

删除单个表中的数据

使用 DELETE 语句从单个表中删除数据,语法格式为:

DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句] 

语法说明如下:

  • <表名>:指定要删除数据的表名。
  • ORDER BY 子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。
  • WHERE 子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行。
  • LIMIT 子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。

注意:在不使用 WHERE 条件的时候,将删除所有数据。

根据条件删除表中的数据

【实例 2】在 tb_courses_new 表中,删除 course_id 为 4 的记录,输入的 SQL 语句和执行结果如下所示。

mysql> DELETE FROM tb_courses -> WHERE course_id=4; Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM tb_courses; +-----------+-------------+--------------+------------------+ | course_id | course_name | course_grade | course_info | +-----------+-------------+--------------+------------------+ | 1 | Network | 3 | Computer Network | | 2 | Database | 3 | MySQL | | 3 | Java | 4 | Java EE | +-----------+-------------+--------------+------------------+ 3 rows in set (0.00 sec) 

由运行结果可以看出,course_id 为 4 的记录已经被删除。

清空表数据

mysql清空表可以用delete和truncate两个命令来完成:

  1. delete

    ① 语法:delete from table_name;

    ② 示例:DELETE FROM order;

    1. truncate

    ① 语法:truncate table table_name;

    ② 示例:TRUNCATE TABLE order;

  2. 区别

    ① 使用delete清空表中的记录,内容的ID仍然从删除点的ID继续建立,而不是从1开始。而truncate相当于保留了表的结构而重新建立了一张同样的新表。delete的效果有点像将mysql表中所有记录一条一条删除到删完。

    ② 效率上truncate比delete快。但truncate删除后不记录mysql日志,不可以恢复数据。

复杂删除案例

案例1 其他表作为条件

DELETE FROM t_student WHERE id in ( SELECT a.studentID FROM t_student_gradeclass_course as a ,t_grade_class as b WHERE a.gradeClassID=b.id and grade='十六年级' ) 

案例2 自己表作为条件删除自己表数据

错误案例

DELETE FROM t_student_gradeclass_course WHERE id in ( SELECT a.id FROM t_student_gradeclass_course as a ,t_grade_class as b WHERE a.gradeClassID=b.id and grade='十六年级' ) 

报错: > 1093 - You can’t specify target table ‘t_student_gradeclass_course’ for update in FROM clause

翻译: 你不能在表子句中指定更新的目标表’t_student_gradeclass_course’

因为在mysql中不允许修改的表作为,修改表where的子查询,oracle就可以

解决办法 : 将修改条件放入一个虚拟表中就行了

正确案例

DELETE FROM t_student_gradeclass_course WHERE id in ( -- 虚拟表 SELECT id FROM( -- 删除条件 SELECT a.id FROM t_student_gradeclass_course as a ,t_grade_class as b WHERE a.gradeClassID=b.id and grade='十六年级' ) as a ) 
点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
如有侵权,请私信联系我
感谢,配合,希望我的努力对你有帮助^_^

今天的文章 MySQL数据删除语句分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-30 13:40
下一篇 2024-12-30 13:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/92168.html