加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql实例解析:内联,左外联,右外联,全连接,交叉连接的区别

发布时间:2020-12-12 01:01:01 所属栏目:MySql教程 来源:网络整理
导读:《Mysql实例解析:内联,左外联,右外联,全连接,交叉连接的区别》要点: 本文介绍了Mysql实例解析:内联,交叉连接的区别,希望对您有用。如果有疑问,可以联系我们。 连接分为:内连接、外连接、交叉连接 一、内连接――最常用 定义: 仅将两个表中满足连接条件

《Mysql实例解析:内联,左外联,右外联,全连接,交叉连接的区别》要点:
本文介绍了Mysql实例解析:内联,交叉连接的区别,希望对您有用。如果有疑问,可以联系我们。

连接分为:内连接、外连接、交叉连接
一、内连接――最常用
定义:
仅将两个表中满足连接条件的行组合起来作为结果集.
在内连接中,只有在两个表中匹配的行才能在结果集中出现
关键词:INNER JOIN
格式:SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 条件表达式
说明:
(1)列名表中的列名可以出自后面的两个表,但如果两个表中有同名列,应在列名前标明出处,格式为:表名.列名
(2)若连接的两个表名字太长,可以为它们起个别名. 格式为:表名 AS 别名
(3)INNER是默认方式,可以省略
eg:
select *
from?? t_institution i
inner join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = "5801"
其中inner可以省略.
等价于早期的连接语法
select *
from t_institution i,t_teller t
where i.inst_no = t.inst_no
and i.inst_no = "5801"MYSQL数据库

二、外连接
1、左(外)连接
定义:在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL
关键字:LEFT JOIN
eg:
select *
from?? t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
其中outer可以省略.
注意:
当在内连接查询中加入条件是,无论是将它加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了.当把条件加入到 join子句时,SQL Server、Informix会返回外连接表的全部行,然后使用指定的条件返回第二个表的行.如果将条件放到where子句 中,SQL Server将会首先进行连接操作,然后使用where子句对连接后的行进行筛选.下面的两个查询展示了条件放置位子对执行结果的影响:
条件在join子句
select *
from?? t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
and i.inst_no = “5801”

结果是:
inst_no???? inst_name???????????? inst_no???? teller_no?? teller_name
5801??????? 天河区??????????????? 5801??????? 0001??????? tom
5801??????? 天河区??????????????? 5801??????? 0002??????? david
5802??????? 越秀区
5803??????? 白云区

条件在where子句
select *
from?? t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = “5801”

结果是:
inst_no???? inst_name???????????? inst_no???? teller_no?? teller_name
5801?????????? 天河区??????????????????? 5801????????? 0001?????????????? tom
5801?????????? 天河区??????????????????? 5801????????? 0002????????????? david

2、右(外)连接
定义:
在内连接的基础上,还包含右表中所有不符合条件的数据行,并在其中的左表列填写NULL
关键字:RIGHT JOIN
3、完全连接
定义:
在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL
关键字:FULL JOIN MYSQL数据库

三、交叉连接
定义:
将两个表的所有行进行组合,连接后的行数为两个表的乘积数.(笛卡尔积)
关键词:CROSS JOIN
格式:FROM 表名1 CROSS JOIN 表名2MYSQL数据库

四,自身连接
自身连接是指同一个表自己与自己进行连接.这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据.例如人力资源数据库中雇员与老板的关系.
下面例子是在机构表中查找本机构和上级机构的信息.
select s.inst_no superior_inst,s.inst_name sup_inst_name,i.inst_no,i.inst_name
from t_institution i
join t_institution s
on i.superior_inst = s.inst_no

结果是:
superior_inst sup_inst_name???????? inst_no???? inst_name
800???????????????????????????? 广州市??????????????? 5801??????? 天河区
800???????????????????????????? 广州市??????????????? 5802??????? 越秀区
800???????????????????????????? 广州市??????????????? 5803??????? 白云区
MYSQL数据库

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读