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中不支持。

  • 相关阅读:
    观察者模式(Observer)
    怎样解决Java Web项目更改项目名后报错
    MAVEN最佳实践:模块划分
    java.lang.OutOfMemoryError: PermGen space及其解决方法
    以Windows服务方式启动MySQL,并将其默认编码设置为UTF-8
    ubuntu 12.04和Windows 7双系统的安装方法
    允许ubuntu下mysql远程连接
    Linux 系统目录介绍
    SVN中图标符号的含义
    简单介绍Linux下安装Tomcat的步骤
  • 原文地址:https://www.cnblogs.com/quanby/p/5484275.html
Copyright © 2011-2022 走看看