
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - 布林 (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION 與 UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線與右連線
- SQL - Union 與 Join
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 複合鍵
- SQL - 備用鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 叢集索引
- SQL - 非叢集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By 與 Order By
- SQL - IN 與 EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - 刪除表
SQL 提供命令來完全刪除資料庫中現有的表。一旦發出 SQL DROP 命令,就無法恢復該表,包括其資料,因此在生產系統中發出此命令之前要小心。
SQL DROP 表語句
SQL 的 **DROP TABLE** 語句是資料定義語言 (DDL) 命令,用於刪除表的定義及其資料、索引、觸發器、約束和許可權規範(如果有)。
**注意** -
使用此命令時要非常小心,因為一旦刪除了表,該表中所有可用資訊也將永遠丟失。
如果表已分割槽,則該語句將刪除表定義、其所有分割槽、儲存在這些分割槽中的所有資料以及所有分割槽定義。
要在資料庫中刪除表,必須對該表具有 ALTER 許可權,對錶模式具有 CONTROL 許可權。
儘管它是一個數據定義語言命令,但它與 TRUNCATE TABLE 語句不同,因為 DROP 語句完全釋放了表佔用的記憶體。
DROP TABLE 會導致隱式提交,除非與 TEMPORARY 關鍵字一起使用。
語法
此 DROP TABLE 語句的基本語法如下所示 -
DROP TABLE table_name;
示例
假設我們使用 CREATE TABLE 語句建立了一個名為 CUSTOMERS 的表,如下所示 -
CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
讓我們首先使用 DESC 命令驗證 CUSTOMERS 表,然後將其從資料庫中刪除 -
DESC Table
如果表已成功建立,則 DESC 命令將顯示錶的結構,如下所示 -
欄位 | 型別 | 空 | 鍵 | 預設值 | 額外 |
---|---|---|---|---|---|
ID | int(11) | 否 | PRI | NULL | |
NAME | varchar(20) | 否 | NULL | ||
AGE | int(11) | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | NULL |
這意味著 CUSTOMERS 表存在於資料庫中,因此讓我們現在將其刪除,如下所示。
DROP TABLE CUSTOMERS;
輸出
輸出如下所示 -
Query OK, 0 rows affected (0.001 sec)
驗證
現在,要驗證表是否已實際刪除,可以使用 DESC CUSTOMERS 命令,如下所示 -
DESC CUSTOMERS;
顯示以下錯誤 -
ERROR 1146 (42S02): Table 'tutorials.CUSTOMERS' doesn't exist
使用 SQL DROP 命令刪除 MySQL 表時,專門授予該表的許可權不會自動刪除。它們必須手動刪除。
IF EXISTS 子句
您可以使用 DROP TABLE 語句中的 IF EXISTS 子句,而不是始終檢查表在資料庫中是否存在然後再刪除它。
此子句在 DROP TABLE 查詢中指定時,將自動檢查表是否存在於當前資料庫中,如果存在則將其刪除。如果表不存在於資料庫中,則將忽略該查詢。
語法
以下是 DROP TABLE IF EXISTS 的基本語法 -
DROP TABLE [IF EXISTS] table_name;
示例
如果您嘗試刪除資料庫中不存在的表,而不使用 IF EXISTS 子句,如下所示 -
DROP TABLE CUSTOMERS;
將生成錯誤 -
ERROR 1051 (42S02): Unknown table 'tutorials.CUSTOMERS'
如果您將 **IF EXISTS** 子句與 DROP TABLE 語句一起使用,如下所示,則將刪除指定的表,如果資料庫中不存在具有給定名稱的表,則將忽略該查詢。
但是,如果您嘗試刪除資料庫中不存在的表,使用 IF EXISTS 子句,如下所示 -
DROP TABLE IF EXISTS CUSTOMERS;
該查詢將被忽略,並顯示以下輸出 -
Query OK, 0 rows affected, 1 warning (0.001 sec)
DROP - 臨時表
您可以將 **TEMPORARY** 關鍵字與 DROP TABLE 語句一起使用,這將僅刪除臨時表。包含 TEMPORARY 關鍵字是防止意外刪除非臨時表的好方法。
語法
DROP TEMPORARY TABLE TEMP_TABLE;
示例
以下是如何刪除名為 CUSTOMERS 的臨時表的示例。
DROP TEMPORARY TABLE CUSTOMERS;