数据库原理与应用(SQL Server)笔记 第五章 索引和视图

简介: 数据库原理与应用(SQL Server)笔记 第五章 索引和视图

前言


本次内容,我们主要掌握数据库的索引和视图,主要介绍索引和视图的概念、索引和视图的操作。


一、索引


(一)索引的概念


索引是与表相关联的存储结构,用于提高表中数据的查询速度,从而加快从数据库中取得所需的数据。索引包含由表中的一列或多列生成的键,以及映射到指定表行的存储位置的指针,这些键存储在一个结构(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。

1667022243659.jpg


2、查看


使用sp_helpindex存储过程来查看所创建的索引的属性,格式如下:

EXEC sp_helpindex <表的名称>
/*EXEC表示调用存储过程的函数*/


例2、查看上例1的所建索引IX_Salay的属性。

sql语句:


USE YGGZ EXEC sp_helpindex Salay

测试结果:

1667022289645.jpg


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

测试结果:

1667022356383.jpg


二、视图


(一)视图的概念


视图简单的来说,是给用户观察数据库的一种机制,通过视图浏览表中有关的数据,其数据的物理存放地址仍在表中,就是说并未将其真实提出来,只是一个虚拟表。称用来导出视图的表为基表,导出的视图称为虚表。


(二)视图的分类


视图可分为三种,分别是标准视图、索引视图和分区视图。索引视图是创建了唯一聚集索引的视图;分区视图在一台或多台服务器间水平连接一组成员表的分区数据。


(三)视图的操作


接下来将会从视图的创建、视图的查询、视图的修改以及视图的删除来分别介绍视图的具体操作。(也是可使用图形界面方式和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的所有女员工。

1667023507701.jpg

sql语句:

USE YGGZ GO CREATE VIEW v_Employee AS SELECT* FROM Employee WHERE Sex='女' AND DeptNo='102' WITH CHECK OPTION

测试结果:

1667023521800.jpg


2、查询


查询视图时跟以前查询表一样,使用SELECT语句。


例5、查询例4中所创建的视图v_Employee。

sql语句:

USE YGGZ SELECT * FROM v_Employee

测试结果:

1667023542011.jpg

与查询的结果是相同的。

1667023551346.jpg

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

测试结果:

1667023672050.jpg

查询结果:

1667023680251.jpg


4、删除


使用DROP VIEW语句来删除视图,格式如下:

DROP VIEW(表的名称.) <视图的名称,...>
/*可使用该语句删除一个或多个视图*/


例7、删除例4中创建的视图v_Employee。

sql语句:

USE YGGZ DROP VIEW v_Employee

测试结果:

1667023707422.jpg


结语


以上就是本次数据库原理与应用的全部内容,感谢您的阅读和支持,若有表述或代码中有不当之处,望指出!您的指出和建议能给作者带来很大的动力!!!


相关文章
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
SQL 存储 关系型数据库
SQL优化策略与实践:组合索引与最左前缀原则详解
本文介绍了SQL优化的多种方式,包括优化查询语句(避免使用SELECT *、减少数据处理量)、使用索引(创建合适索引类型)、查询缓存、优化表结构、使用存储过程和触发器、批量处理以及分析和监控数据库性能。同时,文章详细讲解了组合索引的概念及其最左前缀原则,即MySQL从索引的最左列开始匹配条件,若跳过最左列,则索引失效。通过示例代码,展示了如何在实际场景中应用这些优化策略,以提高数据库查询效率和系统响应速度。
790 10
|
SQL 索引
【YashanDB知识库】字段加上索引后,SQL查询不到结果
【YashanDB知识库】字段加上索引后,SQL查询不到结果
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
675 6
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
663 2
|
SQL 存储 关系型数据库
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
本文介绍了SQL的基础语言类型(DDL、DML、DCL、DQL),并详细说明了如何创建用户和表格,最后推荐了几款适合初学者的免费SQL实践平台。
810 3
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
|
SQL 数据挖掘 数据库
SQL自学笔记(2):如何用SQL做简单的检索
本文深入介绍了SQL的基本语法,包括数据查询、过滤、排序、分组及表连接等操作,并通过实际案例展示了SQL在用户研究中的应用,如用户行为分析、用户细分、用户留存分析及满意度调查数据分析。
369 0
SQL自学笔记(2):如何用SQL做简单的检索
|
SQL 数据挖掘 关系型数据库
SQL自学笔记(1):什么是SQL?有什么用?
本文为用户研究新手介绍SQL(结构化查询语言),解释了SQL的基本概念、入门方法及在用户研究中的应用通过实际案例说明,如用户行为分析、用户细分和满意度调查数据分析,展示了SQL在用户研究中的重要作用。
4252 0
SQL自学笔记(1):什么是SQL?有什么用?
|
SQL 数据库管理