日期:2014-05-17  浏览次数:20474 次

求解析。MSSQL中的好多专有名词不懂,请帮忙解析一下。
题如下:
你正在使用一个SQL Server 2005数据库,它包含一个名为Customers的表。其中Customers
表包含如下的列定义: 
   
列名 类型  
CustomerID Int 
CompanyName Varchar(50) 
FirstName Varchar(20) 
LastName Varchar_(20) 
Picture Varbinary(max) 
Address1 Varchar(30) 
Address2 Varchar(30) 
City Varchar(30) 
StateProvince Char(2) 
PostalCode Varchar(10) 
CountryCode Char(2) 
 
你使用以下Transact-SQL语句创建一个名为v_Customer的视图。 
CREATE VIEW v_Customer AS  
SELECT CustomerID, CompanyName, FirstName, LastName, Picture  
FROM Customers。 
你想要在v_ Customer视图中创建一索引。在创建索引前,还需要修改此Transact-SQL语句。
应采取哪两项举措?
答案:
  1.表名包含模式名
  2.包含WITH SCHEMABINDING 语句 
  就是这个题。请问那个什么是模式名啊。。。。初学。。不太懂
 

------解决方案--------------------
SQL code

---索引视图

索引视图是具体化的视图

--创建索引视图
create view 视图名 with schemabinding 
as
select 语句
go

---创建索引视图需要注意的几点
1. 创建索引视图的时候需要指定表所属的架构
--错误写法
create view v_f with schemabinding 
as
select
   a.a,a.b,b.a,b.b
from
   a join b 
on
   a.id=b.id
go

---正确写法:
create view v_f with schemabinding 
as
select
   a.a,a.b,b.a,b.b
from
   dbo.a join dbo.b 
on
   a.id=b.id
go


2.在创建索引视图的select语句时,不使用*,必须指定具体的列名
--错误写法
create view v_f with schemabinding 
as
select
   *
from
   dbo.a join dbo.b 
on
   a.id=b.id
go

---正确写法
create view v_f with schemabinding 
as
select
   a.a,a.b,b.a,b.b
from
   dbo.a join dbo.b 
on
   a.id=b.id
go

3.在创建索引视图的select 语句中,不能存在重复的列名,这个不举例了

4. 只能为索引视图创建唯一聚集索引
--正确的写法
create unique clustered index ix_uniquetb on v_tb
go

--错误的写法 
create clustered index ix_uniquetb on v_tb
go

------解决方案--------------------
1.表名包含模式名
应该是DBO吧。那是架构名