数据库中四种常用的连接语句

来源:互联网 发布:己知阴影面积为10dm 编辑:程序博客网 时间:2024/05/22 12:20

前言

       最近在做的一个项目中用到了很多表之间连接的操作,昨天验收的时候,师傅也说了,涉及到多个表的数据的时候,尽量使用SQL语句来查询,避免使用视图,因为如果使用视图的话, 但凡添加了表中的字段,那么原来的视图就不能再用了,还要建立新的,扩展性非常差,所以今天就来总结一下表的连接操作


连接的分类



连接的条件

  1. NATURAL:表示自然连接,即在两个关系的公共属性上做等值连接,运算结果中公共属性只出现一次
  2. ON等值连接条件:具体列出两个关系在哪些相应属性上做等值连接
  3. USING(A1,A2,A3...):类似NATURAL,括号里的是两个表的公共属性,但可以不是全部公共属性

举个例子:(最近在做一个办公用品的小项目,就那这个作为实例吧)

需求说明:这里有两张表,一张是用户表,另一张是部门信息表,需求是每个部门要去领取办公用品,所以他们每一个部门都需要有一个部门代码,这个代码也就是他们登录这个系统填写领用表的用户名,所有的部门级别都是一般用户,还有一个角色是拥有更高权限的管理员,管理员不隶属与部门,所以管理员不存在于部门表中,两张表详细信息如下:

用户信息表(T_userinfo)




部门信息表(T_departmentinfo)




(1)内连接(inner join)

检索出所有部门的用户名、部门名称、级别,我们分析一下,用户名是一个连接两个表的桥梁,因为userID就是departmentCode,所以使用ON条件,将二者做等值连接,所以说必须满足这个条件才会被检索出来,所以这些数据中没有管理员的信息

<span style="font-size:18px;">select u.userid,d.departmentName,u.[level] from [dbo].[T_userinfo] uinner join [dbo].[T_departmentinfo] d on u.userID =d.departmentCode</span>

查询结果:




(2)左/右/完全外连接(left/right/full outer join)

这三种外连接的区别就是基准不同,左外是以左边的表,也就是T_userinfo表,这张表中的信息如果在T_department中没有数据,那么部门表中涉及到的字段就是NULL,右外连接是以T_department表为基准,而完全外连接则没有基准,所有数据都检索出来,这三种语句只有一个关键字的区别,所以我只写了一个语句

select u.userid,d.departmentName,u.[level] from [dbo].[T_userinfo] uleft outer join  [dbo].[T_departmentinfo] d on u.userID =d.departmentCode

左/右外连接查询语句对比的效果图:



完全外连接的效果图:




总结:


        其实这个项目中还涉及了一些其他比较有意思的查询语句,以后有时间在总结。不管怎样,这个项目终于结束了,在做完牛腩后,有机会接一个和牛腩差不多的项目感觉特别的好,对于asp.net中的一些控件的使用更加的熟练了,而且在看ASP.NET的视频,就觉得简单了很多,因为老师讲的内容在做这个小项目的时候,就找了很多资料,看了很多博客,一点点摸索,希望在今后可以深入学习.Net开发的知识。


0 0
原创粉丝点击