【实验目的】
1、了解索引和视图的含义
2、熟悉索引和视图的创建规则
3、掌握索引和视图的创建和管理
【实验设备及器材】
1、硬件:PC机;
2、软件:(1)Windows7; (2)Microsoft SQL Server 2012。
【主要内容】
索引的创建、删除、重建;视图的创建、修改和删除。
【实验内容及要求】/【实验步骤及结果】
请在“学生管理数据库”中完成(附加数据库,T-SQL语句)。
- 为“学生信息表”的“姓名”列创建一个唯一非聚集索引I_SNAME。
所需代码命令为:
USE 学生管理数据库
CREATE UNIQUE NONCLUSTERED INDEX I_SNAME
ON 学生信息表(姓名)
执行效果图如下:
- 为“课程信息表”的“课程名”列建立一个非聚集索引I_CNAME。
所需代码命令如下:
USE 学生管理数据库
CREATE NONCLUSTERED INDEX I_CNAME
ON 课程信息表(课程名)
执行效果图如下:
- 为“成绩信息表”创建一个基于“课程号”列和“成绩”列的索引I_CNO_GRADE,其中“课程号”列按升序排列,“成绩”列按降序排列。
所需代码命令如下:
USE 学生管理数据库
CREATE INDEX I_CNO_GRADE
ON 成绩信息表 (课程号 ASC, 成绩 DESC);
执行效果图如下:
- 强制使用索引I_CNO_GRADE进行查询。
(SELECT * FROM 成绩信息表 FORCE WITH(INDEX(I_CNO_GRADE))
WHERE 成绩>=60)
所需代码命令如下:
USE 学生管理数据库
SELECT * FROM 成绩信息表 FORCE WITH(INDEX(I_CNO_GRADE)) WHERE 成绩>=60;
执行效果图如下:
- 查看“学生信息表”的所有索引的信息。
所需代码命令如下:
USE 学生管理数据库
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = '学生信息表';
执行效果图如下:
- 请创建一个视图V_SNAME,统计“学生信息表”的“姓名”,并查看该统计信息。
所需代码命令如下:
CREATE VIEW V_SNAME
AS SELECT COUNT(*) AS 学生总数, 姓名
FROM 学生信息表
GROUP BY 姓名;
执行效果图如下:
- 创建一个简单的视图V_101_NOPASS,查询101号课程不及格的信息,并查看视图。
所需代码命令如下:
CREATE VIEW V_101_NOPASS
AS SELECT *
FROM 成绩信息表
WHERE 课程号 = '101' AND 成绩 < 60;
sp_helptext'V_101_NOPASS'
执行效果图如下:
- 创建一个复杂视图V_SAMECOLLEGE,查询与“俞奇军”住在同一个系的学生信息,并查看视图。
所需代码命令如下:
CREATE VIEW V_SAMECOLLEGE
AS
SELECT *
FROM 学生信息表
WHERE 所在系='计算机'
WITH CHECK OPTION
sp_helptext'V_SAMECOLLEGE'
执行效果图如下:
- 创建一个复杂视图V_S_SC_C,查询选修了课程的同学的姓名、课程名及成绩,并查看视图。
所需代码命令如下:
CREATE VIEW V_S_SC_C
AS
SELECT 学生信息表.姓名,课程信息表.课程名,成绩信息表.成绩
FROM 学生信息表,课程信息表,成绩信息表;
sp_helptext'V_S_SC_C'
执行效果图如下:
- 使用在9中创建的视图V_S_SC_C,统计选修了课程的学生的人数和平均分。
所需代码命令如下:
USE 学生管理数据库
SELECT COUNT(DISTINCT 姓名)
AS 人数,AVG(成绩)
AS 平均分
FROM V_S_SC_C执行效果图如下: