我是靠谱客的博主 活力黑米,最近开发中收集的这篇文章主要介绍数据库的多表连接查询,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

员工表(employeeTB)

 员工编号       员工姓名        部门编号

employeeidnamedetID
0001张三01
0002赵四01
0003王五02
0004郑六02
0005赵七null



部门表(departmentID)

       部门编号               部门名称

 detIDdetname
01技术部
02市场部
03工程部



一要求找到每个员工所属的部门?

答:显然是要将两个表进行连接,进行连接的条件就是:部门编号相等。有以下 的几种连接方式。

1.内连接

从左往右,员工表中有两个01和部门表中对应。两个02和部门表中对应。然后就没有了

select A.employeeID,A.name,B.detname from employeeTB AS A,departmentTB AS B WHERE A.detID=B.detID;或者

select A.employeeID,A.name,B.detname from employeeTB AS A  INNER JOIN departmentTB AS B   ON   A.detID=B.detID;

001张三技术部
002李四 技术部
003王五市场部
004郑六工程部



2.外连接

        左外连接:左边去找右边相等的地方,若找不到,就用null代替
连接中的左表的表中的记录,无论能不能在右表中找到匹配的项,都要检索,如果没有匹配的项目,那么右表中的字段值为NULL(空),在这里就代表,此员工不属于任何部门。 

select A.employeeID,A.name,B.detname from employeeTB AS A  LEFT OUTER JOIN departmentTB AS B   ON   A.detID=B.detID;

001张三技术部
002李四 技术部
003王五市场部
004郑六工程部
005赵七null


      右外连接:右边的表找左边表相等的地方,若找不到,则左边的为null

在部门表中的01在员工表中有两个01对应,02有两个对应,03则没有地方对应,所以03工程部的左边都是null。
select A.employeeID,A.name,B.detname from employeeTB AS A  RIGHT OUTER JOIN departmentTB AS B   ON   A.detID=B.detID;

 

001张三技术部
002李四 技术部
003王五市场部
004郑六市场部

nullnull工程部

    全连接:先左边的表找右边的表,没有就用null填补,然后用右边的表找左边的表,没有的用null填补。

select A.employeeID,A.name,B.detname from employeeTB AS A  FULL OUTER JOIN departmentTB AS B   ON   A.detID=B.detID;

001张三技术部
002李四 技术部
003王五市场部
004郑六工程部
005           赵七                       null

nullnull   工程部

参考:http://www.cnblogs.com/devilmsg/archive/2009/03/24/1420543.html

           http://www.xker.com/page/e2012/0708/117368.html


最后

以上就是活力黑米为你收集整理的数据库的多表连接查询的全部内容,希望文章能够帮你解决数据库的多表连接查询所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部