Mysql基础(二)

多表连接

#多表查询
/*
sql199标准
      等值连接
             ①多表等值连接的结果为多表的交集部分
             ② n个连接至少需要 n-1个连接
             ③一般需要为表起别名
             ④可以搭配前面介绍的所有子句的使用,比如排序,分组,筛选             
*/

-- 1.查询有奖金的员工名,部门名
SELECT  last_name,department_name,commission_pct
FROM  employees e,departments d
WHERE e.`department_id` = d.`department_id`
AND e.`commission_pct` IS NOT NULL;

-- 2.查询城市中第二个字符为o的部门和城市
SELECT  department_name,city
FROM departments d,locations l
WHERE    d.`location_id` = l.`location_id`
AND city LIKE '%_o%';

-- 3.查询每个城市的部门个数
SELECT COUNT(*) 个数,city
FROM  departments d,locations l
WHERE  d.`location_id` = l.`location_id`
GROUP BY city;

-- 4.查询出有奖金的每个部门的部门名和部门领导的领导编号和该部门的最低工资
SELECT d.department_name,d.manager_id,MIN(salary)
FROM departments d,employees e
WHERE d.`department_id` = e.`department_id`
AND commission_pct IS NOT NULL
GROUP BY  d.department_name,d.manager_id;

-- 查询每个员工的工种的工作名和员工的个数,并且按员工的个数降序
SELECT  job_title,COUNT(*)
FROM employees e ,jobs j
WHERE e.`job_id` = j.`job_id`
GROUP BY job_title
ORDER BY COUNT(*);

#实现三表连接

-- 查询员工名,部门名和所在的城市
SELECT last_name,department_name,city
FROM employees e,departments d,locations l
WHERE e.`department_id` = d.`department_id`
AND d.`location_id` = l.`location_id`
AND city LIKE '%s%';

猜你喜欢

转载自www.cnblogs.com/afangfang/p/12657527.html