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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 数据库原理与应用(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语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
5天前
|
SQL 关系型数据库 MySQL
关系型数据库选择唯一性索引
【5月更文挑战第19天】
15 2
|
7天前
|
存储 算法 Serverless
了解数据库中的布隆过滤器原理
【5月更文挑战第17天】本文介绍布隆过滤器是一种空间高效的的数据结构,用于判断一个元素是否可能在一个集合中。它包含一个位图和多个哈希函数。
31 1
了解数据库中的布隆过滤器原理
|
3天前
|
SQL 关系型数据库 测试技术
关系型数据库应用代码审查
【5月更文挑战第21天】
11 1
|
4天前
|
SQL 存储 自然语言处理
为什么数据库字符编码不一致会导致索引失效
为什么数据库字符编码不一致会导致索引失效
14 2
|
4天前
|
监控 关系型数据库 数据库
关系型数据库考虑索引的选择性
【5月更文挑战第20天】
14 4
|
4天前
|
关系型数据库 数据库 索引
|
5天前
|
SQL Oracle 关系型数据库
关系型数据库中对索引的数目
【5月更文挑战第19天】
19 4
|
5天前
|
监控 关系型数据库 数据库
|
6天前
|
关系型数据库 MySQL 数据库
关系型数据库索引设计优化
【5月更文挑战第18天】
15 1
|
9天前
|
存储 关系型数据库 数据库
利用Python与SQLite构建轻量级数据库应用
在当今日益增长的数据处理需求下,数据库成为存储、检索和管理数据的关键技术。然而,对于小型项目或快速原型开发,大型数据库系统可能显得过于庞大和复杂。本文将介绍如何利用Python编程语言与SQLite轻量级数据库,快速搭建一个功能齐全、易于维护的数据库应用。我们将探讨SQLite数据库的特点、Python对SQLite的支持,并通过一个实际案例展示如何构建一个简单的数据库应用,为读者提供一种高效、灵活的解决方案。