赞
踩
在工作之后,数据库运用最多的就是查询了,多表查询有三类,分别是:内连接查询、外连接查询、子查询。下面我们一一介绍。
文章前提是:存在两张表:employees(员工表),departments(部门表);其中员工表中有外键dept_id指向部门表的主键id.
一、内连接查询
- /*
- 1、从哪些表中查数据?
- 2、条件是什么?
- 3、查询哪些字段?
- */
- -- 查询员工的姓名,性别,生日以及部门
- select employees.last_name,employees.gender,employees.birth_date,departments.dept_name
- from employees,departments
- where employees.dept_id=departments.id;
- -- 语法:select 字段列表 from 表1 inner join 表2 on 条件
- -- 示例:展示员工信息和部门信息
- select * from employees
- inner join departments
- on
- employees.dept_id=departments.id limit 10
二、外连接查询
- -- 语法:select 字段列表 from 表1 left (outer) join 表2 on 条件
- -- 说明:查询的是左表所有数据以及其交集部分
- -- 语法:select 字段列表 from 表1 right (outer) join 表2 on 条件
- -- 说明:查询的是右表所有数据以及其交集部分
三、子查询
- -- 概念:查询中嵌套查询,称嵌套的查询为子查询
- -- 重要:
- /*
- (1)情况一:
- 子查询的结果是单行单列的
- 子查询可以作为条件,使用运算符去判断(>,<,>=,<=,=)
- (2)情况二:
- 子查询的结果是多行单列的
- 子查询可以作为条件,使用in来判断
- (3)情况三:
- 子查询的结果是多行多列的
- 子查询可以作为一张虚拟表
- */
- -- 示例情况一:查询员工工资小于平均工资的人
- select * from employees where employees.salary<(select avg(salary) from employees);
- -- 示例情况二:查询'财务部'和'市场部'所有员工信息
- select * from employees where dept_id
- in
- (select id from departments where name='财务部' or name='市场部')
- -- 示例情况三:查询员工入职日期是2011-11-11日之后的员工信息和部门信息
- select * from departments t1,
- (select * from employees where employees.join_date>'2011-11-11')t2
- where t1.id=t2.dept_id;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。