zoukankan      html  css  js  c++  java
  • Sql Server2008温故而知新系列09:查询-连接查询(join关键字)

    连接,查询的核心;简单的理解就是多表联合查询;

    如:有员工表emp,其中记录了所有员工信息,包含了员工的部门编号,但是没有部门名称;

      有部门表dept,其中记录了所有部门信息,包含部门编号、名称、部门人数、办公地点等;

    现在想查询所有员工姓名及其所有的部门名称,那么仅查询员工表或者仅查询部门表都满足不了;

    这个时候就需要用到多表查询了;

    如上查询简单的查询有两个:

    1 --查询五行记录
    2 select top 5 emp.name,dept.name 
    3     from emp,dept 
    4     where emp.deptid=dept.deptid 
    5     order by emp.name
    6 select top 5 emp.name,dept.name 
    7     from emp
    8     inner join dept on emp.deptid=dept.deptid     --连接依据:过滤掉一些多余的不符合条件的数据(连接产生笛卡尔乘积)
    9     order by emp.name

    这是最基本的内连接:inner join  不过inner通常会略去,直接写成join; 

    当查询语句中有重复的字段名称时,需要用table_name.field_name来区别;也可以用别名来代替表名简化书写。

    上面的查询也可以直接写成:

    select top 5 a.name,b.name from emp a,dept b where a.deptid=b.deptid order by a.name

    select top 5 a.name,b.name from emp a join dept b on a.deptid = b.deptid order by a.name

    结果都是一致的;

     当然了,有内连接,自然有外连接;左连接left outer join,右连接right outer join; 全连接full outer join,outer通常省略;

    不过都大同小异,同时内连接是使用最频繁的;

    附上其它几个连接:

    1、left join :左连接 --> tableA left join tableB [on tableA.field = tableB.field] :查询所得的记录中,如果左表中有不符合(ON条件)的,

      也列举出来,tableB中没有数据以则显示NULL

    2、right join : 右连接 与左连接刚好相反

    3、full join (笛卡尔乘积) 显示左右两个表的所有记录,不符合匹配条件的全部显示NULL,这个用得很少,几乎不怎么用了

    --Ocarina我是一只可爱的小尾巴
  • 相关阅读:
    WordPress让文本小工具支持简码
    修改WordPress后台登录地址,提高安全性
    WordPress用键盘左右方向键来查看上一篇和下一篇文章
    Git 补丁操作
    Git 标签操作
    Git 修正错误
    Git 删除操作
    Git 重命名操作
    Git 移动操作
    Git 藏匿操作
  • 原文地址:https://www.cnblogs.com/azrealer/p/11897346.html
Copyright © 2011-2022 走看看