第四章-----------索引与视图
1.视图
- 是基于 SQL 语句的结果集的可视化的表。
- 视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
- 视图是逻辑概念,并非真实存在。
- 是一个SQL集,它表示的是对一个SQL查询的结果,它不同于一张物理表,它是一个逻辑表。
2.索引:
- 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。[ 是为了快速查询而针对某些字段建立起来的。]
- 更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。
3.表
- 数据库中的数据都是存储在表中的
- 表是物理存储的,真实存在的
/*----------------------------------------索 引-----------------------------------------------------*/
/*--聚集索引--*/
--主键会自动生成同名聚集索引,不能再创建
/*--非聚集索引--*/
--基本语法
--CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ]
--INDEX index_name
--ON table_name (column_name)
--[WITH FILLFACTOR=x] 填充因子:指定一个0~100之间的值,表示索引页填充的百分比
--创建索引
--如果存在该索引,先将其删除掉
IF exists(SELECT * FROM sys.indexes WHERE name = 'IX_score')
DROP INDEX stuMarks.IX_score
--对成绩字段创建非聚集索引,填充因子30%
CREATE NONCLUSTERED INDEX IX_score ON stuMarks(score) WITH FILLFACTOR= 30
GO
--使用索引
--指定按索引查询
SELECT * FROM stuMarks WITH(INDEX = IX_score)
WHERE score between 60 and 90
/*----------------------------------------视 图-----------------------------------------------------*/
select * from stuinfo where stusex = '男'
--基本语法
--CREATE VIEW view_name [(列名...)]
--AS
--<SELECT语句>
--创建视图
--如果存在该视图,先将其删除掉
IF EXISTS ( SELECT * FROM sys.views WHERE NAME = 'view_stuInfo_stuMarks')
DROP VIEW view_stuInfo_stuMarks
GO
--创建名为view_stuInfo_stuMarks的视图
CREATE VIEW view_stuInfo_stuMarks(学号,姓名,成绩)
AS
SELECT stuName,stuInfo.StuID,score FROM stuInfo LEFT JOIN stuMarks
ON stuInfo.StuID = stuMarks.StuID
GO
--使用视图
select * from view_stuInfo_stuMarks
--视图加密
--查看所有视图信息
select * from information_schema.views;
EXEC sp_helptext 'view_stuInfo_stuMarks'
--加密试图
IF EXISTS ( SELECT * FROM sys.views WHERE NAME = 'view_stuInfo_stuMarks')
DROP VIEW view_stuInfo_stuMarks
GO
CREATE VIEW view_stuInfo_stuMarks(学号,姓名,成绩)
WITH encryption
AS
SELECT stuName,stuInfo.StuID,score FROM stuInfo LEFT JOIN stuMarks
ON stuInfo.StuID=stuMarks.StuID
GO