SQL DELETE查询
SQL DELETE 语句
SQL DELETE 语句用于从现有表中删除记录。为了筛选要删除的记录(或者删除特定记录),我们需要使用 WHERE 子句和DELETE语句。
如果执行DELETE语句时没有使用WHERE子句,它将删除表中的所有记录。
使用DELETE语句,我们可以删除单个表的一个或多个行以及多个表的记录。
语法
带有WHERE子句的SQL DELETE查询的基本语法如下所示−
您可以使用AND或OR运算符来组合N个条件。
示例
假设我们创建了一个名为 CUSTOMERS 的表,该表包含客户的个人详细信息,包括姓名、年龄、地址和薪水等,如下所示:
现在,使用INSERT语句按照以下方式将值插入到这个表中:
表将以以下方式创建:
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
以下查询删除了ID为6的客户的记录。
输出
输出结果如下 –
验证
为了验证记录是否已从表中删除,我们需要使用SELECT查询检索修改后的表格,如下所示:
现在,CUSTOMERS表将具有以下记录−
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
删除多行
要从表中删除多行,我们需要使用WHERE子句来指定满足所有要删除行的条件。让我们看一个例子:
示例
从相同的Customers表中,让我们试着删除年龄超过25岁的顾客的记录。
输出
输出将会显示为 −
验证
为了验证记录是否已从表中删除,请让我们检索修改过的表。为此,请使用下面的SELECT查询:
上述查询将生成以下表格-
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
从表中删除所有记录
如果我们想要使用DELETE查询从现有表中删除所有记录(截断表),我们只需要在查询中不使用WHERE子句即可。
示例
以下SQL查询从CUSTOMERS表中删除所有记录-
输出
输出结果将显示为−
验证
为了验证表中的所有记录是否已删除,我们需要再次使用SELECT查询检索修改后的表-
现在,CUSTOMERS表将不包含任何记录,并将显示以下输出 –
删除多个表中的记录
SQL允许我们使用DELETE查询从多个表中删除记录。在这里,我们将使用JOIN子句基于一个公共列来合并来自多个表的数据。
示例
让我们创建另一个名为ORDERS的表,其中包含客户下的订单的详细信息。
使用INSERT语句,按以下方式将值插入到该表中:
创建的表格如下所示 –
OID | DATE | CUSTOMER_ID | AMOUNT |
---|---|---|---|
102 | 2009-10-08 00:00:00 | 3 | 3000.00 |
100 | 2009-10-08 00:00:00 | 3 | 1500.00 |
101 | 2009-11-20 00:00:00 | 2 | 1560.00 |
103 | 2008-05-20 00:00:00 | 4 | 2060.00 |
以下SQL查询删除了那些收入超过2000并且有下过订单的客户的记录(来自CUSTOMERS表和ORDERS表) −
输出
输出将以如下方式显示:
验证
要验证记录是否已从表中删除,我们需要再次使用SELECT查询检索修改后的表。
CUSTOMERS表中没有工资大于2000并且ID与ORDERS表中的CUSTOMER_ID列匹配的记录。
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | MP | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
同样,如果你验证ORDERS表如下所示 –
由于薪水大于2000,并且CUSTOMER_ID与CUSTOMERS表中的ID值匹配,最后一条记录(OID 103)的ORDERS表将被删除 –
OID | DATE | CUSTOMER_ID | AMOUNT |
---|---|---|---|
102 | 2009-10-08 00:00:00 | 3 | 3000.00 |
100 | 2009-10-08 00:00:00 | 3 | 1500.00 |
101 | 2009-11-20 00:00:00 | 2 | 1560.00 |