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)
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP