要从数据库中删除数据,需要一个新的SQL命令:DELETE。我们将在一个新的Remove email脚本中使用DELETE,它从数据表中删除客户的数据。实际上,为此我们需要一个新的脚本和一个新的web 表单,不过首先需要了解DELETE。DELETE是SQL命令,它会从一个数据表删除数据行。正因如此,使用时要特别当心,因为它完全能够在眨眼之间就爱那个填满数据的一个表完全清空。
DELETE可以用来精确地指定一个或一些特定的行进行删除。要用DELETE精确地指定想要删除的行,需要增加一个WHERE子句。如果还记得SELECT命令中使用的WHERE子句,应该知道利用WHERE可以抽取出一个查询中的特定行。通过在WHERE命令中使用WEHERE子句,我们可以准确地指定要删除的特定数据行,而不是清空整个表。WHERE子句允许我们只关注向要删除的行。WHERE子句中的具体测试会完成一个比较,对于表中的每一行都会做这样一个比较。等号会检查表中列的各个值,来查看哪些行的值与表中的值匹配,则删除该行。
要了解重要的一点,尽管可以在WHERE子句中使用任何列名来匹配行,但是我们选择了email列完成DELETE查询,对此有一个很充分的原因。要知道,如果不只有一行与一个WHERE子句匹配,那么所有匹配的行都将被删除。所以WHERE子句必须准确地指定想要删除的行,这一点只管重要。
现在讨论的实际上是唯一性的问题。完全可以假定表中的值是唯一的。如果只是想要删除一个客户,你肯定不希望建立一个将表中列与之匹配的WHERE子句——这样一来,最后会把所有名为该列的客户都统统删除。正是因为这个原因,我们将WHERE子句精心设计为使用email列查找特定的匹配。