Chinaunix首页 | 论坛 | 博客
  • 博客访问: 488045
  • 博文数量: 158
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 904
  • 用 户 组: 普通用户
  • 注册时间: 2016-10-10 11:17
文章分类

全部博文(158)

文章存档

2018年(74)

2017年(84)

我的朋友

分类: SQLServer

2018-03-21 10:17:36

【摘要】联接查询、视图

【正文】

本文转自——学领未来

联接查询主要有:交叉联接、内联接、外联接(左联接和右联接)

交叉联接:在逻辑上,交叉联接是一种最简单的联接,只实现一个逻辑查询步骤(笛卡尔积)。
在数据库新建Student表和Teacher表
                                                   
使用交叉联接得出结果:
从结果可以看出,交叉联接的结果就是student表中每行数据与teacher表中每行数据的循环结合,结果是5*4=20条数据
内联接:会应用两个逻辑查询处理步骤,首先像交叉联接进行笛卡尔积运行,然后再根据给定条件进行过滤
过滤后只有满足条件4条数据
外联接:
在外联接中,把一个表标记为“保留的”表,如左联接中left关键字左边表的行是保留的,而右联接中right关键字右边表的行是保留的。
左联接:
从结果可以看出,左联接会先满足left关键字左边表的行,就算是右边表没有数据也会以null填充,这里的null只是占位符
右联接:
右联接和左联接是一样的原理是一样的,不同的是先满足右边表,值得注意的是红色框部分,当左边表有多条数据对应右边表一条数据的时候也会查出来。

视图View:是从一个或几个基本表(或视图)导出的虚拟表。

创建格式;go  create view  视图名称  as  视图内容(一般是从其他表查询的数据 ) go
注意:创建视图必须在批处理里面,不允许存在同名列,如上面表我将teacher表的name列改为tname列,并且不查询ID才能成功查询
这时我们改变teacher表的数据内容
再来查询myview视图的数据
从结果可以看出视图的数据会根据源表数据的改变而改变,这正是视图的作用。
视图是虚拟表,只供查询数据用的,例如当我们需要从多张表中联接取数据时,我们可以将这复杂查询过程的结果生成一个view视图,那么在后面调用的时候就只需要通过最简单的查询语句select * from view名称就行了


参考《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》

阅读(1737) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~