## 删除数据表 >[info] 1、数据表创建好以后,对数据的增删改查操作不可避免。 2、可以根据条件删除部分记录,也可以删除全部记录。 3、清空数据后,对主键的处理很重要。 ### 一、删除部分记录 #### 语法: ~~~ DELETE FROM 表名 WHERE 条件 ; ~~~ #### 实例:删除tp5_temp3中id为1009和1010的记录 * 代码如下: ~~~ #先查看删除之前的记录,用来做对比 SELECT * FROM `tp5_temp3` ; #删除指定记录 DELETE FROM tp5_temp3 WHERE id IN (1009,1010); #查看删除后的结果集,确认已删除 SELECT * FROM `tp5_temp3`; ~~~ * 运行结果: ![](https://box.kancloud.cn/2d7349d8188498ae635ec4d5103d93a1_1184x877.png) * * * * * ### 二、清空数据表 #### 清空数据表有二种方法 >[info] 1、DELETE语句,不设置条件,相当于逐条删除; 2、TRUNCATE 直接清空数据表 #### 1、DELETE 语句: * 实例:清空 tp_temp3 * 语句: ~~~ DELETE FROM `tp5_temp3` ; ~~~ * 执行思路: >[info] * 我们先查询一下未清空的数据 > * 清空数据表后,再插入一条新记录,查看主键的变化 ##### 运行结果: ![](https://box.kancloud.cn/afc49bd8b47f876d8ad39ad21c65e921_1215x860.png) >[info] 还记得我们的要求吗?我们要求员工编号从:1001开始,所以需要手工指定一下开始的主键,因此我们对代码进行改进: * 代码如下: ~~~ # 修改一下表结构,设置主键和约束条件 ALTER TABLE tp5_temp3 CHANGE id id INT(4) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT ; #设置自增起始于1001 ALTER TABLE tp5_temp3 AUTO_INCREMENT = 1001; #插入一条数据,便于查看效果 INSERT tp5_temp3 (name,age,salary,dept,hiredate)VALUES ('小潘潘',30,1090,'开发部','2010-12-02'); #验证主键是否已正确设置成功 SELECT * FROM tp5_temp3; ~~~ * 代码运行效果: ![](https://box.kancloud.cn/6f08bcb64ef0ffd8d2a6490e73e089df_1187x832.png) #### 2、TRUNCATE 语句 * 语法: ~~~ TRUNCATE TABLE 数据表名; ~~~ * 风险提示: >[danger] * 该操作无MySQL操作日志; > * 数据删除后不可以恢复; > * 将表恢复到新建状态,自增主键从1开始。 * 实例:清空tp5_temp3表,主键从1重新开始 * 代码: ~~~ # 清除表中全部记录,重置自增主键为 1 TRUNCATE TABLE tp5_temp3; #插入一条数据,便于查看效果 INSERT tp5_temp3 (name,age,salary,dept,hiredate)VALUES ('冰冰',18,8090,'财务部','2012-10-02'); #验证主键是否已正确设置成功 SELECT * FROM tp5_temp3; ~~~ * 运行效果 ![](https://box.kancloud.cn/321db4ef7612abb5520d6d72af316f88_1215x860.png) #### 总结: >[success] 1、如果彻底清空数据表,TRUNCATE的效率比DELETES高,记录越多越明显! 2、如果记录以后可能还要恢复,或者只是删除部分记录,就必须用DELETE语句。 * * * * * ### 三、删除数据表 #### 语法 ~~~ DROP TABLE IF EXISTS 表名 ; ~~~ * 实例:删除tp5_temp3数据表 * 语句: ~~~ #如果有tp5_temp3表,就执行删除操作 DROP TABLE IF EXISTS tp5_temp3; #查看当前库中的表 SHOW TABLES; ~~~ * 运行结果: ![](https://box.kancloud.cn/10670928d3e1f066dfe15583a1060cf5_1114x775.png) * * * * * ### 总结: >[danger] 数据记录与表的删除,有一定的危险性,操作前请再三确认~~</span>