MySQL数据库(八)连接查询(SQL92标准 内连接查询)

进阶6:连接查询
含义:又称多表查询

笛卡尔乘积现象:表1:有n行,表2:有m行,合成的表m*n;

分类:
按年代分类
    92标准;仅支持所有内连接
    99标准支持内连接,外连接左外右外和交叉连接
按功能:内连接:等值,非等值,自连接,
    外连接:左外连接,右外连接,全外连接
    交叉连接:

*/

SELECT * FROM beauty;

SELECT * FROM boys;

SELECT NAME,boyname FROM beauty,boys;

SELECT NAME,boyname FROM beauty,boys WHERE beauty.`boyfriend_id` = boys.`id`;

#sql92标准

#1.等值查询

/*
1.多表等值连接的结果为多表的交集部分
2.n表连接,至少需要n-1个连接条件
3.多表的先后顺序没有要求
4.一般需要为表取别名
5.可以搭配前面介绍的所有字句是使用,比如排序、分组、 筛选
*/

#案例1:查询女神和男神对应的信息
SELECT 
  NAME,
  boyname 
FROM
  beauty,
  boys 
WHERE beauty.`boyfriend_id` = boys.`id` ;

#案例2:查询员工名和对应的部门名
SELECT last_name,department_name
FROM employees,departments
WHERE employees.`department_id` = departments.`department_id`;

#2.为表起别名:提高语句简介度,区分多个重名的字段
#如果起了别名,就不能使用原名进行限定
#查询员工名,工种号,工种名
SELECT last_name,e.`job_id`,job_title
FROM employees e,jobs j
WHERE e.`job_id` = j.`job_id`;

#3.表的顺序可以颠倒 

#4.可以加筛选
#查询有奖金的员工名和部门名

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;

#5.加分组

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

#6.加排序

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

#7.三表连接
#案例:查询员工名、部门名和所在的城市
SELECT 
  last_name,
  department_name,
  city 
FROM employees,departments,locations
WHERE employees.`department_id` = departments.`department_id` AND
  departments.`location_id` = locations.`location_id`
AND city LIKE 's%'
  ORDER BY department_name DESC;

#2.非等值连接

#案例1:查询员工的工资和工资级别
SELECT * FROM job_grades;

SELECT 
  salary,
  grade_level 
FROM
  employees e,
  job_grades j
WHERE e.`salary` BETWEEN j.`lowest_sal` 
  AND j.`highest_sal` ;

#3.自连接 


#查询员工名和上级的名字
SELECT e.employee_id,e.last_name,m.employee_id,m.last_name
FROM employees e,employees m
WHERE e.`manager_id` = m.`employee_id`;

发布了58 篇原创文章 · 获赞 7 · 访问量 3730

猜你喜欢

转载自blog.csdn.net/xy_learning/article/details/103844788