您的位置 首页 > 数码极客

如何同时删除数据库中所有的表

欢迎来到MySQL实战第45篇,修炼MySQL,不让这一天又过去了。

在实际工作中,多表删除也是非常重要的,下面以编写一个案例介绍并学习这个多表删除技术。

【表的构建】

create table grade

(

id bigint(20) not null auto_increment,

name varchar(8) not null,

primary key(id)

)engine=InnoDB auto_increment=4 default charset=utf8;

insert into grade values(1,"一年级");

INSERT INTO `grade` VALUES (2, '二年级');

INSERT INTO `grade` VALUES (3, '三年级');

cREATE TABLE `student` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`grade_id` bigint(20) NOT NULL COMMENT '年纪id',

`name` varchar(8) DEFAULT NULL,

`sex` tinyint(2) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES (1, 1, '张三', 1);

INSERT INTO `student` VALUES (2, 2, '李四', 2);

【多表删除的案例学习】

1.把表student中哪些grade_id值在grade表里匹配的记录全部删除。

<1>delete student from student,grade where ;

<2>delete from student using student,grade where ;

2.删除所有没有在grade表中有年纪记录的学生

<1>delete student from student left join grade on where grade.id is null;

<2>delete from student using student left join grade on grade.id= where grade.id is null;

【总结性学习】

1.删除表的用法辨析

<1>drop table 表名; drop将表格直接删除,没有办法找回

<2>truncate(table) 表名; truncate 删除表中的所有数据,不能与where一起使用

<3>delete from 表名(where条件); delete 删除表中的数据。

2.truncate 和delete的区别

<1>事务:truncate 是不可以rollback的,但是delete是可以rollback的;

原因:trunctate删除整表数据,delete是一行一行的删除,可以rollback

<2>效果:truncate删除后将重新水平线和索引(id从零开始),delete不会删除索引。

<3>truncate不能触发delete触发器。

<4>delete删除可以返回行数。

关注财务总监的数据分析,一起修炼MySQL,500篇能掌握它。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何同时删除数据库中所有的表”边界阅读