1笛卡尔集基本原理

两个表如果笛卡尔集运算

(1)行数是两个表行数相乘的结果

(2)列是两个表合集

案例:

错误查询方式:

select count(e.EMPNO)

from emp e,dept d;

正确查询方式:

select count(e.EMPNO)

from emp e,dept d

where e.deptno = d.deptno;

2.等值连接

Eg:查询员工信息,员工号,姓名,月薪,部门名称

select e.empno,e.ename,e.sal,d.dname

from emp e,dept d

where e.deptno = d.deptno;

3.不等值连接

Eg:查询员工信息,员工号,姓名,月薪,薪水级别

select e.empno,e.ename,e.sal,s.grade

from emp e,salgrade s

where e.sal >= s.losal and e.sal <=s.hisal;(可以用between and来替换)

4.外连接

Eg:按部门统计员工人数:部门号部门名称各部门人数

思路:

A:求各部门的人数..要把各个部门数据划分开….,要分组…..

B:各部门人数,要关联员工表(因为部门人数是由员工表确定的,所以还要检索员工表)

所以需要多表查询

现象一(漏掉了一个部门)

select d.deptno,d.dname,count(e.empno)

from dept d,emp e

where d.deptno = e.deptno

group by d.deptno,d.dname;

分析:

我们的期望想把40号部门给统计出来...

40号部门没有被统计出来的原因:员工表中没有40号部门的员工...d.deptno = e.deptno (d.40 = e.40)

本质:等值条件不满足...

外连接技术出现的原因

+左外连接:     +号在..=号的右边,左外连接....

+右外连接:     +号在..=号的左边,左外连接....

我想把部门表的所有列都显示出来,就需要找到部门表..在对方写(+)

左外连接:

select d.deptno,d.dname,count(e.empno)

from dept d,emp e

where d.deptno = e.deptno(+)

group by d.deptno,d.dname;

总结:关于(+),它在那边就以它为标准,让它的数据都显示。上面的截图中的意思是e表中的都显示,以e表为标准。e表和d表连接,因为d.deptno在e.deptno的左边,随意上面的叫左外连接。

5自连接

--查询员工信息 ,老板信息

显示:  ****的老板是****

---思路1:员工信息查员工表

查老板信息,还要查员工表...

---思路2员工表的老板是 老板表的员工

selecte.ename, b.ename

fromemp e, emp b

wheree.mgr = b.empno

自连接案例:

select e.ename || '的老板是'||nvl(b.ename,'他自己')

from emp e,emp b

where e.mgr = b.empno(+);

笛卡尔集基本原理,等值连接,不等值连接,外连接,自连接相关推荐

  1. Oracle 多表查询 --笛卡尔集--左连接--右连接--1999 语法--满外连接

    Oracle 多表查询总结 笛卡尔集现象: 笛卡尔集会在下面条件下产生: – 省略连接条件 – 连接条件无效 – 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在where加入有效的连接条件. O ...

  2. ORACLE SQL笛卡尔集

    ORACLE SQL笛卡尔集 开发工具与关键技术:Oracle sql*plus PLSQL Developer 作者:何任贤 撰写时间:2019年01月01日 笛卡尔集是所有表连接中最特殊的一个,它 ...

  3. 非等值连接,外连接,自连接,子查询

    非等值连接,外连接,自连接,子查询 非等值连接: select empno,ename,sal,grade from emp,salgrade where sal between salgrade.l ...

  4. 零基础带你学习MySQL—多表查询笛卡尔集(二十)

    零基础带你学习MySQL-多表查询笛卡尔集(二十) 一.多表查询 多表查询:就是指基于两个和两个以上的表的查询,在实际应用中,单个表并不能满足你的需求,我们经常需要在很多个表之间查询数据 二.笛卡尔集 ...

  5. pandas 生成笛卡尔集

    最近需要生成笛卡尔集,稍微看了一下,网上没有特别好的办法,后来自己想到了一个办法觉得还不错,分享一下. 主要的想法是将两个DataFrame建立一个共同的列,赋予同样的值,然后进行左连接就可以了.代码 ...

  6. 通过不同的查询方式解决笛卡尔集问题

    自然连接的显著作用在于控制笛卡尔集的产生,将其衍生出的冗余数据归一化: 消除笛卡尔集我们常常采用连接查询,这里可以认为自然连接是连接查询的另一种体现: 自然连接的原理是这样的,它会自动检索两张表中同名 ...

  7. MySQL 笛卡尔集

    交叉连接 :cross join select * from student cross join 返回的是笛卡尔集的数据,存在无意义数据 取除无用数据(取除笛卡尔积) select * from s ...

  8. Hive连接产生笛卡尔集. FAILED: ParseException line 1:18 Failed to recognize predicate 'a'. Failed rule: 'kwIn

    我在实际使用时,设置了set hive.mapred.mode=nonstrict; 但是依旧报错.最后只好全部改成了inner join,这样子写起来很费劲. 而且最后算出来的数据跟网上的实例不太一 ...

  9. 数据库编程1 Oracle 过滤 函数 分组 外连接 自连接

    [本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲>数据库编程1 Oracle 过滤 函数 分组 外连接 自连接本文实验基于的数据表:winso ...

最新文章

  1. python3的数据类型以及模块的含义
  2. Openstack组件部署 — Nova_安装和配置Controller Node
  3. Servlet -- 重定向
  4. hdu 4460 friend chains spfa 最短路里面的最长路
  5. 【微信小程序canvas】实现小程序手写板用户签名(附代码)
  6. Windows 配置Apache+CGI
  7. 从Boxee的Amie Street访问音乐
  8. 前端进阶之防抖与节流是什么?
  9. php怎么实现显示gif图片,利用PHP怎么对gif图片进行判断
  10. 刷脸支付为人们消费方式创始一个新纪元
  11. 恐怖的aliedit
  12. C# 判断操作系统位数
  13. 一枚namecheap续费可用的优惠码
  14. 数据可视化——tableau 数据报表样例(报表模板)
  15. 苹果手机linux系统版本号,Linux下查看系统版本号信息的方法(转)
  16. JavaBean字段防止非空赋值
  17. 什么是混合云、公有云、私有云?
  18. Kesci“魔镜杯”风控算法大赛铜奖解决方案
  19. 无公网IP通过旁路由openwrt的Zerotier实现和在家一样访问家里每个设备
  20. 站稳前三之后,新华三大数据亮剑三大新能力

热门文章

  1. opencv学习笔记17:梯度运算之laplacian算子及其应用
  2. leetcode最长无重复子串384题
  3. VTK:绘制轴AXES用法实战
  4. opengl加载显示3D模型lxo类型文件
  5. boost::test::string_cast相关的测试程序
  6. boost::detail::sp_convertible相关的测试程序
  7. boost::python::bases相关的测试程序
  8. boost::mpl模块实现is_placeholder相关的测试程序
  9. boost::mp11::mp_less相关用法的测试程序
  10. GDCM:gdcm::Defs的测试程序