首页 > 编程知识 正文

内连接和外连接效率,mysql左外连接查询

时间:2023-05-05 20:36:49 阅读:152929 作者:4785

前言我写sql查询时,使用最多的是where条件查询。 此查询也称为内联查询inner join,当然还有外联查询outer join、左外连接和右外连接查询。 在多对多关系中经常被使用。 他们的区别和联系是什么呢?

内连接inner join内连接的最常见定义:

连接结果中只将与连接条件匹配的行分组为结果集,参与连接的两个表必须使用与连接条件匹配的关键字。 INNER JOIN连接多个表。 这意味着返回两个表的交集(阴影)部分,如下图所示。

下一个sql查询语句

查询分配了部门信息的所有用户信息

也就是说,部门id只有在用户表和部门表中都存在行相应的数据时才能被展示

select u.USERNAME、u.MOBILE、u.EMAIL、d.dept _ name fromt _ useruinnerjoint _ deptdonu.dept _ id=d.dept _ name

内连接还具有不需要显示的指定INNER JOIN关键字的隐式写法

中选择所需的族

select u.USERNAME、u.MOBILE、u.EMAIL、d.DEPT_NAMEfrom t_user u、t _ deptdwhereu.dept _ id=d.dept _ id一般信息

外连接outer join左(外)连接left join定义:

左(外)合并显示左表中的所有记录,右表中仅显示符合搜索条件的记录。 右表中记录不足的地方都是空的。 如下图所示。

语法leftjoinonleft outer joinonleftjoin是leftouterjoin的缩写,全名为左外连接,是外连接之一。

下一个sql查询语句

查询所有员工信息,包括部门信息

select u.USERNAME、u.MOBILE、u.EMAIL、u.DEPT_ID、d.dept _ name fromt _ useruleftouterjoint _ deptdonu.dept

select u.USERNAME、u.MOBILE、u.EMAIL、u.DEPT_ID、d.dept _ name fromt _ useruleft joint _ deptdonu.dept _ id 此时,因为我们使用了左外连接,所以可以检测出其记录,但是不能检测出t_dept表中的字段的值

定义右(外)连接right join :

右(外)合并后,将显示右表中的所有记录,但左表中仅显示符合搜索条件的记录。 左表记录不足的地方都为NULL,如下图所示。

语法rightjoinonright outer joinonrightjoin是rightouterjoin的简称,全称是右外连接,是外连接的一种。

按如下方式查询sql语句

select u.USERNAME、u.MOBILE、u.EMAIL、u.DEPT_ID、d.dept _ name fromt _ userurightjoint _ deptdonu.dept _ d

select u.USERNAME、u.MOBILE、u.EMAIL、u.DEPT_ID、d.dept _ name fromt _ userurightouterjoint _ deptdonu.dept

内连接摘要:连接的结果中只包含满足连接条件的行,参与连接的两个表必须满足连接条件。

外连接:连接结果不仅包括满足连接条件的行,还包括自身不满足条件的行。 包括左外部连接、右外部连接、全外部连接。

左外连接:保留左表中的所有数据行,右表中保留满足连接条件的行。

右外连接:保留右表中的所有数据行,左表中保留满足连接条件的行。

所有外部连接:左外部连接union右外部连接,Mysql暂时不支持。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。