当前位置:   article > 正文

MySQL中多表查询总结_mysql多表查询心得体会

mysql多表查询心得体会

在工作之后,数据库运用最多的就是查询了,多表查询有三类,分别是:内连接查询、外连接查询、子查询。下面我们一一介绍。

文章前提是:存在两张表:employees(员工表),departments(部门表);其中员工表中有外键dept_id指向部门表的主键id.

一、内连接查询

  • 写内连接查询前要考虑的问题
  1. /*
  2. 1、从哪些表中查数据?
  3. 2、条件是什么?
  4. 3、查询哪些字段?
  5. */
  • 隐式内连接:使用where条件
  1. -- 查询员工的姓名,性别,生日以及部门
  2. select employees.last_name,employees.gender,employees.birth_date,departments.dept_name
  3. from employees,departments
  4. where employees.dept_id=departments.id;
  • 显示内连接:
  1. -- 语法:select 字段列表 from 表1 inner join 表2 on 条件
  2. -- 示例:展示员工信息和部门信息
  3. select * from employees
  4. inner join departments
  5. on
  6. employees.dept_id=departments.id limit 10

二、外连接查询

  • 左外链接
  1. -- 语法:select 字段列表 from 表1 left (outer) join 表2 on 条件
  2. -- 说明:查询的是左表所有数据以及其交集部分
  • 右外连接
  1. -- 语法:select 字段列表 from 表1 right (outer) join 表2 on 条件
  2. -- 说明:查询的是右表所有数据以及其交集部分

三、子查询

  1. -- 概念:查询中嵌套查询,称嵌套的查询为子查询
  2. -- 重要:
  3. /*
  4. (1)情况一:
  5. 子查询的结果是单行单列的
  6. 子查询可以作为条件,使用运算符去判断(>,<,>=,<=,=)
  7. (2)情况二:
  8. 子查询的结果是多行单列的
  9. 子查询可以作为条件,使用in来判断
  10. (3)情况三:
  11. 子查询的结果是多行多列的
  12. 子查询可以作为一张虚拟表
  13. */
  14. -- 示例情况一:查询员工工资小于平均工资的人
  15. select * from employees where employees.salary<(select avg(salary) from employees);
  16. -- 示例情况二:查询'财务部'和'市场部'所有员工信息
  17. select * from employees where dept_id
  18. in
  19. (select id from departments where name='财务部' or name='市场部')
  20. -- 示例情况三:查询员工入职日期是2011-11-11日之后的员工信息和部门信息
  21. select * from departments t1,
  22. (select * from employees where employees.join_date>'2011-11-11')t2
  23. where t1.id=t2.dept_id;

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/834003
推荐阅读
相关标签
  

闽ICP备14008679号