
4.3 删除数据
从数据表中删除数据使用DELETE语句,DELETE语句允许WHERE子句指定删除条件。DELETE语句基本语法格式如下:
DELETE FROM table_name [WHERE <condition>];
table_name指定要执行删除操作的表;“[WHERE <condition>]”为可选参数,指定删除条件,如果没有WHERE子句,那么DELETE语句将删除表中的所有记录。
【例4.11】在person表中,删除id等于11的记录,SQL语句如下:
执行删除操作前,使用SELECT语句查看当前id等于11的记录:

可以看到,现在表中有id等于11的记录。下面使用DELETE语句删除该记录,语句执行结果如下:

语句执行完毕,查看执行结果:

查询结果为空,说明删除操作成功。
【例4.12】在person表中,使用DELETE语句同时删除多条记录,在前面的UPDATE语句中,将age字段值在19~22之间的记录的info字段值修改为student,在这里删除这些记录,SQL语句如下:
DELETE FROM person WHERE age BETWEEN 19 AND 22;
执行删除操作前,使用SELECT语句查看当前的数据:

可以看到,这些age字段值在19~22之间的记录存在于表中。下面使用DELETE删除这些记录:

语句执行完毕,查看执行结果:

查询结果为空,删除多条记录成功。
【例4.13】删除person表中所有记录,SQL语句如下:
DELETE FROM person;
执行删除操作前,使用SELECT语句查看当前的数据:

结果显示person表中还有4条记录,执行DELETE语句删除这4条记录:

语句执行完毕,查看执行结果:

查询结果为空,删除表中所有记录成功,现在person表中已经没有任何数据记录。
提示
如果想删除表中的所有记录,那么还可以使用TRUNCATE TABLE语句,TRUNCATE将直接删除原来的表,并重新创建一个表,其语法结构为TRUNCATE TABLE table_name。TRUNCATE直接删除表,而不是删除记录,因此执行速度比DELETE快。