前言
本次内容,我们主要掌握数据库的索引和视图,主要介绍索引和视图的概念、索引和视图的操作。
一、索引
(一)索引的概念
索引是与表相关联的存储结构,用于提高表中数据的查询速度,从而加快从数据库中取得所需的数据。索引包含由表中的一列或多列生成的键,以及映射到指定表行的存储位置的指针,这些键存储在一个结构(B树)中,使得快速查找与键值关联的行。在建立索引后,不仅可以加快数据查询,还可以加快排序和分组操作等等。
(二)索引的分类
1、根据结构,可分类为聚集索引和非聚集索引。聚集索引中索引的顺序决定数据表中记录行的顺序,每个表中只能有一个聚集索引,其正文内容本身按照一定规则排列的目录;非聚集索引中索引的结构独立于数据行的结构,一个表中可以有多个非聚集索引,其正文内容纯粹是正文的排序方式。
2、根据实现的功能,可分类为唯一性索引和非唯一性索引。唯一性即要求组成该索引的字段在表中有唯一值。
(三)索引的操作
接下来将会从索引的创建、索引的查看、索引的修改以及索引的删除来分别介绍索引的具体操作。(可使用图形界面方式和T-SQL语句实现操作,以下皆通过T-SQL语句实现。)
1、创建
使用CREATE INDEX语句来创建索引,格式如下:
CREATE (UNIQUE)/(CLUSTERED / NONCLUSTERED)INDEX <索引的名称> /*UNIQUE表示该索引唯一;CLUSTERED / NONCLUSTERED表示该索引的组织方式*/ ON <表的名称(列1,列2,...)>
例1、在数据库YGGZ中Salay表的EmpNO列和Wages列,创建一个唯一聚集索引IX_Salay。
sql语句:
USE YGGZ CREATE UNIQUE CLUSTERED INDEX IX_Salay ON Salay(EmpNo,Wages)
测试结果:
可以在左侧对象资源管理器,找到Salay表中索引下创建的唯一聚集索引IX_Salay。
2、查看
使用sp_helpindex存储过程来查看所创建的索引的属性,格式如下:
EXEC sp_helpindex <表的名称> /*EXEC表示调用存储过程的函数*/
例2、查看上例1的所建索引IX_Salay的属性。
sql语句:
USE YGGZ EXEC sp_helpindex Salay
测试结果:
3、修改
使用ALTER INDEX语句来修改索引的属性,格式如下:
ALTER INDEX <索引的名称> ON <表的名称> REBUILD /*重建索引*/ WITH (...) /*重建索引选项*/
4、删除
使用DROP INDEX语句来修改索引的属性,格式如下:
DROP INDEX <表的名称.索引名称,...> / <索引名称 ON 表的名称,...>
例3、删除例1所创建的索引。
sql语句:
USE YGGZ DROP INDEX IX_Salay ON Salay
测试结果:
二、视图
(一)视图的概念
视图简单的来说,是给用户观察数据库的一种机制,通过视图浏览表中有关的数据,其数据的物理存放地址仍在表中,就是说并未将其真实提出来,只是一个虚拟表。称用来导出视图的表为基表,导出的视图称为虚表。
(二)视图的分类
视图可分为三种,分别是标准视图、索引视图和分区视图。索引视图是创建了唯一聚集索引的视图;分区视图在一台或多台服务器间水平连接一组成员表的分区数据。
(三)视图的操作
接下来将会从视图的创建、视图的查询、视图的修改以及视图的删除来分别介绍视图的具体操作。(也是可使用图形界面方式和T-SQL语句实现操作,以下皆通过T-SQL语句实现。)
1、创建
使用CREATE VIEW语句来创建视图,格式如下:
CREATE VIEW <视图的名称>(列1,...) AS SELECT语句 (WITH CHECK OPTION) /*WITH CHECK OPTION指在视图上进行的修改都要符合SELECT语句中所指定的准则*/
例4、根据以下所给数据,在YGGZ数据库中创建s视图v_Employee,该视图选择员工表Employee中部门编号为102的所有女员工。
sql语句:
USE YGGZ GO CREATE VIEW v_Employee AS SELECT* FROM Employee WHERE Sex='女' AND DeptNo='102' WITH CHECK OPTION
测试结果:
2、查询
查询视图时跟以前查询表一样,使用SELECT语句。
例5、查询例4中所创建的视图v_Employee。
sql语句:
USE YGGZ SELECT * FROM v_Employee
测试结果:
与查询的结果是相同的。
3、修改
使用ALTER VIEW语句来修改视图,格式如下:
ALTER VIEW <视图的名称>(列1,...) AS SELECT语句 (WITH CHECK OPTION)
例6、将例4中定义的视图v_Employee进行修改,取消对部门编号的要求,并查询该视图。
sql语句:
修改:
USE YGGZ GO ALTER VIEW v_Employee AS SELECT* FROM Employee WHERE Sex='女' WITH CHECK OPTION
查询:
USE YGGZ SELECT * FROM v_Employee
测试结果:
查询结果:
4、删除
使用DROP VIEW语句来删除视图,格式如下:
DROP VIEW(表的名称.) <视图的名称,...> /*可使用该语句删除一个或多个视图*/
例7、删除例4中创建的视图v_Employee。
sql语句:
USE YGGZ DROP VIEW v_Employee
测试结果:
结语
以上就是本次数据库原理与应用的全部内容,感谢您的阅读和支持,若有表述或代码中有不当之处,望指出!您的指出和建议能给作者带来很大的动力!!!