MySQL多表连接查询

**多表连接查询**(等值查询)//(n个表连接至少需要n-1个连接条件)
select1的字段名,表2的字段名 
 from1名 ‘表1的别名’,表2名 ‘表2的别名’
where 连接的条件 and 其他查询条件;

例:(两表连接)查询工资>5000的员工名、部门名
select e.last_name,d.department_name  
from employees e,departments d  
where e.department_id=d.department_id 
and e.salary>5000;

例:(三表连接)查询工资>5000的员工名、部门名和所在城市
select e.last_name,d.department_name,l.city
from employees e,departments d,locations l
where e.department_id=d.department_id
and d.location_id=l.location_id
and e.salary>5000;


**内连接查询**//inner可以省略,表的顺序可以颠倒
select1的字段名,表2的字段名 
from1名 ‘表1的别名’ inner join2名  ‘表2的别名’
on 连接的条件 where 其他的查询条件;

例:查询工资>5000的员工名、部门名
select e.last_name,d.department_name
from departments d join employees e 
on e.department_id=d.department_id 
where e.salary>5000;

**外连接查询**(左连接,右连接 牢记一种就好)//outer可省略
右连接(右边是主表)
select1的字段名,表2的字段名 
from1'表1的别名' right outer join2'表2的别名'
on 连接的条件 
where 其他的查询条件;

左连接(左边是主表)
select1的字段名,表2的字段名
from1名 ‘表1的别名’ left outer join2名 ‘表2的别名’
on 连接的条件 
where 其他的查询条件;
 
例:查询哪个城市没有部门
select l.city,d.department_name          
from locations l  left outer join
departments d 
on l.location_id=d.location_id
where d.department_id is null;

**全外连接**//MySQL不支持
select1的字段名,表2的字段名 
from1名 ‘表1的别名’ full outer join2名 ‘表2的别名’
on 连接的条件 
where 其他的查询条件;

**自连接查询**//自己与自己连接
select 别名1.字段名,别名2.字段名 
from 表名 ‘别名1inner join 表名 ‘别名2on 连接的条件 
where 其他的查询条件;

例:查询员工名和上级领导的名字
select e.last_name,m.last_name
from employees e inner join employees m 
on e.manager_id=m.employee_id;


**子查询**//子查询放在小括号内,子查询优先于主查询执行,可嵌套多层  
select  字段1,字段2 from1 
where  字段名 关键字(select 字段1    from2);

例:谁的工资比Abel高
(1)查询Abel的工资     
select salary from employees 
where last_name = 'Abel'2)查询工资大于(1)的员工信息	
select * from employees	where salary>(		
select salary from employees 		
where last_name = 'Abel'	);


**使用的数据表和相应包含的字段名**
departments//部门信息表(department_id,department_name,manager_id,location_id)

employees//员工信息表(employee_id,last_name,salary,department_id,manager_id)

locations//城市信息表(location_id,city)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值