Sql server数据库设计 6
第六章(视图、索引)
视图的概念:
1、视图是包含由一张或多张表的列组成的数据集。该表中的记录是由一条查询语句执行后所得到的查询结果所构成的。
2、视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数 据,其结构和数据是建立在对表的查询基础上。
3、视图中并不存放数据,而是存放在视图所引用的原始表(基表)中。
4、同一张原始表,根据不同用户的不同需求,可以创建不同的视图。
视图的用途:
1、筛选表中的行
2、防止未经许可的用户访问敏感数据
3、降低数据库的复杂程度
4、将多个物理数据库抽象为一个逻辑数据库如何创建视图:
create view view_name
as
select语句
view_name :为新创建的视图指定名称
使用视图的优点:
1、视点集中:就是指使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务。
2、简化操作:视图大大简化了用户对数据的操作。
3、定制数据:视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。
4、安全性:视图可以作为一种安全机制,通过视图用户只能查看和修改他们所能看到的数据。其它数据库或表既不可见也不可访问。
主要记住第四条
注意:在视图中的select语句不能包含order by或into子句,另外在查询中不能引用临时表
索引的概念:
索引是一个单独的、物理的数据库结构,是数据库的一张表中所包含的值的列表,其中注明了表的各个值所在的存储位置。
可以将索引看做一本书的目录
索引的类型:
非聚集索引:复合索引,视图索引,全文索引,XML索引,唯一索引
聚集索引:主键索引
主键索引:在数据表中为表定义一个主键就自动创建主键索引,主键索引是唯一索引的特殊类型;
唯一索引:唯一索引不允许两行具有相同的索引值;
聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个;
非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,
索引中包含指向数据存储位置的指针。可以有多个,小于249个。
如何创建索引:
CREATE [UNIQUE](唯一索引) [CLUSTERED|NONCLUSTERED] (聚集或非聚集索引)
INDEX index_name
ON table_name (column_name…)
[WITH FILLFACTOR=x] 填充因子(系数):指定一个0~100之间的值,表示索引页填充的百分比
UNIQUE表示唯一索引,可选;
CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,可选;
FILLFACTOR表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比;
注意:在删除索引时:必须为drop index语句指定表名或索引名
if OBJECT_ID('索引名','index') is not null
drop index 索引名
索引的优缺点;
索引的优点
创建唯一性索引,保证数据表中每一行数据的唯一性。
大大加快数据的检索速度,这也是创建索引的最主要的原因。
索引的缺点
带索引的表在数据库中需要更多的存储空间。
操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新。