SQL语言之DQL语言学习(八)多表查询/链接查询 SQL92学习

用法:

当查询的字段来自于多个表时,就会用到连接查询

按照功能分类

内连接: 等值/非等值链接,自链接

外连接: 左/右外连接,全外链接

交叉链接

笛卡尔乘积现象

表1有m行,表2有n行,结果=m*n行

发生原因:没有有效的连接条件

一.内链接之等值连接

案例一:从女生表查找到男生表中的男女朋友关系
在这里插入图片描述
在这里插入图片描述

SELECT name,boyName FROM boys,beauty
WHERE beauty.boyfriend_id=boys.id

在这里插入图片描述

案例二:添加筛选条件

查询有奖金的员工名,部门名

SELECT  last_name,department_name,commission_pct
FROM employees,departments
WHERE employees.department_id=departments.department_id
and employees.commission_pct is not null

在这里插入图片描述
案例三:添加分组

查询每个城市的部门个数

SELECT  count(*) 个数, city
FROM departments, locations
WHERE departments.location_id=locations.location_id
GROUP BY city;

在这里插入图片描述
案例四:添加排序

查询每个工种的工种名 和 员工的个数,并按照员工的个数进行排序

SELECT  job_title,count(*)
FROM employees,jobs
WHERE jobs.job_id = employees.job_id
GROUP BY job_title
ORDER BY COUNT(*) DESC;

在这里插入图片描述
案例四:实现三表链接
查询员工名,部门名 和 所在的城市

SELECT  last_name,department_name,city
FROM employees,departments,locations
WHERE employees.department_id=departments.department_id
and departments.location_id = locations.location_id
ORDER BY department_name DESC;

在这里插入图片描述

二.内链接之非等值连接

查询员工的工资与工资级别

SELECT last_name,salary,grade_level
FROM employees e, job_grades g
WHERE salary BETWEEN g.lowest_sal and  g.highest_sal

在这里插入图片描述

自连接

即连续查询一个表两次

案例:查询员工名和上级领导的名称

因为上级领导也是属于员工,需要在员工表中查询两次

SELECT e.employee_id ,e.last_name 员工名 ,m.employee_id,m.last_name  领导名 
FROM employees e, employees m   #查询第一遍备注为e,第二遍为m
WHERE e.manager_id=m.manager_id

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半岛铁盒@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值