SQL之多表查询

笛卡尔集

–省略连接条件
–连接条件无效
–所有表
–举例
查询名和表名随便起的,不要在意细节
“despasc_id”在两个表都存在

select Psion.employ_id,Psion.desp_id,Psion.despasc_id,section.despasc_id,
section.desaa_name from Psion,section

正确写法:

select Psion.employ_id,Psion.desp_id,Psion.despasc_id,section.despasc_id,
section.desaa_name from Psion,section where Psion.despasc_id=section.despasc_id

看起来舒服的写法:

select Psion.employ_id,Psion.desp_id,Psion.despasc_id,section.despasc_id,
section.desaa_name from Psion e,section d where e.despasc_id=d.despasc_id

整理后:
其实就是别名

select e.employ_id,e.desp_id,e.despasc_id,section.despasc_id,
d.desaa_name from Psion e,section d where e.despasc_id=d.despasc_id

这里写图片描述

举例:

//左外连接
select e.employ_id,e.desp_id,f.desp_name from employ e, fors f 
where e.desp_id=f.desp_id(+)
//右外连接
select e.employ_id,e.desp_id,f.desp_name from employ e, fors f 
where e.desp_id(+)=f.desp_id

内连接

select employ_id,desp_id,depament_name from emplpy join depaments
using(desp_id) //这种写法必须列名一致,数据类型一致
//推荐
select employ_id,d.desp_id,depament_name from emplpy e join depaments d
on e.desp_id=d.desp_id 

自连接

—举例
查询公司员工“zhangsan”的manager的信息

//该方法先获取manager_id
select last_name,manager_id
from employ where lower(last_name) ='zhangsan'  //如果不知道字符串大小写 可lower(查询id)
//然后使用
select last_name,salary,email from employ where emply_id=108
//不推荐

–自连接

//推荐
select emp.last_name,manager.last_name,manager.salary,
manager.email 
from employ emp, employ manager
where emp.manager_id=manager.employe_id and lower(emp.last_name)='zhangsan'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值