MySQL 删除数据表
在MySQL数据库中,对于不再使用的数据表,我们可以选择删除该数据表,在进行删除数据表时,表的结构和表中数据都会被删除,因此在删除数据表之前需要养成一个良好的数据备份习惯,以避免数据丢失
删除数据库基本语法如下:
DROP TABLE 数据库名
DROP TABLE IF EXISTS 表名 (表名1,表名2,表名3..)
对语法格式介绍如下:
表名1,表名2,表名3..表示要删除的数据库表名称。
DROP TABLE 可同时删除多个表,表名与表名之间用","号隔开
IF EXISTS用于在删除表时判断表是否存在,当数据库表名不存在时SQL语句可顺利执行,但会发出警告;如果不加FI EXISTS,当数据库表不存在时Mysql会报错,终端操作
注意:用户必须拥有执行DROP TABLE命令权限,否则数据库表不会进行删除
表被删除时。用户在表上的权限不会自动删除
删除示例:
1、创建表
CREATE TABLE BEIMU(
BEI_ID INT NOT NULL AUTO_INCREMENT,
BEI_NAME VARCHAR(100) NULL ,
BEI_AGE INT NULL,
BEI_BIRTHDAY DATE,
PRIMARY KEY (`BEI_ID`)
);
2,插入数据
INSERT INTO BEIMU(`BEI_ID`, `BEI_NAME`, `BEI_AGE`, `BEI_BIRTHDAY`) VALUES (003,'夸夸', 23,'2021-01-08');
INSERT INTO BEIMU(`BEI_ID`, `BEI_NAME`, `BEI_AGE`, `BEI_BIRTHDAY`) VALUES ('002','北木 ', '24','2021-01-08');
INSERT INTO BEIMU(`BEI_ID`, `BEI_NAME`, `BEI_AGE`, `BEI_BIRTHDAY`) VALUES (001,'南海', 18,'2021-01-08');
3、查看数据库是否拥有数据表,拥有数据表后,我们对数据表进行删除
DROP TABLE beimu
执行结果,数据库的数据表列表中已经不存在名称为beimu 的表,删除操作成功!
Mysql 删除数据表的三种方式
1)当不再需要某个数据表,用 DROP的 TABLE 删除方式
2)当要保留数据该数据表,删除所有数据时,使用truncate删除方式
3)当要删除部分数据或者存在找回数据时,使用delete删除方式
删除方法由强到弱如下:
drop 是直接删除表,无法找回
drop table 表名;
truncate是删除表中所有数据,但不能与where共同使用
truncate table 表名
dalete为删除表中数据,但可以与where一起使用,可删除特定行数据
--where一起使用,可删除特定行数据
DELETE FROM 表名 WHERE 条件;
--删除表中所有数据
DELETE FROM 表名
我们了解了三种删除方式,再来了解下truncate 和 delete 的区别:
truncate 和 delete 的区别:
事务:
truncate删除记录后不记录MySQL日志,因此不可以rollback,更不可以恢复数据;而delete是可以rollback
原因:truncate相当于保留原MySQL表的结果,重新创建了这个表,所有的状态都相当于全新的,而delete的效果相当于一行行删除,所以可以rollback
效果:
truncate比delete速度快,而且truncate删除后将重建索引(新插入数据后ID从0记起),而delete不会索引(新插入的数据将在删除数据的索引后继续增加)
truncate不会触发任何delete触发器
返回值
delete操作后返回删除的记录数,而truncate返回的是0或者-1(成功返回0,失败返回-1)
两者区别:如果只对一张表进行删除,则效果一样;如需要联合测试,则需要from进行匹配
delete tb2 from tb2 m where id in (select id from tb1)