mysql 连接关系介绍

单表查询:数据来源于一张表

多表查询:数据来源于多张表的查询

交叉连接(cross join)

交叉连接指的是两张或多张表进行的笛卡尔积

两张或多张表中每一行的数据任意组合的结果

语法:select 查询内容 from table1 cross join table2

emp和dept 表进行交叉连接

select * from emp cross join dept

总记录数= emp记录数 * dept记录数 13*4=56 emp的13行记录数与dept4行数据都进行一次匹配

自然连接(natural join)

有相同字段的两个表进行连接会自动去除重复字段列,可以使用where 条件查询

语法 select * from emp natural join dept;

两个表必须有相同的字段 自然连接后会自动去重复字段

内连接;是使用频率最高的连接查询操作,在两张或 多张表生成的笛卡儿积记录中筛选出与连接条件相匹配的数据记录,过滤掉不匹配的记录。

 

select from table1 ,table2 where 关联条件

select * from emp as e,dept as d where e.deptno=d.deptno

sql99 inner join 可以省略为 join

select 查询内容 from table inner join table2 on 关联条件

select e.*,e.ename from emp e inner join dept d on e.deptno = d.deptno where deptno=30

自连接 :连接的两张表是同一张表

select from emp e,emp m where e.mgrm.empno

select e.empno,e.ename,e.sal,e.mgr,m.empno,m.ename

select e.empno ,e.ename,e.sal,e.mgr,m.empno,m.ename,m.sal from emp e join emp m on e.mgr = m.empno

外连接:不仅要查询两张或多张表中满足条件的记录,还要查询其中某张表中不满足连接条件的记录

按照不匹配记录来源的不同可以将外连接分为左外连接和右外连接。

Select * from emp e,dept d where e.deptno = d.deptno;。

要查询雇员信息及雇员所在部门信息,没有雇员的部门也要显示

select 查询的内容 from table left|right [outer] join table2 on 连接条件

left join :左外连接 将放到left join 左边表中不满足条件的记录也显示

right join 右外连接 将放到ringt join 右边表中不满足条件的记录也显示

例如:查询雇员信息 及雇员所在部门信息 没有雇员的部门也要显示

left join 左外连接

select * from dept d left join emp e on e.deptno = d.deptno

 

ringt join 右外连接

select * from emp e right join dept d on e.deptno = d.deptno

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值