SQL_Server_2008完全学习之第五章操作架构、索引和视图

1、创建视图

 

语法格式:

CREATE VIEW view_name(view_column_name) as query_expression [WITH CHECK OPTION]

 

Create view V_CompnayInfo
as
    select a.UserId,a.UserName,b.CompanyName
    from 
    T_Member a,T_Company b
    where a.UserId = b.UserId
    
Select * from V_CompanyInfo 

 

2、修改和删除视图

 

语法格式:ALTER VIEW <view_name>[<column name list>] AS <SELECT statement> [WITH CHECK OPTION]

 

Alter view V_UserInfo
as
    select a.UserId
    from 
    T_Member a join T_Company b
    on
    a.UserId = b.UserId
    join
    T_Manager c
    on
    b.CompanyId = c.CompanyId
    
Drop view V_UserInfo

 

3、通过视图修改数据

 

注意事项:

1)SELECT 列表中含有 DISTINCT。

2)SELECT 列表中含有表达式,如计算列、函数等。

3)在FROM 子句中引用多个表。

4)引用不可更新的视图。

5)GROUP BY或HAVING子句。

 

4、索引概述

 

索引

1)索引是一个单独的、物理的数据库结构,它是某个表中一列或者若干列的集合和相应的指向表中物理标识这些值 的数据页的逻辑指针清单。索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法。一个表的存储是由两部分组成的,一部分用来存放表的数据页面,另一部分存放索引页面。索引就存放在索引页面,从中找到所需数据的指针,再直接通过指针从数据页面中读取数据。从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然比没有目录的书方便、快捷。

 

2)索引一旦创建,将由数据库自动管理和维护。例如,在向表中插入、更新或者删除一条记录时,数据会自动在索引中做出相应的修改。在编写SQL查询语句时,具有索引的表与不具有索引的表没有任何区别,索引只是提供一种快速访问指定记录的方法。

 

为什么使用索引?

1)保证数据记录的唯一性。唯一性索引的创建可以保证表中数据记录不重复。

2)加快数据检索速度。表中创建了索引的列几乎可以立即响应查询,因为查询时数据库会首先搜索索引列,找到要查询的值,然后按照索引中的位置确定表中的行,从而缩短了查询时间;而未创建索引的列在查询时就需要等待很长时间,因为数据库会按照表的顺序逐行进行搜索。

3)加快表与表之间的连接速度。如果从多个表中检索数据,而每个表中都有索引列,则数据库可以通过直接搜索各表的索引列,找到需要的数据。不但加快了表间的连接速度,也加快表间的查询速度。

4)在使用ORDER BY 和 GROUP BY子句中进行检索数据时,可以显著减少查询中分组和排序的时间。如果在表中的列创建索引,在使用ORDER BY 和GROUP BY子句对数据进行检索时,其执行的速度将大大提高 。

5)可以在检索数据的过程中使用优化隐藏器,提高系统性能。在执行查询的过程中,数据库会自动的对查询进行优化,所以在建立索引后,数据会依据所建立的索引采取相应的索引而使检索的速度最快。

 

5、创建索引

 

语法格式:

CREATE

[UNIQUE(唯一索引)][CLUSTERED(聚集索引)|NONCLUSTERED(非聚集索引)]

INDEX index_name

ON

table_name|view_name

(column_name[1,....,n])

 

Create UNIQUE NONCLUSTERED INDEX IUserName ON T_Member (UserName)

 

6、管理索引

 

删除索引

drop INDEX T_Member.IUserName

 

7、全文索引和目录(略)

 

8、创建架构

 

语法格式

CREATE SCHEMA schema_name_clause [<schema_element>[...n]]

<schema_name_clause> ::=

{
schema_name | AUTHORIZATION owner_name | schema_name AUTHORIZATION owner_name
}

<schema_element> ::=

{
table_definition | view_definition | grant_statement

revoke_statement | deny_statement
}

 

CREATE SCHEMA admins AUTHORIZATION teacher

 

 9、修改和删除架构

 

注意:删除架构前需要保证该架构不包含对象

 

删除架构

CREATE SCHEMA admins

 

10、聚集索引和非聚集索引

 

聚集索引

1)聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,按姓氏排列数据。由于聚集索引规则数据在表中的物理存储顺序,因些一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏或名字进行组织一样。

2)聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相临的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常 要用到某一列,则可以奖该表在该列上聚集(物理顺序),避免每次查询该列时都行排序,从来节省成本。

a)含有大量非重复值的列

b)使用BETWEEN,>,>=,<或<=返回一个范围值的列

c)被连续访问的列

d)返回大型结果集的查询

e)经常被使用连接或GROUP BY 子句的查询访问的列。

 

非聚集索引

1)非聚集索引的数据存储在一个位置,索引存储在另一个位置,索引带有指针指向数据的存储位置,索引中的项目按索引值的顺序存储,而表中的信息按另一种顺序存储。

2)非聚集索引与聚集索引具有相同的B-Tree结构,但是与聚集索引有两个重大区别:

a)数据行不按非聚集索引键的顺序排序和存储

b)非聚集索引的叶层不包含数据页,相反,叶节点包含索引行。

3)在SQL Server2008中每个表可以创建的非聚集索引最多为240个,其中包括PRIMARY KEY或者UNIQUE约束创建的任何索引,但不包括XML索引。

posted @ 2013-08-20 12:41  陈晓明  阅读(311)  评论(0编辑  收藏  举报