MySQL 的 DROP TABLE 命令是完全刪除表還是隻刪除表結構?


DROP TABLE 命令會完全刪除表,包括所有資料。如果您想完全刪除所有資料但保留表結構,可以使用 TRUNCATE TABLE 命令。TRUNCATE 命令會重新建立表。

讓我們首先檢查 DROP TABLE 命令。為此,我們將首先建立一個表:

mysql> create table DemoTable
   (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Name varchar(20)
   );
Query OK, 0 rows affected (0.20 sec)

使用 INSERT 命令在表中插入一些記錄:

mysql> insert into DemoTable(Name) values('Larry');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.05 sec)

使用 SELECT 語句顯示錶中的所有記錄:

mysql> select *from DemoTable;

這將產生以下輸出:

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Larry |
| 2  | Chris |
+----+-------+
2 rows in set (0.00 sec)

現在,使用 DROP TABLE 命令。執行 DROP TABLE 命令後,資料將被刪除,並且不會有任何表結構。

mysql> DROP TABLE DemoTable;
Query OK, 0 rows affected (0.18 sec)

如果您嘗試顯示資料,將會收到以下錯誤:

mysql> select *from DemoTable;
ERROR 1146 (42S02): Table 'hb_student_tracker.DemoTable' doesn't exist

您甚至不會得到表結構:

mysql> desc DemoTable;
ERROR 1146 (42S02): Table 'hb_student_tracker.DemoTable' doesn't exist

讓我們實現 TRUNCATE 命令。

mysql> create table DemoTable
   (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName varchar(20)
   );
Query OK, 0 rows affected (0.63 sec)

使用 INSERT 命令在表中插入一些記錄:

mysql> insert into DemoTable(FirstName) values('Chris');
Query OK, 1 row affected (0.08 sec)

mysql> insert into DemoTable(FirstName) values('Robert');
Query OK, 1 row affected (0.07 sec)

使用 SELECT 語句顯示錶中的所有記錄:

mysql> select *from DemoTable;

這將產生以下輸出:

+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | Chris     |
| 2  | Robert    |
+----+-----------+
2 rows in set (0.00 sec)

現在,執行 TRUNCATE 命令。執行 TRUNCATE 命令後,資料將從表中刪除,並且表結構將被重新建立。

mysql> TRUNCATE TABLE DemoTable;
Query OK, 0 rows affected (0.06 sec)

現在您將無法從表中獲取任何資料,但表結構將可見:

mysql> select *from DemoTable;
Empty set (0.00 sec)

以下是獲取表結構的查詢:

mysql> desc DemoTable;

這將產生以下輸出:

+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| Id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| FirstName | varchar(20) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

更新於:2019年7月30日

79 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告