sql连接查询

连接查询

sql92语法,where

等值连接

//		基本写法
select 字段1,字段2
from1,表2
where1.id =.id


//     为表起别名
select 字段1,字段2
from1 as aaa,表2 as bbb
where aaa.id = bbb.id


//		加筛选
select 字段1,字段2
from1 as aaa,表2 as bbb
where aaa.id = bbb.id
and 字段1="ok"


//		加分组
select 字段1,字段2
from1 as aaa,表2 as bbb
where aaa.id = bbb.id
and 字段1="ok"
group by 字段2


//		加排序

非等值连接

在这里插入图片描述

自连接

把自身的一张表当作多个表使用

在这里插入图片描述

查询员工名和上级的名称

select a.'employee_id',a.'last_name',b.'employee_id',b.'last_name'
from employees a,employees b
where a.'manager.id' = b.'employee_id'

sql99语法,join

内连接,外连接,交叉连接

在这里插入图片描述

内连接

select 查询列表
from1 别名
inner join2 别名
on 连接条件【等值,非等值,自连接】
内连接的等值连接

查询员工名(last_name),部门名(department_name)

select last_name,department_name
from employees 员工表
inner join departments 部门表
on 员工表.'department_id' = 部门表.'department_id'
内连接的非等值连接

查询员工的工资级别

select salary,grade_leavel
from employees 员工表
join job_grades 工资等级表
on 员工表.salary between 工资等级表.'lowest_sal' and 工资等级表.'hightest_sal'

外连接

相对于一个做主表一个做从表,用于查询一个表有,另一个表没有的记录

​ 就是外连接查询的结果为主表中的所有记录,

​ 如果从表中有和它匹配的,则显示匹配的值,

​ 如果从表中没有和它匹配的,则显示null

外连接查询结果 = 内连接结果 + 主表中有的数据而从表中没有的数据

左外连接

left join 左边的是主表

select 主表.*,主表.*
from 主表
left outer join 从表
on 主表.uID = 从表.uID

案例 : 查询哪个部门没有员工

部门表 department
部门ID department_id
员工表 employee
员工ID employee_id

select main.*,
from department main
left outer join employee other
on main.department_id = other.department_id
where other.employee_id is null
右外连接

right join 右边的是主表

select 主表.*,主表.*
from 主表
right outer join 从表
on 主表.uID = 从表.uID
全外连接

全外连接 = 内连接结果 + 表1中有但表2中没有 + 表1中没有但表2中有

select1.*,2.*
from1
full outer join2
on1.uID =2.uID
交叉连接

笛卡尔乘积,使用99语法标准

select1.*,2.*
from1
cross outer join2

小结

何时使用内连接

在这里插入图片描述

何时使用左外连接

A当主表

在这里插入图片描述

何时使用右外连接

在这里插入图片描述

何时使用左外连接加 is null

在这里插入图片描述

何时使用右外连接加 is null

在这里插入图片描述

何时使用全外连接

在这里插入图片描述

何时使用全外连接加 is null

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值