電子紫出版社 第7章索引与视图 7.1索引的定义与类型 7.2创建索引 3视图的基本概念及作用 7.4创建视图 ·7.5通过视图修改数据库信息
第7章 索引与视图 • 7.1索引的定义与类型 • 7.2创建索引 • 7.3视图的基本概念及作用 • 7.4创建视图 • 7.5通过视图修改数据库信息
電子紫出版社 71索引的定义与类型 7.1.1索引的定义 ·索引是一个单独的、物理的数据库结构。它是根据表 中一列或若干列按照一定顺序建立的列值与记录行之 间的对应关系表。 索引可以提供对一个表中的数据的有效访问它可以用 于加速数据的检索和强制唯一性限制 7.1.2索引的类型 如果一个表没有创建索引,则数据行不按任何特定的 顺序存储,这种结构称为堆集。在 SQL Server2000的 数据库中按存储结构的不同将索引分为两类:簇索引 ( Clustered Index)和非簇索引( Nonclustered index) ·根据索引键的组成,可把索引分为三种类型:惟一索 引、复合索引和覆盖索引 返回目录
7.1 索引的定义与类型 • 7.1.1 索引的定义 • 索引是一个单独的、物理的数据库结构。它是根据表 中一列或若干列按照一定顺序建立的列值与记录行之 间的对应关系表。 • 索引可以提供对一个表中的数据的有效访问它可以用 于加速数据的检索和强制唯一性限制。 • 7.1.2 索引的类型 • 如果一个表没有创建索引,则数据行不按任何特定的 顺序存储,这种结构称为堆集。在SQL Server 2000的 数据库中按存储结构的不同将索引分为两类:簇索引 (Clustered Index)和非簇索引(Nonclustered Index) • 根据索引键的组成,可把索引分为三种类型:惟一索 引、复合索引和覆盖索引。 返回目录
電子紫出版社 72索引的创建 在 SQL Server2000中,可使用 Enterprise Manager创建索引,也可以利用 TSQL语句建立索引 1使用 Enterprise Manager创建索引 2利用 CREATE INDEX命令建立索引 ·TSQL语句的 CREATE INDEX命令既可以创建一个可改变表的物理顺 序的簇索引,也可以创建提高査询性能的非簇索引。其语法格式如 CREATE [UNIQUE] [CLUSTERED NONCLUSTERED] INDEX index_name on table view column[ asc deSc]l.) TWTTH [PAD_INDEX] [L I FILLFACTOR fillfactor] IL JIGNORE_DUP_KEY LL I DROP EXISTING [L ]STATISTICS_NORECOMPUTE LL I SORT- IN_ TEMPDB I ·[ on filegroup] 返回目录
7.2 索引的创建 • 在SQL Server 2000中,可使用Enterprise Manager创建索引,也可以利用 T-SQL语句建立索引。 • 1.使用Enterprise Manager创建索引 • 2.利用CREATE INDEX命令建立索引 • T-SQL语句的CREATE INDEX命令既可以创建一个可改变表的物理顺 序的簇索引,也可以创建提高查询性能的非簇索引。其语法格式如下: • CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] • INDEX index_name ON {table | view } column [ ASC | DESC ] [,...n]) • [WITH • [PAD_INDEX] • [ [, ] FILLFACTOR = fillfactor] • [ [, ] IGNORE_DUP_KEY] • [ [, ] DROP_EXISTING] • [ [, ] STATISTICS_NORECOMPUTE] • [ [, ] SORT_IN_TEMPDB ] • ] • [ON filegroup] • 返回目录
電子紫出版社 各参数说明如下 UNIQUE:表示创建一个惟一索引。 CLUSTERED:指明创建的索引为簇索引 NONCLUSTERED:指明创建的索引为非簇索引。 index name:指定所创建的索引的名称 Table:指定创建索引的表的名称。 View:指定创建索引的视图的名称 ASC|DESC:指定特定的索引列的排序方式。默认值 是升序ASC。 Column:指定被索引的列。 · PAD INDEX:指定填充索引的内部节点的行数。 IGNORE DUP KEY:用于确定对一个惟一约束中的列中 插入重复数据时的处理方式。 DROP EXISTING:指定要删除并重新创建簇索引。 0 n filegroup:指定存放索引的文件组。 返回目录
• 各参数说明如下 • UNIQUE:表示创建一个惟一索引。 • CLUSTERED:指明创建的索引为簇索引。 • NONCLUSTERED:指明创建的索引为非簇索引。 • index_name:指定所创建的索引的名称。 • Table:指定创建索引的表的名称。 • View:指定创建索引的视图的名称。 • ASC | DESC:指定特定的索引列的排序方式。默认值 是升序ASC。 • Column:指定被索引的列。 • PAD_INDEX : 指 定 填 充 索 引 的 内 部 节 点 的 行 数 。 IGNORE_DUP_KEY:用于确定对一个惟一约束中的列中 插入重复数据时的处理方式。 • DROP_EXISTING:指定要删除并重新创建簇索引。 • ON filegroup:指定存放索引的文件组。 • 返回目录 • 返回目录
電子紫出版社 【例71】为uers表的用户名列创建索引 Use users Create index user id on username th pad index, fillfactor 9 gnore dup key drop existing statistics norecompute on primary 区回目录
• 【例7.1】为users表的用户名列创建索引。 • Use users • Create index user_id on username • with • pad_index, • fillfactor = 9, • ignore_dup_key, • drop_existing, • statistics_norecompute • on [primary] 返回目录
電子紫出版社 7.3视图的基本概念及作用 7.3.1视图的概念 视图是从一个或多个表或视图中导出的表,其数据列和数据行来 源于其所引用的表,当视图被引用时,其数据是动态生成的,它 是一张虚表。对视图的操作与对表的操作一样,可以对其进行查 询、修改、删除和更新。 ·7.3.2视图的作用 视图可以用来访问一个整表、部分表或组合表。使用视图有以下 几点作用 集中数据 ·2.简化操作 3.共享数据 ·4.合并分割数据 提高安全性 返回目录
7.3 视图的基本概念及作用 • 7.3.1 视图的概念 • 视图是从一个或多个表或视图中导出的表,其数据列和数据行来 源于其所引用的表,当视图被引用时,其数据是动态生成的,它 是一张虚表。对视图的操作与对表的操作一样,可以对其进行查 询、修改、删除和更新。 • 7.3.2 视图的作用 • 视图可以用来访问一个整表、部分表或组合表。使用视图有以下 几点作用: • 1. 集中数据 • 2. 简化操作 • 3. 共享数据 • 4. 合并分割数据 • 5. 提高安全性 返回目录
電子紫出版社 74视图的创建 在 SQL Server2000中,可以使用 Enterprise Manager或视图向导创 建视图,也可以利用TSQL语句的 CREATEⅤEW命令来创建视图 1.使用 Enterprise manager创建视图 2.利用 CREATE VIEW命令创建视图 使用TSQL语句中的 CREATEⅤEW命令创建视图,其语法格式 为 CREATE VIEW [ [ owner >view_namel(column_namer.n])I WITH view_attribute>ln]I As select statement I WITH CHECK OPTION I e view attribute >i'= ENCRYPTION I SCHEMABINDING VIEW_METADATAJ 返回目录
7.4 视图的创建 • 在SQL Server 2000中,可以使用Enterprise Manager或视图向导创 建视图,也可以利用T-SQL语句的CREATE VIEW命令来创建视图。 • 1. 使用 EnterpriseManager 创建视图 • 2. 利用CREATE VIEW 命令创建视图 • 使用T-SQL 语句中的CREATE VIEW 命令创建视图,其语法格式 为: • CREATE VIEW [.][ .]view_name[(column _name[ ,...n ] ) ] • [ WITH [ ,...n ] ] • AS select_statement • [ WITH CHECK OPTION ] • ::= • { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } • 返回目录
電子紫出版社 各参数的含义说明如下 database name:表示数据库名; owner:表示所有者名; view name:表示视图名称。 column name:表示列名,它是视图中包含的列,可以 有多个列名 WITH view attribute:指出视图的属性。 view attribute 可以取以下的值:(1) ENCRYPTION(2) SCHEMABINDING(3) VIEW METADATAAS:指对 视图执行的操作 select statement:用来创建视图的 SELECT语句。 COMPUTE或 COMPUTE BY子句;不能使用ⅠNTO关键 字;不能在临时表或表变量上创建视图 WITH CHECK OPTION:保证在对视图执行数据修改后, 通过视图仍能够看到这些修改的数据 返回目录
• 各参数的含义说明如下: • database_name :表示数据库名;owner:表示所有者名; view_name:表示视图名称。 • column _name:表示列名,它是视图中包含的列,可以 有多个列名。 • WITH view_attribute:指出视图的属性。view_attribute 可 以 取 以 下 的 值 : ( 1 ) ENCRYPTION ( 2 ) SCHEMABINDING(3)VIEW_METADATAAS:指对 视图执行的操作。 • select_statement :用来创建视图的 SELECT 语 句 。 COMPUTE或COMPUTE BY 子句; 不能使用INTO关键 字;不能在临时表或表变量上创建视图。 • WITH CHECK OPTION:保证在对视图执行数据修改后, 通过视图仍能够看到这些修改的数据。 • 返回目录
電子紫出版社 【例7.2】创建一个 user name视图,包括用户名为chen 的用户ID、 phone、 Email create view user name(id, username, phone, Email) as select id, username, phone, Email · from users where username= chen WITH CHECK OPTION 返回目录
• 【例7.2】创建一个user_name视图,包括用户名为chen 的用户ID、phone、Email。 • create view user_name(id, username,phone, Email) • as • select • id, username, phone,Email • from users • where username= ‘chen’ • WITH CHECK OPTION • 返回目录
7.5通过视图修改数据库信息 视图的功能除了可以浏览要査询的数据结果之外,也可以用来添 加、修改或删除数据库中的数据。但是,如果要使用视图来更新 数据时,最好是针对某一个表来做添加、修改或删除数据的操作。 在视图内,不管是要添加数据,还是修改或删除数据,都可以 通过使用Ⅰ NSTEAD OF的触发器,并配合TSQL语句中的 INSERT、 UPDATE以及 DELETE命令即可。 7.5.1在视图中添加数据 通过视图添加数据时,必须要搭配 INSERT语句来添加数据。在 视图内通过TSQL中的 INSERT语句来添加的数据是存储在基本表 内的。 INSERT语句的声明语法格式如下: INSERT INTOView_name(columnl, column2,. VALUES(Values1, values2.) 返回目录
7.5 通过视图修改数据库信息 • 视图的功能除了可以浏览要查询的数据结果之外,也可以用来添 加、修改或删除数据库中的数据。但是,如果要使用视图来更新 数据时,最好是针对某一个表来做添加、修改或删除数据的操作。 • 在视图内,不管是要添加数据,还是修改或删除数据,都可以 通过使用INSTEAD OF 的触发器,并配合T_SQL语句中的INSERT、 UPDATE以及DELETE命令即可。 • 7.5.1在视图中添加数据 • 通过视图添加数据时,必须要搭配INSERT语句来添加数据。在 视图内通过T_SQL中的INSERT语句来添加的数据是存储在基本表 内的。 • INSERT语句的声明语法格式如下: • INSERT INTOview_name(columnl, column2,…) • VALUES(Values1,values2,...) • 返回目录