MySQL 进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接

#进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接
/*
  含义: 当查询的字段来自于多个表时, 就会用到连接查询
  
  一: sql 92标准 :等值连接 ,(#内连接)
    1.可以为表区别名,区分多个重名的字段
    2.为表使用别名后,只能使用别名去"select"!
    
  二:非等值连接
    1.where 列名 BETWEEN ... AND ...
  三:自连接 :自己连接自己
  
  四:左 / 右 外连接
    1.应用场景: 用于查询一个表有内容,另一个表没有内容
        如果从表中有和它匹配的,则显示匹配的值
        如果从表中没有和它匹配的,则显示null
    2.左外连接, left OUTER join   (左边的是主表)
        on 连接关系
        where 筛选条件
    3.右外连接,right OUTER join   (右边的是主表)
        on 连接关系
        where 筛选条件

   五:#全外连接 = 内连接的结果 + 表1中有但表2中没有的 + 表2中有的但表1中没有的
    #MYSQL不支持!!    Oracle数据库

    六:#交叉连接
    实现笛卡尔成绩,实现两个表的任意两项进行连接!
    
    七:sql 92 和 sql 99
    
*/

#查询对偶姓名匹配

SELECT beauty.`name`,boys.`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;

#3.查询员工名/工种号/工种名 #使用别名
SELECT e.`last_name` ,e.`job_id`,j.`job_title`
FROM  employees e,jobs j
WHERE e.`job_id`=j.`job_id`;
      
#4.查询有奖金的员工名和部门名
SELECT e.`last_name`,e.`department_id`
FROM employees e,departments d
WHERE e.`department_id`=d.`department_id`;

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

#2 / 非等值连接

#案例1:查询员工的工资和工资级别
SELECT salary,grade_level
FROM employees e,job_grades g
WHERE e.salary BETWEEN g.`lowest_sal` AND g.`highest_sal`;

#3 / 左 . 右 外连接
    #案例1:查询女生的男朋友不在boys 表中的 女生   -- [左外连接]
SELECT b.name,bo.* 
FROM beauty b  
LEFT OUTER JOIN boys bo
ON b.`boyfriend_id`=bo.`id`
WHERE bo.`id` IS NULL ;

    #案例2: 查询哪个部门没有员工
SELECT  d.*,e.employee_id
FROM departments d
LEFT OUTER JOIN employees e
ON d.`department_id`=e.`department_id`
WHERE e.employee_id IS NULL;

#全外连接 = 内连接的结果 + 表1中有但表2中没有的 + 表2中有的但表1中没有的
    #MYSQL不支持!!

#交叉连接
SELECT b.*,bo.*
FROM beauty b
CROSS JOIN boys bo;

#内连接

SELECT *
FROM beauty b
INNER JOIN boys
ON b.`boyfriend_id`=boys.`id`;

 

posted @ 2018-10-25 16:55  山枫叶纷飞  阅读(3049)  评论(0编辑  收藏  举报