数据库多表查询

今天分享一段SQL中基本的多表查询

语法:select 表1.列1,表2.列2 from 表1,表2
         where 连接条件(n张表联合查询至少需要n-1个连接条件)

内连接
等值连接,不等连接,自连接

外连接
左外连接,右外连接
语法:select 表1.列1,表2.列2 from 表1 left/right join 表2 on 表1.列=表2.列

#等值连接

【例】查询员工的姓名,职位,工资,部门号,部门名称
姓名、职位。工资 部门号在emp表
部门名称在dept表中

select emp.ename,emp.job,emp.sat,emp.deptno,dept.dname from emp,dept
where emp.deptno=dept.deptno;------连接条件  

#表的别名  表名 空格 别名

select e.ename,e.job,e.sat,e.deptno,d.dname from emp e,dept d
where e.deptno=d.deptno;

select e.ename,e.job,e.sat,e.deptno,d.dname from emp as e,dept as d
where e.deptno=d.deptno;

#不等链接
【列】查询1号部门员工的姓名,职位,工资,工资等级
姓名、职位、工资 在emp表   工资等级 在salgrade表中, emp表与salgrade表不存在主外键关系

select e.ename,e.job,e.sat,e.deptno,s.grabe from emp e,salgrade s
where e.deptno=1 and e.sat between s.losal and s.hisal;


#自连接:同一实体内部的1:n的联系

【例】查询员工的姓名以及该员工经理的姓名
经理姓名不能直接查询,只能知道经理的标号,在通过编号来查询经理的姓名
经理的名字和员工的名字在同一张表中,可以把一张表看成多张表

select w.ename,m.ename from emp w,emp m  #w表示员工表,m表示经理表
where w.mgr=m.empno;              #把经理表中mgr当成员工表的外键来处理


#左外连接:包含左边表的全部数据,以及右边表全部匹配的数据
#右外连接:包含右边表的全部数据,以及左边表全部匹配的数据
语法:select 表1.列1,表2.列2 from 表1 left/right join 表2 on 表1.列=表2.列

【例】查询员工的姓名以及该员工经理的姓名,没有经理的员工也显示在结果中
 

左连接:
select w.ename,m.ename from emp w left join emp m on w.mgr=m.empno;
右连接:
select w.ename,m.ename from emp m right join emp w on w.mgr=m.empno;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值