SQL SERVER 2008用Select操作处理数据(三)——From子句数据源

典型的SQL SELECT语句的第一个逻辑组成FROM子句。在简单的SQL SELECT语句中,FROM子句包含一个表。然而,FROM子句也可合并多个数据源和多种数据源的数据。单个SQL SELECT语句中可访问的表的最大数量是256个。

FROM子句是SQL语句其余部分的基础。要把一个表列放在输出中,或在WHERE条件下访问,或放在ORDER BY中,该表列就必须在FROM子句中。

一、可能的数据源

SQL非常灵活,且在FROM子句可接受7个截然不同类型的数据源的数据。

1、本地SQL Server表

2、子查询作为派生表,也称为子选择或内联视图。公用表表达式(CTE)(参见:http://www.cnblogs.com/kissdodog/archive/2013/06/24/3153012.html)的功能类似于子查询,但在查询中可以多次引用。

3、视图或存储的SELECT语句,可以像表一样在FROM子句中引用。

4、表值用户定义的函数返回行和列。

5、颁布式数据源使用OPENQUERY()和其他分布式函数从其他SQLServer、其他数据库平台(例如:Microsoft Access、Oracle、Forxpro)或应用程序(如Excel)中提取数据。

6、全文搜索可以返回包含有关哪些行包括特定词的信息的数据集。

7、透视在FROM子句内创建交叉表。

XML数据源使用XQuery。

SQL Server 2008添加了两个数据源:

1、行构造函数使用values()子句构建硬编码的行。

2、来自插入、更新或删除命令的插入和删除的虚拟表,可使用output子句以子查询的形式将它们传递到外部查询。

二、表别名

FROM子句中可为数据源指派名。一旦数据源有别名,就必须使用这个新名称引用它。在某些情况下,数据源必须有别名,下面的代码访问Fun表,但有查询中用A引用它:

--From Table As Table Alias

Use Mydb  --数据库名称

SELECT A.FunID,A.FunName

From fun AS A;

使用关键字AS为列或数据源指派别名,这是可选的,通常可忽略。但作为一项规则,应该总是包括AS关键字。

三、列名称

如果数据库对象的名称,如表名或列名,与SQ保留字相冲突,可以将它放在方括号内让SQL清楚它的对象名称。注意,方括号物定于SQL Server且不属于ANSI SQL标准的一部分。

虽然在数据库对象名称之间包含空格是非常低劣的做法,但它仍是可行的。如果是这种情况,指定数据库对象时必须有方括号。Northwind示例数据库中的Order Details表说明了这一点:

USE Northwind

SELECT OrderID,ProductID,Quantity

From[Order Details]

四、完全限定的名称

表的完全且正确的名称不仅是表的名称,而且称为完全限定的名称,有时非正式地称为4部分组成的名称:

Server.database.schema.table

如果表处于当前数据库中,那么不需要服务器和数据库名称,因此当SQL Server开发人员讨论限定的表名称时,通常指两部分组成的表名称。

出岔子编写较简洁的代码外,使用限定的名称有两个特别的好处:

1、同一个表可能存在于多个架构中。如果是这样的话,那么选择的架构基于用户的默认架构。限定名称可避免意外地使用了错误的表。

2、查询引擎重用查询执行计划需要限定的表名称,这对于提高性能非常重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掌控自身命运

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值