Excel中使用SQL时的表引用规则
Excel可以获取多种数据库中的数据,在表的引用规则方面也存在一定的差异,在书写SQL查询语句时需要引起注意。下面将介绍几种常用表的引用方法。
1.Excel工作表引用规则Excel工作表在引用时需要将其包含在方括号内“[]”,同时需要在其工作表名称后面加上“$”符号,如:
SELECT * FROM [Sheet1$]
如果要引用工作表中的部分区域,则可以在“$”符号后面添加区域限定。例如,下面的语句表示引用Sheet1的A1:A3区域。
SELECT * FROM [Sheet1$A1:C3]
如果需要在当前工作簿中引用其他工作簿中的工作表,则需要在工作表名称前面加上文件名称限定,文件名包含在方括号内,文件名与工作表之间使用“.”分隔。如:
SELECT *
FROM [D:\MyBooks\8\产品信息new.xlsx].[Sheet1$]
2.SQL Server表引用规则在引用SQL Server数据库表时,无需将表名称包含在方括号内,名称后面也不需要添加“$”符号。自SQL Server 2005开始引入了架构管理方式,如果在一个数据库中有多个对象具有相同的名称,则应使用架构名称来限定表名称。例如,假设Schema1和Schema2架构都含有一个名为TableX的表,而下面的语句明确指定要引用Schema1中的TableX表:
SELECT *
FROM Schema1.TableX
如果所引用的表不是在当前数据库中,则应当以数据库和架构来限定对象名称。例如,下面的语句明确指定要引用AdventureWorks数据库中的Purchasing.ShipMethod表:
SELECT *
FROM AdventureWorks.Purchasing.ShipMethod
如果FROM子句中所指定的表和视图存在相同的列名,则应当使用表或视图名称来限定列名。例如,下面语句所生成的结果集合由Customer表的CustomerID列和Store表的Name列组成,在指定连接条件时,为CustomerID分别使用了Sales.Customer和Sales.Store限定。
SELECT Sales.Customer.CustomerID, Sales.Store.Name
FROM Sales.Customer
JOIN Sales.Store
ONSales.Customer.CustomerID = Sales.Store.CustomerID
WHERE Sales.Customer.TerritoryID = 1
3.Access表引用规则与引用SQL Server数据库表相同,引用Access表时也无需将表名称包含在方括号内,名称后面也不需要添加“$”符号。
当需要在SQL查询中引用当前连接Access数据库之外的其他Access数据库表时,需要在表名称前面加上数据库文件名称限定,文件名包含在方括号内,文件名与工作表之间使用“.”分隔。例如,下面的语句表示对“D:\MyBooks\8”目录下DB.accdb数据库的HumanResources_Department表执行查询。
SELECT *
FROM [D:\MyBooks\8\DB.accdb].HumanResources_Department