iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL点滴系列之删除数据(五)
  • 510
分享到

SQL点滴系列之删除数据(五)

SQL点滴系列之删除数据(五) 2022-02-07 17:02:13 510人浏览 才女
摘要

> 本节讲述 在数据库中删除表中的数据,以及 having 与 where 的分析 1 删除表中所有的记录 实际开发中,我们有时需要删除一个表中的所有的数据,我们可以使用 delete 命令来操作 delete

SQL点滴系列之删除数据(五)

> 本节讲述 在数据库中删除表中的数据,以及 having 与 where 的分析

1 删除表中所有的记录

实际开发中,我们有时需要删除一个表中的所有的数据,我们可以使用 delete 命令来操作

delete from t_user
2 删除表中指定的记录

删除表中指定数据或者说是满足某些条件的数据,我们可以使用 where 子句,例如删除表中 年龄小于 18 岁的用户,我们可以这样写

delete from t_user where user_age <18

这里使用到的是满足条件的记录,如果要删除单个记录,那么在指定的判断条件一般使用 主关键字或其他唯一的关键字来作为判别条件,例如我们这样写

delete from t_user where user_id =118

在这里使用到的 user_id 就是用户表中用户的唯一关键标识,所以这里只是删除了其中一条数据。

3 删除违反参照完整性的记录

例如,某些用户员工被分配到了一个不存在的部门中,要将这些员工删除,那么我们可以使用 not exists 和子查询来判断删除

delete from t_emp e
     where not  exists (
       select * from t_dep d where  d.did = e.did
)

也可以使用 not in 来查询

delete from t_emp  e
where  e.did not in (select d.did from t_dep d)

> t_emp 表用来保存被分配部门的用户信息数据 > t_dep 表用来保存部门信息

4 删除表中的重复记录

例如在表 t_dup 中有这样的数据 在这里插入图片描述 我们想保留一个 name 为张三的记录,其他 name 为张三的记录,不需要关心 id 是多少,最终表中只有一条有关张三的记录,我们可以这样写

delete from t_dup 
  where id not in (select min(id) from t_dup group by name)

Mysql 中,使用上述写法会有异常

Error : You can"t specify target table "t_dup" for update in FROM clause

不能先select出同一表中的某些值,再update这个表(在同一语句中),所以在 mysql 中可以这样写

delete from t_dup
 where name in (
		select t.name from
			(
				select name from t_dup group by name HAVING count(1) > 1
			) t
	)

要删除重复记录,首先要明确定义这个重复的概念,也就是说你要删除什么样的重复数据,而在上述的操作中,定义的是 name 是重复的

5 删除从其他表引用的记录

从一个表中删除被另一个表中引用的记录,例如下面的表中记录来了来透支经费的部门,每行记录了透支发生的部门与透支金额以及事由

在这里插入图片描述 例如在这里我们需要删除所在部门已经发生了三次以上的透支申请的所有部门的记录,在这里我们可以这样来写

delete from t_emp 
 where dep_id in(select acc_dep_id from t_acc group by acc_dep_id having count(*) >=3)

上述sql 操作中,子查询

select acc_dep_id from t_acc group by acc_dep_id having count(*) >=3)

这里用来查询那些发生过三次以上的透支申请的部门,然后 delete 命令将删除由子查询返回的部门。

6 HAVING 关键字一谈

HAVING 子句可以让我们筛选分组后的各组数据,也就是说HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。

6.1 SQL语言中中的聚合函数

例如 SUM, COUNT, MAX, AVG等这些函数和其它函数的根本区别就是它们一般作用在多条记录上

select sum(acc_count) from t_acc

如上 通过 sum 函数来统计 所有部门的透支金额 通过使用 GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用

6.2 显示每个地区的总人口数和总面积
select region, sum(population), sum(area)
 from t_user_city group by region

先以region把返回记录分成多个组,这就是GROUP BY的字面含义,分完组后,然后用聚合函数 sum 对每组中的不同字段(一或多条记录)作运算。

然后我们在上述的查询结果再进一步筛选,显示每个地区的总人口数和总面积,但人口数量超过1000000的地区,我们可以这样来写

select region, sum(population), sum(area)
 from t_user_city group by region
  having sum(population)>1000000

在这里使用到了 having 来筛选了数据,没有使用 where 关键字,where关键字有个区别是where是group by之前进行条件筛选,而having是group by之后进行条件筛选,我们上述的需求,是需要在分组之后筛选,还有一点就是where后的条件表达式里不允许使用聚合函数,而having可以。

您可能感兴趣的文档:

--结束END--

本文标题: SQL点滴系列之删除数据(五)

