MySQL 删除数据表

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)

 

posted @ 2021-01-08 14:16  Centerless  阅读(727)  评论(0)    收藏  举报