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)
   );

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable(Name) values('Larry');

mysql> insert into DemoTable(Name) values('Chris');

使用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;

如果尝试显示数据,将出现以下错误-

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)
   );

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable(FirstName) values('Chris');

mysql> insert into DemoTable(FirstName) values('Robert');

使用select语句显示表中的所有记录-

mysql> select *from DemoTable;

这将产生以下输出-

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

现在,实现TRUNCATE命令。执行TRUNCATE命令后,将从表中删除数据,并重新创建表结构。

mysql> TRUNCATE TABLE DemoTable;

现在您不会从表中获取任何数据,但是表结构将可见-

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)