ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库-多表连接查询

2020-11-17 22:01:45  阅读:603  来源: 互联网

标签:多表 -- 数据库 t2 t1 did join 查询 select


-- 多表连接查询

-- 定义: 两张或两张以上的表 通过关联关系,联合查询并获取多表的字段信息
-- 1、内连接
-- 根据两张表的关联条件,获取它们共有的部分 , 取交集
-- 语法: select * from 表1 inner join 表2 on 条件(有关系的两张表的字段)
-- 或 select * from 表1 ,表2 where 条件1
-- 查询学生所在的 系部信息
select * from t_student;
select * from t_dept;
insert into t_student(sid ,sname ,sscore ) values(1000,'李全权',500);

select * from t_student inner join t_dept on t_student.did = t_dept.did

select * from t_student t1,t_dept t2 where t1.did = t2.Did

-- 查询学生 系名, 和 系主任
select * from t_man;

select sname ,dname ,mname from t_student as t1
inner join t_dept as t2 on t1.did = t2.did
inner join t_man as t3 on t3.mid = t2.mid

-- 2、外连接
-- 2.1 左外连接 select * from 表1 left join 表2 on 条件
-- 以left左边的表为主表关联查询,查询关联的记录,如果不能关联上的返回null记录

-- 查询学生信息 和他的系信息
select * from t_student t1 left join t_dept t2 on t1.did = t2.did

select * from t_student t1
left join t_dept t2 on t1.did = t2.did
left join t_man t3 on t3.mid = t2.mid

-- 2.2 右外连接 select * from 表1 right join 表2 on 条件
-- 以right右边的表为主表, 查询右边表的所有记录。
-- 查询学生信息
select * from t_student t1 right join t_dept t2 on t1.did = t2.did
-- 等价于 以下的左外连接
select * from t_dept t1 left join t_student t2 on t1.did = t2.did ;

-- 2.3 全外连接 ,关联两张表所有的记录 (MySql 不支持 ,Oracle支持 )
select * from t_student t1 full join t_dept t2 on t1.did = t2.did ;

27 (26+1)
7 (5+2)
-- 最终 26+1 +2 =29

-- 2.4 自连接(自己表关联自己表 ) 或 笛卡尔积连接 :
-- 自连接
select t1.id ,t1.name ,t1.pid , t2.name as pname from baseinfo t1 , baseinfo t2
where t1.pid = t2.id

-- 两张表之间没有关联条件
select * from t_student t1 ,t_dept ;

查询各个部门员工工资大于平均工资(平均工资包括所有员工)的人数

select deptno , count(*) from emp
where sal > (
select avg(sal) from emp
)

group by deptno

查询出有3个以上下属的员工信息 --

select * from emp order by mgr ;

select * from emp where empno in (
select mgr from emp group by mgr
having count(*)>=3
)

标签:多表,--,数据库,t2,t1,did,join,查询,select
来源: https://www.cnblogs.com/z5452830/p/13996806.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有