MySQL之多表操作

MySQL多表

一、多表查询

     多表查询的分类

                                       MySQL之多表操作_第1张图片

  1. 内连接

查询的数据是多张表中有关联的数据

隐式内连接:

select * from A,B where 条件;

显示内连接:

select * from A inner join B on 条件

 

2、外连接

左外连接:

select * from A left [outer] join B on 条件

右外连接:

select *from A right [outer] join B on 条件

左外连接特点:


以左表为基准去匹配右表中的数据,如果能匹配到,将数据展示,如果匹配不到,将左边的数据展示,右边中的数据展示为null


右外连接特点:


以右表为基准去匹配左表中的数据,如果能匹配到,将数据展示,如果匹配不到,将右表的数据展示,左表中的数据展示为null


3、子查询

概述:

将上一条select 语句结果作为另外一条select 语法的一部分

 

子查询的三种情况

  1. 子查询的结果是一个值得时候

查询工资最高的员工是谁

select max(salary) from emp;

select * from emp where salary=(select max(salary) from emp);
  1. 子查询的结果是单列多行的时候

查询工资大于5000的员工,来自于哪些部门的名字

select dept_id from emp where salary>5000;

select name from dept where id in(select dept_id from emp where salary>5000);
  1. 子查询的结果是多行多列的时候

查询出2011年以后入职的员工信息,包括部门名称

select *from where join_date>"2010-12-31";

select *from (select *from where join_date>"2010-12-31")ee,dept where ee.dept_id = dept.id;

结论:

子查询结果只要是 单列,肯定在 where后面作为 条件

select 查询字段 from 表名 where 字段=(子查询);

子查询结果只要是 多列,肯定在 from 后面作为 表

select 查询字段 from (子查询) 表别名 where 条件;

 

 

你可能感兴趣的:(mysql,数据库,sql,java)