数据库 ----连表查询篇

数据库 ----连表查询篇

一、rowid 和 rownum

​ ROWID 是 ORACLE 中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。ROWID 它是一个伪列,它并不实际存在于表中。它是 ORACLE 在读取表中数据行时,根据每一行数据的物理地址信息编码而成的一个伪列。所以根据一行数据的 ROWID 能找到一行数据的物理地址信息。从而快速地定位到数据行。数据库的大多数操作都是通过 ROWID 来完成的,而且使用 ROWID 来进行单记录定位速度是最快的。我们可以将其用于删除重复数据。
​ ROWNUM 是一种伪列,它会根据返回记录生成一个序列化的数字。排序后的结果集的顺序号 ,每一个结果集 都有自己顺序号 ,不能直接查询大于 1 的数。利用ROWNUM,我们可以生产一些原先难以实现的结果输出。 例如实现分页操作。
​ ps: oracle 中 索引从 1 开始,java 程序 从 0 开始
1、rowid
​ 实现重复记录的删除

源码:

insert into tb_student values(1,‘张三’,‘语文’,81);
insert into tb_student values(2,‘张三’,‘数学’,75);
insert into tb_student values(3,‘李四’,‘语文’,86);
insert into tb_student values(4,‘李四’,‘数学’,90);
insert into tb_student values(5,‘王五’,‘语文’,81);
insert into tb_student values(6,‘王五’,‘数学’,100);
insert into tb_student values(7,‘王五’,‘英语’,90);
commit;
select * from tb_student;

–1.根据名字,课程,分数分组
select name,course,score from tb_student group by name,course,score;

–2.找到每个数据唯一的一条
–因为rowid是唯一的,所以找到rowid就可以了,但是找到的数据是经过去重的,是组函数,所以不能直接用rowid
select name,course,score,min(rowid) from tb_student group by name,course,score;
–3.找到要删除的重复的数据
select rowid
from tb_student
where not rowid in
​ (select min(rowid) from tb_student group by name, course, score);
–4. 最终 删除重复的数据
delete from tb_student where not rowid in
​ (select min(rowid) from tb_student group by name, course, score);

图片:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是一种流行的关系型数据库管理系统,它提供了用于存储、管理和检索数据的强大功能。在Java开发中,我们可以通过MySQL来创建和操作数据库,实现各种应用程序。 在进行MySQL数据库应用开发时,我们首先需要连接到MySQL数据库。这可以通过使用Java中的JDBC(Java Database Connectivity)API来实现。我们可以使用JDBC提供的API进行数据库连接、执行SQL语句以及获取结果等操作。 一旦连接到了MySQL数据库,我们可以创建来存储数据。可以使用Java的SQL语句来创建、插入数据、更新数据和删除数据等。例如,可以使用CREATE语句创建,使用INSERT语句将数据插入中。 在Java中,我们可以使用PreparedStatement对象执行带有参数的SQL语句,以防止SQL注入攻击。通过将参数传递给PreparedStatement对象,可以执行诸如询、更新和插入等操作,并获取结果或受影响的行数。 在开发过程中,我们可以使用MySQL提供的各种功能来处理数据。例如,可以使用SELECT语句从中检索数据,并使用WHERE子句进行条件过滤。还可以使用JOIN语句在多个之间建立关联关系并检索相关数据。 此外,我们还可以使用MySQL提供的功能来处理事务。在Java中,我们可以使用Connection对象来控制事务的提交和回滚。这样可以确保多个数据库操作要么全部成功,要么全部失败。 总之,MySQL在Java开发中是一个重要的数据库应用开发工具。通过使用Java的JDBC API和MySQL提供的功能,我们可以轻松地创建和操作数据库,实现各种应用程序的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值