oracle query 多表查询,oracle 多表查询

夺标查询:用单个的select 语句从多个查询相关

04011ed0a000ed4e57c637aab3b322d1.png

在多表查询的时候,如果没有加入等值条件,会产生笛卡尔积

-- 多表查询分为不同的标准

-- sql1992 老标准

-- sql 1999 新标准

等值查询,在父子表关系上,用= 来两家两个表的两个字段或多个表的多个字段

等值查询智能查询两个表中 一一对应的数据,如 部门有员工,员工有所属部门字段

N个表的等值查询,需要n-1个等值查询

b8ed7afca77a2ac317c7926cfad09f34.png

非等值查询 ,两个表之间没有父子关系, 用 != 来连接 两个表

b5debb706e1aa27865f7e5ebc8957ab9.png

--自连接,通过别名,将一个表虚拟成两个表,然后再这两个表上做等值查询

--外连接:在等值查询的基础上,可以查询不满足等值条件的数据。

--左外连接,可以把右边不满足等值条件查询出来

ce238bd1b764bbb03c0411c7b9b95b90.png

--右外连接,可以把左边不满足等值条件查询出来

+ 号不能同时出现在= 的两边

--1.交叉链接 相当于sql1992 老标准查询的时候没有给出正确的等值条件,会产生笛卡尔积

9895a0724e24cb9d468eafd004f01dfe.png

---2.自然链接:在父子表关系上,自动匹配两个表中列名完整相同的字段(参照列),在这些相同字段上做等值查询。 参照列上不能使用前缀。

缺陷:把所有的参照列都作为等只查询,;2如果参照列类型不同,查询会报错。

3.JOIN ..USING ,自然链接的基础上,加以gaiji

bcc8c24d165ff5655d480c69ee4a6e6b.png

当两个表中没有参照列时候,自然查询会产生笛卡尔乘积

5d05cb3b4585e848229ace30a417dce7.png

90f8bffee7369447eafb0c325ac10931.png

20d783160f7069259b524223afcb244f.png

======================= sql 新标准=================

使用union 把两个结果集合并成一个结果集     结果集一致

2f45509d6b7849274faecf193158cd18.png                             

4c96a183a61b54a752e5d2a1bbc83f29.png

--使用查询语句来创建表(复制数据)

41e47236519ce4194a3adccf1ffcd18c.png 但是不能复制外键,索引等。

========================子查询================

--为 了给主查询提供条件,而首先执行的一个查询,被称为子查询(子查询是用来给主查询提供条件的)

--子查询首先被执行

-- 主查询使用子查询的查询条件

--子查询通常出现在比较运算符的右边,并且用()包围起来便于理解

-- 子查询的分类,就是根据子查询的返回结果来区分

--1)单行单列子查询       =  、> 、 < 、<>    只要是单行子查询 ,都可以用当行比较运算符

cda27a5ba10be3d94191db433447f9cb.png

--2)多行单列子查询 ,要使用多行比较运算符,IN,ANAY,ALL

d728aa1db74883290461317e47968cdd.png

--3)多行多列子查询

--4)子查询也可以出现在having 中  对分组后的数组进行过滤

d5f4b16d33b815c8262e16aae8e3c255.png

--5) 子查询没有结果,主查询也没有结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值