#二、sql99语法
/*
语法:
select 查询列表
from 表1 别名 【连接类型】
join 表2 别名 on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序列表】
内连接(♥): inner
外连接
左外(♥): left 【outer】
右外(♥):right 【outer】
全外:full 【outer】
交叉连接:cross
*/
#一)内连接
/*
select 查询列表
from 表1 别名
inner join 表2 别名
on 连接条件
注意:
(1)添加排序、分组、筛选
(2)inner可以省略
(3)筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读。
(4)inner join 连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集。
*/
#1.等值连接
#1.查询员工名、部门名
SELECT `last_name`,`department_name`
FROM `departments` d
INNER JOIN `employees` e
ON d.`department_id`=e.`department_id`;
#2.查询名字中包含e的员工名和工种名(筛选)
SELECT last_name ,`job_title`
FROM `employees` e
INNER JOIN `jobs` j
ON e.`job_id`=j.`job_id`
WHERE last_name LIKE '%e%';
#3.查询部门个数>3的城市名和部门个数(分组+筛选)
SELECT `city`,COUNT(*)
FROM `departments` e
INNER JOIN `locations` l
ON e.`location_id`=l.`location_id`
GROUP BY `city`
HAVING COUNT(*)>3;
#4.查询哪个部门的部门员工个数>3的部门名和员工个数,并按个数降序(排序)
SELECT `department_name`,COUNT(*) 员工个数
FROM `departments` d
INNER JOIN `employees` e
ON e.`department_id`=d.`department_id`
GROUP BY `department_name`
HAVING COUNT(*)>3
ORDER BY COUNT(*) DESC;
#5.查询员工名、部门名、工种名,并按部门名降序
SELECT `last_name`,`department_name`,`job_title`
FROM `departments` d
INNER JOIN `employees` e ON e.`department_id`=d.`department_id`
INNER JOIN `jobs` j ON e.`job_id`=j.`job_id`
ORDER BY `department_name` DESC;
sql99语法--等值连接
最新推荐文章于 2024-08-04 21:47:15 发布