Oracle数据库基础知识-6
sql99学习
笛卡尔积:一件事情的完成需要很多步骤,而不同的步骤有很多种方式,完成这件事情的所有方式称之为笛卡尔积
交叉连接(了解)-cross join
- select * from emp cross join dept
- 查看两表或者多表的笛卡尔积
自然连接-natural join(inner join… on…)
- 自然链接会自动使用多表中所有相同字段(不但值相同,名字也要相同)进行筛选
- 前提:多表一定要有同名同值的字段
- 注意:自然连接会自动使用所有的相同字段进行结果筛选
- 使用using关键字可以指定字段进行链接查询,但是必须是同名字段 inner join
- 使用on关键字可以直接在其后书写链接条件,没有限制 inner join
- 问题:查询员工及员工所在的部门信息
- 问题1:假如在链接查询的时候不想使用所有相同字段进行筛选怎么办?
- 使用using关键字 select * from dept join emp using(deptno)
- 问题2:假如在链接查询中没有同名字段,但是有同值字段怎么筛选?
- 使用on关键字 select * from dept inner join emp on dept.deptno=emp.deptno
- 问题1:假如在链接查询的时候不想使用所有相同字段进行筛选怎么办?
- 自然链接会自动使用多表中所有相同字段(不但值相同,名字也要相同)进行筛选
左外连接-left outer join
- 查询没有部门的员工信息及员工和部门信息
- select * from emp e left join dept using(deptno);
- select * from emp e left join dept d on e.deptno = d.deptno;
右外连接-right outer join
- 查询没有员工的部门信息及员工和部门信息
- select * from emp eright outer join dept d on e.deptno=d.deptno
全外连接-full outer join
- 查询没有部门的员工信息和没有员工的部门信息及员工和部门信息
- select *from emp efull outer join dept d on e.deptno=d.deptno
自连接
- 查询员工姓名,职位,薪资,上级领导姓名
- select e.ename,e.job,e.sal,m.enamefrom emp e inner join emp m on e.mgr=m.empno
三表联合查询
- 查询员工姓名,工作,薪资,部门名称,城市名称
- select e.ename,e.job,e.sal,d.dname,c.cname from emp e inner join dept d on e.deptno=d.deptno inner join city c on d.loc=c.cid
- 查询工资高于2000的员工姓名,工作,薪资,部门名称,城市名称
- select e.ename,e.job,e.sal,d.dname,c.cname from emp e inner join dept d on e.deptno=d.deptno inner join city c on d.loc=c.cid where e.sal>2000
- 查询内容 查询表 链接表 链接条件 链接表 链接条件 筛选条件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kylin!
评论