美文网首页
MySQL入门:多表查询

MySQL入门:多表查询

作者: 我的袜子都是洞 | 来源:发表于2018-12-07 22:59 被阅读6次

多表查询

完整命令格式:


SELECT 语句

连接方式

  • 内连接:INNER JOIN简写JOIN
  • 外连接:LEFT JOINRIGHT JOIN
  • 自连接:一张表的连接,可以内连接也可以外连接

内连接

两张表与连接条件相匹配的行留下,任意一张表中不满足条件的行都去除。
没有连接条件时,表1中的一条记录会定影另一张表中的所有记录。

SELECT tb1.a,tb1.b,tb2.aa,tb2.bb
FROM tb1 JOIN tb2
ON a>aa;

例子:查看员工工作地点

SELECT emp.ename,emp.deptno,dept.deptno,dept.loc
FROM emp JOIN dept 
ON emp.deptno=dept.deptno ;
查看员工工作地点

例子:显示每个员工的工资等级

SELECT emp.ename AS '员工',salgrade.grade AS '工资等级'
FROM emp JOIN salgrade
ON emp.sal BETWEEN salgrade.losal AND salgrade.hisal
ORDER BY salgrade.grade DESC;

例子:显示每个工作地点的员工的人数

SELECT dept.loc,COUNT(*)
FROM emp JOIN dept
ON emp.deptno = dept.deptno
GROUP BY dept.loc;
显示每个工作地点的员工的人数

外连接

左外连接:两张表与连接条件相匹配的行留下,左表中不满足条件的行也会被留下来,右表中不满足条件的行被去除。右表中没有对应值的NULL来填充。

SELECT * 
FROM 表1 LEFT JOIN 表2
ON 连接条件;

右外连接:两张表与连接条件相匹配的行留下,右表中不满足条件的行也>会被留下来,左表中不满足条件的行被去除。左表中没有对应值的NULL来填充。

SELECT * 
FROM 表1 LEFT JOIN 表2
ON 连接条件;

左外和右外本质相同,实际使用看业务需求。哪边显示哪边外。
使用案例:

SELECT dept.dname,IF(emp.deptno IS NULL,0,COUNT(*)) 
FROM dept LEFT JOIN emp 
ON dept.deptno=emp.deptno 
GROUP BY dept.dname;

自连接

一张表的连接,可以内连接也可以外连接。
使用案例:员工表中每个员工都有一个领导,使用领导的员工编号代替,需要显示每个员工的领导姓名。

举个例子:显示所有员工能的领导信息。
表自连接通过别名区分表

SELECT e.ename,e.mgr,m.empno,m.ename
FROM emp AS e LEFT JOIN emp AS m
ON e.mgr=m.empno;

再来个例子:显示每个员工和其他员工工资的比对表
连接条件:根据编号大小,编号小的员工已经产生了对应编号大的员工的关系,后面的员工比对时不用考虑比自己编号小的员工的数据

SELECT a.ename,a.sal,b.ename,b.sal
FROM emp AS a JOIN emp AS b
ON a.empno < b.empno;
显示每个员工和其他员工工资的比对表

再来个例子:显示员工中工资比关羽高的员工

SELECT a.ename,a.sal,b.ename,b.sal
FROM emp AS a JOIN emp AS b
ON a.empno !=  b.empno
WHERE a.ename='关羽' && a.sal<b.sal;
显示员工中工资比关羽高的员工

再来个例子巩固一下:显示员工对应的工资等级

SELECT ename,loc,grade
FROM emp JOIN dept JOIN salgrade
ON emp.deptno=dept.deptno && sal BETWEEN losal AND hisal;
显示员工对应的工资等级

相关文章

  • MySQL入门:多表查询

    多表查询 完整命令格式: 连接方式 内连接:INNER JOIN简写JOIN 外连接:LEFT JOIN和RIGH...

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • SQLAlchemy(四)

    知识要点: 1.多表查询 2.原生SQL的查询 多表查询 在MySQL中我们讲了多表查询,在SQLAlchemy中...

  • 深入浅出MySQL(五)

    多表查询 MySQL中的多表联查 MySQL中多表查询分为三种形式: 笛卡尔积的形式 内连接的形式 外连接的形式 ...

  • MySQL入门练习:多表查询

    本次多表查询操作如下数据:学生信息表student 学生成绩表score 多表查询1: 显示员工的工资等级 显示每...

  • mysql数据库-多表查询

    今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MY...

  • Mysql-多表查询as索引

    1、Mysql多表查询2、information_schema 虚拟库3、索引 1、多表查询 方法(1) 根据需求...

  • 4/30day45_MySql多表

    回顾 MySQL多表查询&权限 今日目标 一 多表查询【重点...】 同时查询多张表获取到需要的数据组成完整的信息...

  • MySQL学习笔记二之单表查询与多表查询

    title: MySQL学习笔记二之单表查询与多表查询tags: MySQL 数据库categories: MyS...

  • MySQL 多表操作

    day07-多表操作 今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建...

网友评论

      本文标题:MySQL入门:多表查询

      本文链接:https://www.haomeiwen.com/subject/ugqfhqtx.html