笛卡尔集基本原理,等值连接,不等值连接,外连接,自连接
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(+);
笛卡尔集基本原理,等值连接,不等值连接,外连接,自连接相关推荐
- Oracle 多表查询 --笛卡尔集--左连接--右连接--1999 语法--满外连接
Oracle 多表查询总结 笛卡尔集现象: 笛卡尔集会在下面条件下产生: – 省略连接条件 – 连接条件无效 – 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在where加入有效的连接条件. O ...
- ORACLE SQL笛卡尔集
ORACLE SQL笛卡尔集 开发工具与关键技术:Oracle sql*plus PLSQL Developer 作者:何任贤 撰写时间:2019年01月01日 笛卡尔集是所有表连接中最特殊的一个,它 ...
- 非等值连接,外连接,自连接,子查询
非等值连接,外连接,自连接,子查询 非等值连接: select empno,ename,sal,grade from emp,salgrade where sal between salgrade.l ...
- 零基础带你学习MySQL—多表查询笛卡尔集(二十)
零基础带你学习MySQL-多表查询笛卡尔集(二十) 一.多表查询 多表查询:就是指基于两个和两个以上的表的查询,在实际应用中,单个表并不能满足你的需求,我们经常需要在很多个表之间查询数据 二.笛卡尔集 ...
- pandas 生成笛卡尔集
最近需要生成笛卡尔集,稍微看了一下,网上没有特别好的办法,后来自己想到了一个办法觉得还不错,分享一下. 主要的想法是将两个DataFrame建立一个共同的列,赋予同样的值,然后进行左连接就可以了.代码 ...
- 通过不同的查询方式解决笛卡尔集问题
自然连接的显著作用在于控制笛卡尔集的产生,将其衍生出的冗余数据归一化: 消除笛卡尔集我们常常采用连接查询,这里可以认为自然连接是连接查询的另一种体现: 自然连接的原理是这样的,它会自动检索两张表中同名 ...
- MySQL 笛卡尔集
交叉连接 :cross join select * from student cross join 返回的是笛卡尔集的数据,存在无意义数据 取除无用数据(取除笛卡尔积) select * from s ...
- Hive连接产生笛卡尔集. FAILED: ParseException line 1:18 Failed to recognize predicate 'a'. Failed rule: 'kwIn
我在实际使用时,设置了set hive.mapred.mode=nonstrict; 但是依旧报错.最后只好全部改成了inner join,这样子写起来很费劲. 而且最后算出来的数据跟网上的实例不太一 ...
- 数据库编程1 Oracle 过滤 函数 分组 外连接 自连接
[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲>数据库编程1 Oracle 过滤 函数 分组 外连接 自连接本文实验基于的数据表:winso ...
最新文章
- python3的数据类型以及模块的含义
- Openstack组件部署 — Nova_安装和配置Controller Node
- Servlet -- 重定向
- hdu 4460 friend chains spfa 最短路里面的最长路
- 【微信小程序canvas】实现小程序手写板用户签名(附代码)
- Windows 配置Apache+CGI
- 从Boxee的Amie Street访问音乐
- 前端进阶之防抖与节流是什么?
- php怎么实现显示gif图片,利用PHP怎么对gif图片进行判断
- 刷脸支付为人们消费方式创始一个新纪元
- 恐怖的aliedit
- C# 判断操作系统位数
- 一枚namecheap续费可用的优惠码
- 数据可视化——tableau 数据报表样例(报表模板)
- 苹果手机linux系统版本号,Linux下查看系统版本号信息的方法(转)
- JavaBean字段防止非空赋值
- 什么是混合云、公有云、私有云?
- Kesci“魔镜杯”风控算法大赛铜奖解决方案
- 无公网IP通过旁路由openwrt的Zerotier实现和在家一样访问家里每个设备
- 站稳前三之后,新华三大数据亮剑三大新能力
热门文章
- opencv学习笔记17:梯度运算之laplacian算子及其应用
- leetcode最长无重复子串384题
- VTK:绘制轴AXES用法实战
- opengl加载显示3D模型lxo类型文件
- boost::test::string_cast相关的测试程序
- boost::detail::sp_convertible相关的测试程序
- boost::python::bases相关的测试程序
- boost::mpl模块实现is_placeholder相关的测试程序
- boost::mp11::mp_less相关用法的测试程序
- GDCM:gdcm::Defs的测试程序