博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多表查询
阅读量:7081 次
发布时间:2019-06-28

本文共 2172 字,大约阅读时间需要 7 分钟。

select table_name.column_name,........

from table_name1,table_name,.....

1.等值连接

2.不等值连接
3.外连接
4.自连接

s_emp

s_dept
s_region

需求一:

查询所有员工的名字,和所有部门的名字

select last_name,name

from s_emp,s_dept;

等值连接:

需求二:
查询所有员工的last_name,以及员工所属部门的名称
目标:last_name,name
from s_emp, s_dept
条件:员工所属部门
s_emp.dept_id = s_dept.id
select lasT_name,name
from s_emp,s_dept
where s_emp.dept_id = s_dept.id;
需求三:
查询部门名称,以及部门所属区域的名称
目标:部门name,区域名称
from: s_dept, s_region
条件:部门所属区域
s_dept.region_id = s_region.id
select s_dept.name,s_region.name
from s_dept,s_region
where s_dept.region_id = s_region.id;
不等值连接:
salaryGrade:
min         max      grade
0            1000       三级
1001       1500      二级
1501       2500      一级
需求三:
查找员工名称,员工工资,以及员工工资所属等级信息。
目标:last_name,salary,grade
from:s_emp,salGrade
条件:员工工资所属等级
salary between minSal and maxSal;
select last_name,salary,grade
from s_emp,salGrade
where salary between minSal and maxSal
create table salGrade(
id number primary key,
minSal number,
maxSal number,
grade varchar2(10)
);
insert into salGrade values(1,0,1000,'三级');
insert into salGrade values(2,1001,1500,'二级');
insert into salGrade values(3,1501,2500,'一级');
外连接:
左外:left join    +出现在等号  右边
右外: right join  +出现在等号  左边
全外: full join

需求四:

1.要求查询所有员工的名称,以及员工所属部门的名称,就算员工没有部门,也要显示员工的名称。
目标:last_name,name
from:s_emp,s_dept
条件:员工所属部门,就算员工没有部门,也要显示员工名称。
select last_name,name
from s_emp,s_dept
where s_emp.dept_id = s_dept.id(+);
select last_name,name
from s_emp left join s_dept
on s_emp.dept_id = s_dept.id;
语义分析,将+号放在值少的一方。
2.要求查询所有员工的名称,以及员工所属部门的名称,就算部门没有员工,也要显示部门名称。
select last_name,name
from s_emp,s_dept
where s_emp.dept_id(+) = s_dept.id;
select last_name,name
from s_emp right join s_dept
on s_emp.dept_id = s_dept.id;
3.要求查询所有员工的名称,以及员工所属部门的名称,就算部门没有员工,也要显示部门名称。就算员工没有部门也要显示员工名称。

select last_name,name

from s_emp full join s_dept
on s_emp.dept_id = s_dept.id;
自连接
需求五:
查询员工的名称以及员工所属经理的名称
目标:员工last_name,经理的last_name
from: s_emp , s_emp
条件:员工所属经理
员工的manager_id = 经理的id

select emp.last_name,manager.last_name

from s_emp emp,s_emp manager
where emp.manager_id = manager.id;

2.就算员工没有经理,也要显示员工信息

select emp.last_name,manager.last_name
from s_emp emp,s_emp manager
where emp.manager_id = manager.id(+);

转载于:https://www.cnblogs.com/tengke/p/5068909.html

你可能感兴趣的文章
让你提前认识软件开发(14):程序中的算法
查看>>
Objective-C - 改变NSMutableArray的特定元素
查看>>
截止2016年5月之前双色球数据统计
查看>>
jQuery插件AjaxFileUpload实现ajax文件上传时老是运行error方法 问题原因
查看>>
STM32 ADC 采样 频率的确定
查看>>
使用Selenium来抓取动态加载的页面
查看>>
设计模式实战应用之五:工厂方法模式
查看>>
XML - 十分钟了解XML结构以及DOM和SAX解析方式
查看>>
IIS、Asp.net 编译时的临时文件路径
查看>>
Android 热修复 Tinker接入及源代码浅析
查看>>
selenium测试(Java)--操作cookie(十七)
查看>>
测试技能图谱skill-map
查看>>
Java EE: XML Schemas for Java EE Deployment Descriptors(Java Web的web.xml头web-app标签上的XML模式)...
查看>>
【.net 深呼吸】实时获取计算结果
查看>>
第六章 访问权限控制
查看>>
python学习:简单的wc命令实现
查看>>
dns记录类型(转)
查看>>
Spring介绍
查看>>
在 docker 容器中捕获信号
查看>>
在分布式系统里看CAP定理
查看>>