定义: 表连接查询 : 当要查询的数据来自于多个数据源
现在主要有92语法和99语法 –92语法 select 数据 from 数据源1,数据源2… where 行过滤条件 group by 分组字段1,分组字段2… having 组过滤信息 order by 排序字段1,… desc|asc;
执行流程 : from --> where --> group by --> having --> select --> order by
92语法中表 连接条件定义 在where后面
如果要使用的字段来自于多个数据源中都存在,需要指明限定词|出处
一、92语法
1.1笛卡尔积
--笛卡尔积 : 交叉连接
--查询所有员工的信息以及员工所在部门信息
--数据 : 员工信息* 部门信息*
--来源 : 员工表emp ,部门表 dept
select * from emp,dept;
select emp.*,dept.deptno,dept.dname from emp,dept;
--别名
select e.*,d.deptno,d.dname from emp e,dept d;
1.2等值连接
判断两个数据源中的某个字段值相等或者不相等
–表连接条件 : 过滤通过连表产生的不满足要求的表连接数据 –等值连接 : 判断两个数据源中的某个字段值相等或者不相等 –非等值连接 : 判断区间,判断范围的条件 –92语法中表 连接条件定义 在where后面 –如果要使用的字段来自于多个数据源中都存在,需要指明限定词|出处
--员工名称及部门名称
select ename, dname, e.deptno from emp e, dept d where e.deptno = d.deptno;
--找出30部门的员工名称及部门名称:先关联后过滤
select ename, dname, e.deptno
from emp e, dept d
where e.deptno = d.deptno
and e.deptno = 30;
--记录很多时 :先过滤后关联
-- 数据来源: emp (select * from emp where deptno=30) e , dept(select * from dept
where deptno=30) d
select * from emp where deptno = 30;
select * from dept where deptno = 30;
-- 查询的字段:ename, dname, e.deptno
-- 条件:e.deptno=d.deptno , deptno=30
select ename, dname, e.deptno
from (select * from emp where deptno = 30) e,
(select *
推荐文章
发表评论