9、连接查询(sql99语法)----学习笔记

9、连接查询(sql99语法)

  • 语法:
select 查询列表
	from1 别名 【连接类型】
	join2 别名
	on 连接条件
	【where 筛选条件】
	【group by 分组】
	【having 筛选条件】
	【order by 排序列表】
  • 分类:
内连接(*):inner
外连接
	左外(*): leftouter】
	右外(*): rightouter】
	全外:  fullouter】
交叉连接: cross

9.1、内连接

  • 语法:
	select 查询列表
	from1 别名
	【innerjoin2 别名
	on 连接条件;
  • 分类:
	等值
	非等值
	自连接
  • 特点:
    1. 添加排序、分组、筛选
    2. inner可以省略
    3. 筛选条件放在where后,连接条件放在 on后面,提高分离性,便于阅读
    4. inner join连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集

9.1.1、等值连接

9.1.2、案例1:查询员工名、部门名(调换位置)

SELECT last_name , department_name
FROM departments d
JOIN employees e
ON e.`department_id` = d.`department_id`;

9.1.3、案例2:查询名字中包含e的员工名和工种名(筛选)

SELECT last_name , job_title
FROM employees e
JOIN jobs j
ON e.`job_id` = j.`job_id`
WHERE e.`last_name` LIKE '%e%';

9.1.4、案例3:查询部门个数 > 3的城市名和部门个数,(分组+筛选)

SELECT COUNT(*) , city
FROM locations l
JOIN departments d
ON l.`location_id` = d.`location_id`
GROUP BY city
HAVING COUNT(*) > 3;

9.1.5、案例4:查询哪个部门的部门员工个数 > 3的部门名和员工个数,并按个数降序

SELECT department_name,COUNT(*)
FROM employees e
JOIN departments d
ON e.`department_id` = d.`department_id`
GROUP BY department_name
HAVING COUNT(*) > 3
ORDER BY COUNT(*) DESC;

9.1.6、案例5:查询员工名、部门名、工种名,并按部门名降序

SELECT e.last_name, d.department_name, j.job_title
FROM employees e
JOIN departments d
JOIN jobs j
ON e.`department_id` = d.`department_id`
AND e.`job_id`=j.`job_id`
ORDER BY d.`department_name` DESC;

9.2、非等值连接

9.2.1、查询员工的工资级别

ELECT salary,grade_level
FROM employees e
JOIN job_grades g
ON e.`salary` BETWEEN g.`lowest_sal` AND g.`highest_sal`;

9.2.2、查询每个工资级别的个数 >20 个数,并且按工资级别降序

SELECT COUNT(*),grade_level
FROM employees e
JOIN job_grades g
ON e.`salary` BETWEEN g.`lowest_sal` AND g.`highest_sal`
GROUP BY grade_level
HAVING COUNT(*) > 20
ORDER BY salary DESC;

9.3、自连接

9.3.1、查询员工的名字、上级的名字

SELECT e.last_name, m.last_name
FROM employees e
JOIN employees m
ON e.`employee_id` = m.`manager_id`

9.3.2、查询姓名中包含字符k的员工的名字、上级的名字

SELECT e.last_name, m.last_name
FROM employees e
JOIN employees m
ON e.`employee_id` = m.`manager_id``girls`
WHERE e.`last_name` LIKE '%k%';
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值