很多时候,我们都需要从关系数据库中删除掉陈旧过时的信息。所幸的是,结构化查询语言提供了一个DELETE命令,用于灵活地删除储存在一个表内的部分或全部信息。
让我们来看看该命令的语法:
DELETE FROM {table name | view name} [WHERE search_conditions] |
命令本身十分简单:其中只有两个变量,一个是需要删除信息的表或视图,另一个是搜索条件。
我们先来谈谈删除的对象。依照ANSI SQL标准,我们既可以选择一个表格中删除数据也可以选择从一个视图中删除数据。不管怎样,强烈建议读者尽量避免对一个视图使用DELETE命令(出于同样的原因,也尽可能避免对视图使用任何数据处理的命令)。某些版本的SQL可能不支持这个语法,因此,对视图的修改可能会导致一些难以预料的错误。
search_conditions参数对于SQL的初学者来说也并不新奇――它和SELECT语句中用到的search_conditions参数格式相同。其中可以使用任何比较操作符来限制从表格中删除的数据。注意,search_conditions事实上是一个可选项(因此用方括号括起),省略该项将会删除整个表格的内容。
现在让我们来看一些实例。首先,我们要创建一个表格,并添加一些数据——为一所高中创建一个学生名录。根据您的数据库管理系统,执行以下的SQL代码:
CREATE TABLE students ( first_name varchar(50), last_name varchar(50), id integer PRIMARY KEY ) INSERT INTO students VALUES ('小明', '张', 273) INSERT INTO students VALUES ('小马', '任', 321) INSERT INTO students VALUES ('小军', '史', 243) INSERT INTO students VALUES ('小安', '彭', 131) INSERT INTO students VALUES ('小超', '白', 190) INSERT INTO students VALUES ('小斌', '林', 421) |
林小斌同学由于学习成绩非常优秀被批准提前毕业。因此,我们需要把他从数据库中删除。作为一个使用SQL的老手,我们知道当我们想要选择一个单独的记录时,一定要谨慎的运用搜索条件中的主关键词(primary key),以防不小心删除了相似的记录。以下是我们使用的语法:
DELETE FROM students
WHERE id = 421
修改后表格的内容如下:
first_namelast_nameid
小马任321
小安彭131
小超白190
小军史243
小明张273
现在让我们来尝试一些稍微复杂一点的操作――删除学号介于240至290间的所有学生。以下是该操作的SQL脚本:
DELETE FROM students
WHERE id BETWEEN 240 AND 290
修改后的新表格如下:
first_name last_name id
小安彭131
小超白190
小马任321
最后,我们很遗憾告诉大家,由于入学人数过少,学校不得不倒闭了。为了尊重学生的隐私,我们需要删除表格中的所有数据。相关的SQL命令脚本如下:
DELETE FROM students
以上是对DELETE语句的一个简单介绍,经常上IT专家网查看关于数据库方面的新文章,可以学习到更多关于SQL语句的知识。 |