zoukankan      html  css  js  c++  java
  • mySQL联接

    为什么要用联接

    我们可以使用子查询帮助进行多表查询,但它有时候并不能给我们所需要的一切,而且不断嵌套的子查询显得语法有些杂乱,特别是相关子查询更会严重影响性能。那么如何更好地解决多表查询所存在的问题呢,SQL为我们提供了一种更简单的语法,那就是联接。

    内联接

    内联接是一种典型的联接运算,使用像=或者<>之类的比较运算符。包括相等联接、非相等联接和自然联接,是使用比较运算符根据每个表共有的列的值匹配两个表中的行。比如select e.eName,d.dName from emp e (inner)join dept d on e.deptNo=d.deptNo;这句话就是将员工表emp和部门表dept根据相等的部门编号depNo进行内联接,并查找出员工名和部门名字,括号表示可以省略的关键字。

    外联接

    1、左外联接(left join 或left outer join):左向外联接的结果包括left outer 子句中指定左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集
    行中右表的所有选择列表均为空值。比如select e.eName,d.dName from emp e left join dept d on e.deptNo=d.deptNo;这时,在员工表emp中有一个员工‘zhangsan’还没分配部门,但任然会显示出该行,但在部门名字depName一列则显示为空。

    2、右外联接(right join 或 right outer join):右向外联接是左向外联接的反向联接,与左外联接刚好相反,右表的某行在左表中没有匹配行,则将为左表返回空值。比如select e.eName,d.dName from emp e RIGHT join dept d on e.deptNo=d.deptNo;这时,部门表dept中有一个部门‘research’还没有员工,但仍然会显示该行,但在员工名eName一列会显示为空,但没有部门的‘zhangsan’则不会被显示出来。

    3、全外联接(full join 或 full outer join):全外联接返回左表和右表中的所有行,是左外联接和右外联接的结合,但在mysql中不支持。

  • 相关阅读:
    智器SmartQ T7实体店试用体验
    BI笔记之SSAS库Process的几种方案
    PowerTip of the Day from powershell.com上周汇总(八)
    PowerTip of the Day2010071420100716 summary
    PowerTip of the Day from powershell.com上周汇总(十)
    PowerTip of the Day from powershell.com上周汇总(六)
    重新整理Cellset转Datatable
    自动加密web.config配置节批处理
    与DotNet数据对象结合的自定义数据对象设计 (二) 数据集合与DataTable
    在VS2003中以ClassLibrary工程的方式管理Web工程.
  • 原文地址:https://www.cnblogs.com/quanby/p/5484275.html
Copyright © 2011-2022 走看看