[学习笔记] Oracle集合运算、内连接、外连接、伪列「建议收藏」

[学习笔记] Oracle集合运算、内连接、外连接、伪列「建议收藏」集合运算 INTERSECT(交集),返回两个查询共有的记录。 UNION ALL(并集重复),返回各个查询的所有记录,包括重复记录。 UNION(并集不重复),返回各个查询的所有记录,不包括重复记录

[学习笔记] Oracle集合运算、内连接、外连接、伪列

集合运算

  • INTERSECT(交集),返回两个查询共有的记录。

  • UNION ALL(并集重复),返回各个查询的所有记录,包括重复记录。

  • UNION(并集不重复),返回各个查询的所有记录,不包括重复记录 。

  • MINUS(补集),返回第一个查询的记录减去第二个查询的记录之后剩余的记录。

-- 交集
select * from stuinfo1 
intersect
select * from stuinfo2;

-- 并集重复
select * from stuinfo1 
union all
select * from stuinfo2;

-- 并集不重复
select * from stuinfo1 
union 
select * from stuinfo2;

-- 补集
select * from stuinfo1 
minus
select * from stuinfo2;

代码100分

内连接

两张表通过某个字段进行内关联,查询结果是通过该字段按关系运算符匹配出的数据行。

代码100分select a.stuid, a.stuname, a.classno,
       b.classno, b.classname, b.monitorid, b.monitorname
from stuinfo a, class b
where a.classno = b.classno;

外连接

  • left join:等价于 left outer join,返回左表中的所有记录和右表中联结字段相等的记录。

  • right join:等价于 right outer join,返回右表中的所有记录和左表中联结字段相等的记录。

  • full join:等价于 full outer join,查询结果等于左外连接和右外连接的和。

--左外连接(stuinfo1表中数据都保留,stuinfo2不在stuinfo1中存在的字段为null值)
select a.*, b.stuid, b.stuname
from stuinfo1 a left join stuinfo2 b
on a.stuid = b.stuid;

--左外连接另外一种写法
select a.*, b.stuid, b.stuname
from stuinfo1 a,stuinfo2 b 
where a.stuid = b.stuid(+);

--右外连接(stuinfo2表中数据都保留,stuinfo1不在stuinfo2中存在的字段为null值)
select a.*, b.stuid, b.stuname
from stuinfo1 a right join stuinfo2 b
on a.stuid = b.stuid;

--右外连接另外一种写法
select a.*, b.stuid, b.stuname
from stuinfo1 a,stuinfo2 b 
where a.stuid(+)=b.stuid;

--全外连接(stuinfo1、stuinfo2表中数据都保留,stuinfo1不在stuinfo2存在的学生相关字段为null值,stuinfo2不在stuinfo1存在的学生相关字段为null值)
select a.*, b.stuid, b.stuname
from stuinfo1 a full join stuinfo2 b
on a.stuid = b.stuid;

伪列

  • ROWID:返回数据在数据文件中的物理地址。ROWID 值可以唯一的标识表中的一行。
  • ROWNUM:标识查询结果集的顺序,第一行标识为1,后面依次递增。
代码100分select t.*, t.rowid from stuinfo t;
select t.*, t.rowid from stuinfo t where t.rowid='AAAShjAAEAAAAEFAAD';

select t.*, rownum from stuinfo t;

-- 返回学生信息表中学生年龄最低的前四位同学
select * from (
    select t.*, rownum from stuinfo t order by t.age asc
) where rownum <= 4;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9529.html

(0)
上一篇 2023-02-06
下一篇 2023-02-06

相关推荐

  • Python计算624的平方根

    Python计算624的平方根平方根是一个数学术语,表示一个数的平方根可以被这个数整除。比如说,25的平方根是5,因为5\*5=25,而36的平方根是6,因为6\*6=36。

    2024-02-05
    54
  • MySQL优化之慢查询日志「终于解决」

    MySQL优化之慢查询日志「终于解决」慢查询日志概述 所谓慢查询日志,就是用于记录MySQL中响应时间超过设定阈值的SQL语句,通过打开慢查询开关,MySQL会将大于阈值的SQL记录在日志中,以便于分析性能。 慢查询日志选项默认是关闭的,

    2023-02-12
    118
  • Python工程师:解析tempstr

    Python工程师:解析tempstr作为一名Python工程师,我们时常需要处理大量的数据,其中常用的一种数据格式就是字符串。而在字符串处理中,使用正则表达式是一种非常高效和灵活的方式,而正则表达式的一个关键就是:解析字符串。在这篇文章中,我们将会介绍如何使用Python来解析字符串,并针对不同场景进行实例演示。

    2024-04-16
    27
  • 常用JDBC数据库驱动包和类名[通俗易懂]

    常用JDBC数据库驱动包和类名[通俗易懂]陈九礼常用JDBC数据库驱动包和类名MySQL数据库: 1)驱动包:https://mvnrepository.com/artifact/mysql/mysql-connector-java(下载路径

    2022-12-18
    104
  • mysql数据库基础知识_数据库的基础是什么

    mysql数据库基础知识_数据库的基础是什么数据库的de增删改查【CRUD】 DDL【操作数据库、表】 创建数据库 CREATE DATABASE db1;【db1是我要创建的数据库的名称,如果已经存在数据库db1,则会报错】 CREATE D

    2023-04-16
    97
  • hadoop kafka spark_hadoop ha

    hadoop kafka spark_hadoop ha创建3台虚拟机 主机为桌面版 其他为迷你版本 ******************************常用命令、进程名称****************************启动集群命令: st

    2023-02-14
    83
  • sqlserver触发器语法_触发器after和for

    sqlserver触发器语法_触发器after和for定义及优点 INSTEAD OF触发器指定执行触发器而不是执行触发 的SQL 语句,从而替代触发语句的操作。 在表或视图上,每个 INSERT、UPDATE 或 DELETE 语句最多可以定义一个 I

    2023-04-21
    130
  • 为什么MySQL用B+树做索引

    为什么MySQL用B+树做索引索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。 索引是一种…

    2022-12-18
    102

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注