0%

13.2.4 DDL语句 3.删除表的语法 4.truncate表

13.2.4 DDL语句 3.删除表的语法

删除表的语法格式如下:

1
drop table 表名;

实例

如下SQL语句将会把数据库中已有的wawa数据表删除:

1
drop table wawa;

运行效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> show tables;
+-----------------------+
| Tables_in_test_engine |
+-----------------------+
| user_inf |
| wawa |
+-----------------------+
2 rows in set

mysql> drop table wawa;
Query OK, 0 rows affected

mysql> show tables;
+-----------------------+
| Tables_in_test_engine |
+-----------------------+
| user_inf |
+-----------------------+
1 row in set
mysql>

删除数据表的效果如下。

  • 表结构被删除,
  • 表对象不再存在。
  • 表里的所有数据也被删除。
  • 该表所有相关的索引、约束也被删除。

4.truncate表

对于大部分数据库而言,truncate都被当成DDL处理,truncate被称为“截断”某个表——它的作用是删除该表里的全部数据,但保留表结构。相对于DML里的delete命令而言,truncate的速度要快得多,而且truncate不像delete可以删除指定的记录,truncate只能一次性删除整个表的全部记录。truncate命令的语法如下:

1
truncate 表名;

实例

1
truncate user_inf;

运行效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
mysql> show tables;
+-----------------------+
| Tables_in_test_engine |
+-----------------------+
| user_inf |
+-----------------------+
1 row in set

mysql> select * from user_inf;
+----+------+
| id | name |
+----+------+
| 1 | 小明 |
| 2 | 小王 |
+----+------+
2 rows in set

mysql> truncate user_inf;
Database changed

mysql> show tables;
+-----------------------+
| Tables_in_test_engine |
+-----------------------+
| user_inf |
+-----------------------+
1 row in set

mysql> desc user_inf;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | varchar(10) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set

mysql> select * from user_inf;
Empty set

mysql>

MySQLtruncate的处理比较特殊——如果使用非InnoDB存储机制,truncatedelete速度要快;如果使用InnoDB存储机制,在MySQL5.0.3之前,truncatedelete完全完全一样,在5.0.3之后,truncatetabledelete效率高,但如果该表被外键约束所参照,truncate又变为delete操作。在5.0.13之后,快速truncate总是可用,即比delete性能要好。

原文链接: 13.2.4 DDL语句 3.删除表的语法 4.truncate表