#进阶7连接查询
/*
当查询字段涉及到多个多个表时,就设计到连接查询
#------------------SQL92语法------------------------------
#一、内连接
#1)等值连接
/*
语法
select 查询列表
from 表名1 别名一,表名2 别名二,...
where等值连接的连接条件`department_id`
特点
1、为了解决多表中的字段名重名问题,往往为表起别名,提高了语义性
2、表的顺序无要求
*/
#例子:查询员工名和部门名#一旦起别名,就只认识别名了!!!!!
SELECT employees.last_name,departments.department_name
FROM employees,departments
WHERE employees.`department_id`=departments.`department_id`;
#案例一:
SELECT `department_name`,city
FROM departments d,locations l
WHERE d.`location_id`=l.`location_id`
AND d.department_id>100;
#添加分组+筛选
#例子:查询每个城市的部门数
SELECT COUNT(*) 部门个数,l.`city`
FROM departments d,locations l
WHERE d.`location_id`=l.`location_id`
GROUP BY l.`city`;
#2)非等值连接
#3)自连接
#-------------------sql99语法------------------------------
#一、内连接
#语法:
SELECT 查询列表
FROM 表名1 别名
【INNER】 JOIN 表名2 别名
ON 连接条件
WHERE 筛选条件
GROUP BY分组列表
ORDER BY排序列表
sql92和sql99的区别
sql99使用JOIN关键字代替了之前的逗号,并且将连接条件和筛选条件进行了分离,提高了阅读性
#1、等值
#例子1:
SELECT last_name,department_name
FROM departments d
INNER JOIN employees e
ON e.department_id=d.department_id;
#例子2:查询每个城市的部门个数
SELECT l.`city`,COUNT(*)
FROM departments d
JOIN locations l
ON d.`location_id`=l.`location_id`
GROUP BY city;
#例子3:查询部门中员工数>10的部门名,并且按照部门名降序
SELECT d.`department_name`,COUNT(*) 员工人数
FROM departments d
JOIN employees e
ON d.`department_id`=e.`department_id`
GROUP BY d.department_id
HAVING COUNT(*)>10
ORDER BY COUNT(*) DESC;
#2、非等值
#3、自连接
#二、外连接
连接查询之内连接
最新推荐文章于 2024-01-28 00:00:00 发布