SQL Drop
1. 定義
維基百科:
Drop
指令用于在 RDBMS 中刪除數(shù)據(jù)庫(kù),數(shù)據(jù)表,索引,和視圖等。
慕課解釋:
Drop
指令強(qiáng)大而又危險(xiǎn),它能迅速清理掉數(shù)據(jù)庫(kù)垃圾,不過(guò)使用之前請(qǐng)仔細(xì)斟酌,在未備份的情況下,刪除的數(shù)據(jù)很可能再也找不回來(lái)了。
2. 前言
本小節(jié),我們將一起學(xué)習(xí) SQL Drop
。
在數(shù)據(jù)庫(kù)編程和運(yùn)維中,可能經(jīng)常性的需要?jiǎng)h除掉某些無(wú)用的備份表、備份庫(kù)和一些過(guò)期的視圖。通過(guò) Drop 指令我們可以輕松的完成這些操作。
提示: Drop 幾乎可以清理掉數(shù)據(jù)庫(kù)中的任何對(duì)象,因此在操作之前必須確保數(shù)據(jù)的安全性。
本小節(jié)測(cè)試數(shù)據(jù)如下,請(qǐng)先在數(shù)據(jù)庫(kù)中執(zhí)行:
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,那么請(qǐng)使用下面的語(yǔ)句:
CREATE TABLE imooc_user
(
username varchar(20),
age int
);
CREATE INDEX age_index ON imooc_user(age);
3. 刪除數(shù)據(jù)庫(kù)
Drop 指令可用于刪除數(shù)據(jù)庫(kù)。
刪除數(shù)據(jù)庫(kù)的語(yǔ)法如下:
DROP DATABASE [db_name];
其中db_name
是待刪除數(shù)據(jù)庫(kù)名稱。
3.1 例1 刪除 imooc
請(qǐng)書寫 SQL 語(yǔ)句,刪除imooc
數(shù)據(jù)庫(kù)。
分析:
按照語(yǔ)法刪除 imooc 即可。
語(yǔ)句:
DROP DATABASE imooc;
4. 刪除數(shù)據(jù)表
使用 Drop 指令還可以用來(lái)刪除數(shù)據(jù)表。
語(yǔ)法如下:
DROP TABLE [table_name];
其中table_name
是待刪除數(shù)據(jù)表名稱。
4.1 例2 刪除 imooc_user
請(qǐng)書寫 SQL 語(yǔ)句,刪除imooc_user
數(shù)據(jù)表。
分析:
調(diào)用 Drop 刪除 imooc_user 即可。
語(yǔ)句:
DROP TABLE imooc_user;
5. 清空表數(shù)據(jù)
Truncate 是另外一種實(shí)用的指令,可以在保留數(shù)據(jù)表
的情況下清空數(shù)據(jù)表數(shù)據(jù)。
使用語(yǔ)法如下:
TRUNCATE TABLE [table_name];
其中table_name
表示數(shù)據(jù)表名稱。
5.1 例3 清空 imooc_user 數(shù)據(jù)
請(qǐng)書寫 SQL 語(yǔ)句,清除imooc_user
表中的所有數(shù)據(jù)。
分析:
按照上面的語(yǔ)法清除即可,
語(yǔ)句:
TRUNCATE TABLE imooc_user;
6. 刪除表字段
Drop 可與 Alter 指令搭配來(lái)刪除數(shù)據(jù)表字段。
語(yǔ)法如下:
ALTER TABLE [table_name] DROP [col];
其中table_name
是數(shù)據(jù)表名稱,col
是待刪除字段名稱。
6.1 例4 刪除 age 字段
請(qǐng)書寫 SQL 語(yǔ)句,刪除imooc_user
表中的age
字段。
分析:
按照語(yǔ)法刪除即可。
語(yǔ)句:
ALTER TABLE imooc_user DROP age;
刪除成功后,imooc_user
表信息如下:
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | YES | | <null> | |
+----------+-------------+------+-----+---------+-------+
7. 刪除索引
Drop 還可與 Alter 指令搭配用來(lái)刪除索引。
語(yǔ)法如下:
ALTER TABLE [table_name] DROP INDEX [index_name];
其中index_name
代表索引名稱。
PostgreSQL 刪除索引語(yǔ)法如下:
DROP INDEX [index_name];
7.1 例5 刪除 age_index 索引
請(qǐng)書寫 SQL 語(yǔ)句,刪除 imooc_user 表中的age_index
索引。
分析:
按照語(yǔ)法寫出刪除語(yǔ)句即可。
語(yǔ)句:
ALTER TABLE imooc_user DROP INDEX age_index;
PostgreSQL 略有不同,語(yǔ)句如下:
DROP INDEX age_index;
8. 刪除視圖
使用 Drop 還可以用來(lái)刪除無(wú)用的視圖。
刪除視圖的語(yǔ)法如下:
DROP VIEW [view_name];
其中view_name
表示視圖名稱,關(guān)于視圖,我們將在 SQL 視圖一節(jié)中再詳細(xì)介紹。
9. 小結(jié)
- Drop 是一個(gè)非常強(qiáng)大卻又非常簡(jiǎn)單的指令,想要熟練地使用并不難,但是如何正確地使用、保證數(shù)據(jù)庫(kù)的安全卻不簡(jiǎn)單。