浅谈数据库中join操作
2013-11-25 20:01
330 查看
1.Join分为内连接(innerjoin)和外连接(outerjoin)
两者之间的区别在于:前者返回连接表中符合连接条件和查询条件的信息。后者不仅返回连接表中符合连接条件和查询条件的数据行,还返回一些更多的信息。
两者join的基础都是,笛卡尔积连接。 笛卡尔积连接,最简单的连接方式,即,仅仅满足连接条件。A表中的每行数据与B表中的每行数据做连接。 假设A表有m条记录,B表有n条记录,那么笛卡尔积之后就有m*n条记录。 为了清晰地表达,以维基上的例子作为本文的例子。
以下是笛卡尔积连接的结果:
2.内连接(innerjoin)
1)内连接,是默认的连接方式。有两种语法形式:显式以及隐式。显示语法:
select*(join,on的语法)等价于:
fromemployee
innerjoindepartment
onemployee.DepartmentID=department.DepartmentID
select*这便是隐式语法,即我们常常使用的连接方式即为默认的内连接方式。
fromemployee,department
whereemployee.DepartmentID=department.DepartmentID
结果显示如下:
2)内连接分三种:相等连接、自然连接、以及交叉连接
a.相等连接
两表之间用等号=相连接,而不是用其他比较操作符(如<)。前面的查询语句就是相等连接
语法:
select*
fromemployee
innerjoindepartment
onemployee.DepartmentID=department.DepartmentID
=>等价于(专门表示方法)
select*
fromemployee
innerjoindepartment
using(DepartmentID)
【结果显示跟上面一样)】
b.自然连接
是相等连接的特例,再特殊化,即如果连接的两表有相同属性名称,则这个相同的属性将会自动做相等连接、并且最终显示结果,相同的属性仅显示一次,不重复。
语法:
select*
fromemployeenatual
joindepartment
结果显示如下:c.交叉连接即笛卡尔积连接,上面有讲述,不累述。
语法:
select*=>
fromemployeecrossjoindepartment
select*【隐式的笛卡尔积连接,无连接条件下】
fromemployee,department.
3.外连接(outerjoin)
外连接分成三种:左外连接、右外连接以及全外连接。
a.左外连接:将左表中除了满足连接条件的行显示在结果中之外,不满足的行也同样显示在结果中(额外信息).
语法:
select*
fromemployee
leftouterjoindepartment
onemployee.DepartmentID=department.DepartmentID
【注意:joinon是连在一起的语句块】
结果显示如下:
b.右外连接:与上述操作不同在于’左‘改成’右‘;
rightouterjoin...on
结果显示如下:
【注:左外连接=》右外连接,表的位置变换下】
c.全连接:左外连接+右外连接
fullouterjoin…on
结果显示如下:
相关文章推荐
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- mysql问答汇集
- Redis偶发连接失败案例实战记录
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle 数据库 临时数据的处理方法
- 不限连接数如何设置?
- 最近比较流行的数据库挂马
- 打开网络连接就死机
- 重装主控服务器后,数据库连接失败的解决办法:请正确还原数据库。
- 九种防MDB数据库被下载的方法小结
- asp向数据库插入数据的方法rs