数据库 / 06 SQL Drop

SQL Drop

1. 定义

维基百科:Drop指令用于在 RDBMS 中删除数据库,数据表,索引,和视图等。

慕课解释:Drop指令强大而又危险,它能迅速清理掉数据库垃圾,不过使用之前请仔细斟酌,在未备份的情况下,删除的数据很可能再也找不回来了。

2. 前言

本小节,我们将一起学习 SQL Drop

在数据库编程和运维中,可能经常性的需要删除掉某些无用的备份表、备份库和一些过期的视图。通过 Drop 指令我们可以轻松的完成这些操作。

提示: Drop 几乎可以清理掉数据库中的任何对象,因此在操作之前必须确保数据的安全性。

本小节测试数据如下,请先在数据库中执行:

DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
  username varchar(20),
  age int
);
ALTER TABLE imooc_user ADD INDEX age_index(age);

如果你是 PostgreSQL,那么请使用下面的语句:

CREATE TABLE imooc_user
(
  username varchar(20),
  age int
);
CREATE INDEX age_index ON imooc_user(age);

3. 删除数据库

Drop 指令可用于删除数据库。

删除数据库的语法如下:

DROP DATABASE [db_name];

其中db_name是待删除数据库名称。

3.1 例1 删除 imooc

请书写 SQL 语句,删除imooc数据库。

分析

按照语法删除 imooc 即可。

语句

DROP DATABASE imooc;

4. 删除数据表

使用 Drop 指令还可以用来删除数据表。

语法如下:

DROP TABLE [table_name];

其中table_name是待删除数据表名称。

4.1 例2 删除 imooc_user

请书写 SQL 语句,删除imooc_user数据表。

分析

调用 Drop 删除 imooc_user 即可。

语句

DROP TABLE imooc_user;

5. 清空表数据

Truncate 是另外一种实用的指令,可以在保留数据表的情况下清空数据表数据。

使用语法如下:

TRUNCATE TABLE [table_name];

其中table_name表示数据表名称。

5.1 例3 清空 imooc_user 数据

请书写 SQL 语句,清除imooc_user表中的所有数据。

分析

按照上面的语法清除即可,

语句

TRUNCATE TABLE imooc_user;

6. 删除表字段

Drop 可与 Alter 指令搭配来删除数据表字段。

语法如下:

ALTER TABLE [table_name] DROP [col];

其中table_name是数据表名称,col是待删除字段名称。

6.1 例4 删除 age 字段

请书写 SQL 语句,删除imooc_user表中的age字段。

分析

按照语法删除即可。

语句

ALTER TABLE imooc_user DROP age;

删除成功后,imooc_user表信息如下:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | YES  |     | <null>  |       |
+----------+-------------+------+-----+---------+-------+

7. 删除索引

Drop 还可与 Alter 指令搭配用来删除索引。

语法如下:

ALTER TABLE [table_name] DROP INDEX [index_name];

其中index_name代表索引名称。

PostgreSQL 删除索引语法如下:

DROP INDEX [index_name];

7.1 例5 删除 age_index 索引

请书写 SQL 语句,删除 imooc_user 表中的age_index索引。

分析

按照语法写出删除语句即可。

语句

ALTER TABLE imooc_user DROP INDEX age_index;

PostgreSQL 略有不同,语句如下:

DROP INDEX age_index;

8. 删除视图

使用 Drop 还可以用来删除无用的视图。

删除视图的语法如下:

DROP VIEW [view_name];

其中view_name表示视图名称,关于视图,我们将在 SQL 视图一节中再详细介绍。

9. 小结

  • Drop 是一个非常强大却又非常简单的指令,想要熟练地使用并不难,但是如何正确地使用、保证数据库的安全却不简单。