本文链接: https://www.lsjlt.com/news/4574.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python pandas数据处理之删除特定行与列
    目录dropna() 方法过滤任何含有缺失值的行方法一:dropna() 其他参数解析方法二:替换并删除,Python pandas 如果某列值为空,过滤删除所在行数据总结dropn...
    99+
    2024-04-02
  • sql语句怎么删除数据
    这篇文章主要介绍sql语句怎么删除数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql语句删除数据的方法如果我们要删除数据库中表的数据,可以使用DELETE语句。DELE...
    99+
    2024-04-02
  • sql怎么删除表中数据
    要删除表中的数据,可以使用以下 SQL 语句: DELETE FROM 表名; 例如,如果要删除名为"users...
    99+
    2024-04-09
    sql
  • sql如何删除多条数据
    要删除多条数据,可以使用DELETE语句并在WHERE子句中指定条件来删除满足条件的数据。例如,要删除table_n...
    99+
    2024-04-16
    sql
  • SQL怎么删除重复数据
    这篇文章主要介绍“SQL怎么删除重复数据”,在日常操作中,相信很多人在SQL怎么删除重复数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL怎么删除重复数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-02
  • mongodb中怎么删除数据列
    在MongoDB中删除数据列,需要使用`$unset`操作符,以下是删除数据列的步骤:1. 使用`update()`函数来更新数据集...
    99+
    2023-08-23
    mongodb
  • 【Mysql系列】mysql中删除数据的几种方法
    写在前面  在MySQL数据库中,删除数据是一个常见的操作,它允许从表中移除不再需要的数据。在执行删除操作时,需要谨慎,以免误删重要数据。 方法介绍 以下是MySQL中删除数据的几种方法: DELETE语句DROP T...
    99+
    2023-09-17
    mysql 数据库 原力计划
  • sql怎么删除数据表中的数据
    要删除数据表中的数据,可以使用 SQL 中的 DELETE 语句。 语法如下: DELETE FROM table_name...
    99+
    2024-04-08
    sql
  • sql数据库删除数据怎么恢复
    小编给大家分享一下sql数据库删除数据怎么恢复,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前...
    99+
    2024-04-02
  • 删除表数据的sql怎么写
    这篇文章给大家分享的是有关删除表数据的sql怎么写的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。一、SQL中的删除语法1、drop table 表名称   &...
    99+
    2024-04-02
  • sql注入怎么删除表数据
    sql注入删除表数据的方法:例如直接在网站登录页面账号输入框中填写'123'这种格式,接着密码框填写'456'; DROP TABLE user这种形式,最后在数据库中解析成完整语句如下:SELECT * FROM userLogi...
    99+
    2024-04-02
  • sql删除数据的3种方法
    一、delete删除数据 delete from 表名 where codition 这行代码可以删除记录表中的记录,但是并不能释放数据库中被占用的数据块表空间(删除表数据,保留表结构,可以加where)。...
    99+
    2023-09-01
    mysql Powered by 金山文档
  • SQL删除重复数据的方法
    这篇文章将为大家详细讲解有关SQL删除重复数据的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在sql中,可以使用select语句删除重复数据,语法为:“s...
    99+
    2024-04-02
  • oracle如何删除某一列数据
    要在Oracle数据库中删除某一列数据,可以使用ALTER TABLE语句和DROP COLUMN子句来完成。下面是删除某一列数据的...
    99+
    2024-04-15
    oracle
  • Java数据结构之删除链表中重复的结点
    目录解析一:(不提倡)解析二:(正解)核心考点:链表操作,临界条件检查,特殊情况处理 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。...
    99+
    2024-04-02
  • sql如何删除完全重复数据
    要删除完全重复的数据,可以使用以下SQL语句:```sqlDELETE FROM table_nameWHERE (...
    99+
    2023-08-08
    sql
  • sql怎么删除指定条件数据
    要删除指定条件的数据,可以使用 DELETE 语句。语法如下: DELETE FROM 表名 WHERE 条件; 其...
    99+
    2023-10-26
    sql
  • sql如何删除表中某个数据
    要删除表中的特定数据,您可以使用DELETE语句。假设您有一个名为table_name的表,并且要删除具有特定条件的数据,则...
    99+
    2024-04-11
    sql
  • sql怎么删除表内所有数据
    要删除表内所有数据,可以使用以下 SQL 语句: DELETE FROM table_name; 其中 table_nam...
    99+
    2024-04-18
    sql
  • SQL Server中怎么删除重复数据
    这篇文章将为大家详细讲解有关SQL Server中怎么删除重复数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。方法一复制代码 代码如下: declare...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作