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)
廣告