数据库:SQLServer 2008
我们先创建两个表
Testuser表:描述所有注册用户,每个用户有一个唯一的用户ID :
=== 【userid,username,password】
UserInfo表:对应TestUser表中的用户的其他一些基本信息,userid即为用户ID(注意,为了显示,其中有两个相同的用户ID)。
=== 【infoid,userid,school,mail】
==========================================================================================
1左连接
以左边的表为基准来连接两个表,左边所有满足条件的项都会列出来,右边有对应的数据如果没有,只能以NULL显示。
原则是这样: 左表有的话一定会显示(右表若没有则补NULL),右边有的左边也有的也一定会显示。
2右连接
以右边的表为基准,左表中的记录只有当右表中有对应的记录的时候才会显示出来。
可以看到左表中的0,3,4这几项并没有在结果中显示出来。
原则: 只显示那些右表对应的元组。
===========================================================================================
3全连接
二个表中的数据都显示出来,这里演示效果与左连接一样
4内连接
userid字段同时存在在两个表中的那些记录才显示出来。
===========================================================================================
(前面“左连接”和“右连接”对应,“全连接”和“内连接”对应)
5交叉连接
没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生5*3=15条记录)。
6自连接
新建一个职工表,每一个职工都有一个ID,也有一个上级ID,这个上级也是这个表里面的职工。
我们使用自连接来查询出所有职工,以及其上级职工。