MySQL DROP TABLE会完全删除表还是仅删除结构?
DROPTABLE会完全删除该表,并且还会删除所有数据。如果要完全删除所有数据并需要表结构,则可以使用TRUNCATETABLE命令。TRUNCATE命令将重新创建表。
让我们首先检查DROPTABLE。为此,我们将首先创建一个表-
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)
现在,使用DROPTABLE命令。执行DROPTABLE命令后,数据将被删除,并且将没有任何表结构。
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)