ThinkPHP5数据库实例详解 /操作数据表之删除数据和表

操作数据表之删除数据和表

删除数据表

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`;
  • 运行结果:


二、清空数据表

清空数据表有二种方法

1、DELETE语句,不设置条件,相当于逐条删除;
2、TRUNCATE 直接清空数据表

1、DELETE 语句:

  • 实例:清空 tp_temp3
  • 语句:
DELETE FROM `tp5_temp3` ;


  • 执行思路:


    • 我们先查询一下未清空的数据
    • 清空数据表后,再插入一条新记录,查看主键的变化



运行结果:

还记得我们的要求吗?我们要求员工编号从: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;
  • 代码运行效果:

2、TRUNCATE 语句

  • 语法:
TRUNCATE TABLE 数据表名;
  • 风险提示:

    • 该操作无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;
  • 运行效果

总结:

1、如果彻底清空数据表,TRUNCATE的效率比DELETES高,记录越多越明显!
2、如果记录以后可能还要恢复,或者只是删除部分记录,就必须用DELETE语句。


三、删除数据表

语法

DROP TABLE IF EXISTS 表名 ;
  • 实例:删除tp5_temp3数据表

  • 语句:

#如果有tp5_temp3表,就执行删除操作 DROP TABLE IF EXISTS tp5_temp3; #查看当前库中的表 SHOW TABLES;
  • 运行结果:


总结:

数据记录与表的删除,有一定的危险性,操作前请再三确认~~