当前位置:文档之家› 索引和视图的区别

索引和视图的区别

索引和视图的区别
索引和视图的区别

SQL Server 索引和视图

?索引

1、什么是索引

索引就是数据表中数据和相应的存储位置的列表,利用索引可以提高在表或视图中的查找数据的速度。

2、索引分类

数据库中索引主要分为两类:聚集索引和非聚集索引。SQL Server 2005还提供了唯一索引、索引视图、全文索引、xml索引等等。聚集索引和非聚集索引是数据库引擎中索引的基本类型,是理解其他类型索引的基础。

# 聚集索引

聚集索引是值表中数据行的物理存储顺序和索引的存储顺序完全相同。聚集索引根据索引顺序物理地重新排列了用户插入到表中的数据,因此,每个表只能创建一个聚集索引。聚集索引经常创建在表中经常被搜索到的列或按顺序访问的列上。在默认情况下,主键约束自动创建聚集索引。

# 非聚集索引

非聚集索引不改变表中数据列的物理存储位置,数据与索引分开存储,通过索引指向的地址与表中的数据发生关系。

非聚集索引没有改变表中物理行的位置,索引可以在以下情况下使用非聚集索引:

一、如果某个字段的数据唯一性比较高

二、如果查询所得到的数据量比较少

聚集索引和非聚集索引的区别:

聚集索引非聚集索引

每个表只允许创建一个聚集索引最多可以有249个非聚集索引

物理的重排表中的数据以符合索引约束创建一个键值列表,键值指向数据在数据页中的位置

用于经常查找数据的列用于从表中查找单个值的列

# 其他类型索引

除了以上索引,还有以下类型索引:

a、唯一索引:如果希望索引键都不同,可以创建唯一索引。聚集索引和非聚集索引都可以是唯一索引。

b、包含新列索引:索引列的最大数量是16个,索引列的字节总数的最高值是900。如果当多个列的字节总数大于900,切又想在这些劣种都包含索引是,可以使用包含性列索引

c、视图索引:提供视图查询效率,可以视图的索引物理化,也就是说将结果集永久存储在索引中,可以创建视图索引。

d、XML索引:是与xml数据关联的索引形式,是XML二进制blob的已拆分持久表示形式

e、全文索引:一种特殊类型的基于标记的功能性功能,用于帮助在字符串中搜索赋值的词

3、创建索引

语法

create [unique] [clustered | noclustered]

index index_name

on table_name (column_name ...)

[with fillfactor=x]

unique唯一索引

clustered聚集索引

noclustered非聚集索引

fillfactor填充因子大小,范围在0-100直接,表示索引页填满的空间所占的百分比。

示例

if (exists (select * from sys.indexes where name = 'idx_stu_name')) drop index student.idx_stu_name

go

create index idx_stu_name

on

student(name);

--联合索引

if (exists (select * from sys.indexes where name =

'idx_uqe_clu_stu_name_age'))

drop index student.idx_uqe_clu_stu_name_age

go

create unique clustered index idx_uqe_clu_stu_name_age

on student(name, age);

if (exists (select * from sys.indexes where name = 'idx_cid')) drop index student.idx_cid

go

if (exists (select * from sys.indexes where name = 'idx_cid')) drop index student.idx_cid

go

--非聚集索引

create nonclustered index idx_cid

on

student (cid)

with fillFactor = 30; --填充因子

--聚集索引

if (exists (select * from sys.indexes where name = 'idx_sex')) drop index student.idx_sex

go

create clustered index idx_sex

on

student(sex);

--聚集索引

if (exists (select * from sys.indexes where name = 'idx_name')) drop index student.idx_name

go

create unique index idx_name

on

student(name);

4、适合的创建索引的列

当数据库的某一列被频繁的用于数据库查询时,或者该列用于数据库进行排序时可以创建成索引

5、不适合创建索引的列

如果列中有几个不同的值,或者表中仅包含几行值,则不推荐为其创建索引。因为索引在搜索数据所花的时间比在表中逐行搜索话的时间更长。

?视图

1、什么是视图

视图就是一个虚拟的数据表,该数据表中的数据记录是有一条查询语句的查询结果得到的。

2、创建视图准则

创建视图需要考虑一下准则:

# 视图名称必须遵循标识符的规则,该名称不得与该架构的如何表的名称相同

# 你可以对其他视图创建视图。允许嵌套视图,但嵌套不得超过32层。视图最多可以有1024个字段

# 不能将规则和default定义于视图相关联

# 视图的查询不能包含compute子句、compute by子句或into关键字

# 定义视图的查询不能包含order by子句,除非在select 语句的选择列表中还有top子句

下列情况必须指定视图中每列的名称:

# 视图中的如何列都是从算术表达式、内置函数或常量派生而来

# 视图中有两列或多列具有相同名称(通常由于视图定义包含联接,因此来自两个或多个不同的列具有相同的名称)

# 希望视图中的列指定一个与其原列不同的名称(也可以在视图中重命名列)。无论是否重命名,视图列都回继承原列的数据类型

3、创建视图

--创建视图

if (exists (select * from sys.objects where name = 'v_stu')) drop view v_stu

go

create view v_stu

as

select id, name, age, sex from student;

4、修改视图

alter view v_stu

as

select id, name, sex from student;

alter view v_stu(编号, 名称, 性别)

as

select id, name, sex from student

go

select * from v_stu;

select * from information_schema.views;

5、加密视图

--加密视图

if (exists (select * from sys.objects where name = 'v_student_info')) drop view v_student_info

go

create view v_student_info

with encryption --加密

as

select id, name, age from student

go

--view_definition is null

select * from information_schema.views

where table_name like'v_stu';

视图与索引作业

第一部分 创建如下表:并向每张表中添加5条数据 学生表t_student(f_no,f_name,f_sex,f_department) 课程表(f_id,f_name) 成绩表(f_no,f_subjectid,f_score) 作业: 1、对成绩表的课程编号创建非簇索引 2、对学生表的姓名和年龄创建非簇索引 3、对学生表的学号创建唯一索引 4、创建视图统计成绩表中任何一门课程及没有及格的信息 5、创建视图查询男生的平均成绩 6、对课程表的课程编号和分数创建非簇索引 7、将上题中的非簇索引删除 8、创建视图查询C#课程不及格的女生信息 9、创建视图统计男女生的平均分信息 10、简述索引的作用和种类 11、简述视图的作用 第二部分 使用northwind数据库完成: 1)在northwind库中(products和suppliers表中)查找每个商品对应的供应商名 称建立视图my_view,并通过该视图查询数据。 2)在视图my_view中,将companyname为以tokyo开头的改为ToKyo.使用修改表数 据的UPDATE语句。 3)使用DROP VIEW语句将视图my_view删除。 4)使用Northwind数据库,在Suppliers表的Country列和city列上创建一个名为 Country_index的非聚集索引。 5)删除Country_index索引。 6)在Suppliers表的Country列和city列上创建一个名为Country_index的非聚集 索引。请确保索引页留有50%的空白空间,并且删除具有相同名称的现有索引 7)使用CREATE VIEW语句,基于employees表创建一个名为EmpHierarchy的视图。 视图应包含有上级领导的雇员的雇员ID、名、姓及其上级的姓 8)在视图EmpHierarchy中,将雇员ID为4的雇员的姓改为”Jones”。使用修改表数 据的UPDATE语句 9)使用DROP VIEW语句将视图EmpHierarchy删除

西安石油大学数据库实验3索引及视图操作

实验报告 课程名称:学院名称:数据原理与应用计算机学院 专业班级:计1201 学生姓名:张文江 学号:201107010122

实验3 索引及视图操作 一、实验目的 1. 加深对索引和视图概念的理解。 2. 熟练掌握索引的创建和删除。 3. 熟练掌握视图的创建、修改和删除。 4. 熟练运用视图进行各种检索操作。 二、实验环境 硬件环境:PC机 软件环境:操作系统为Microsoft Windows 2000或以上版本。 数据库管理系统为Microsoft SQL Server 2000标准版或企业版。 三、实验内容 1. 熟悉运用SQL Server企业管理器和查询分析器进行索引的创建和删除。 2. 熟悉运用SQL Server企业管理器和查询分析器进行视图的创建、删除和修改。 四、实验步骤 1. 利用实验1已经建立并保存过的学生表、课程表,学生表按学号建立惟一索引,课程表按课程名建立惟一索引; create index S_sno on S(sno) create index C_cno on C(cno) 2. 利用实验1已经建立并保存过的学生表和选课表建立一个“网络工程”专业学生成绩视图JSGV(sno,cno,grade); create view JSGV(sno,cno,grade) as select S.sno,cno,grade from SC,S where dept='网络工程'and S.sno=SC.sno 利用视图JSGV查询“网络工程”专业的学生选课多于2门的学生学号; select distinct sno

from JSGV group by sno having (count(*)>2) 验证能否利用视图JSGV中插入一条“网络工程”专业学生选修“高等数学”课程的记录,并查询结果信息; insert into JSGV values('20080205','c03','85') 删除视图JSGV。 drop view JSGV 3. 利用实验1已经建立并保存过的学生表、课程表、选课表建立视图TOTAL(sno,sname,cname,grade); create view TOTAL(cno,sname,cname,grade) as select https://www.doczj.com/doc/cf2118204.html,o,sname,cname,grade from SC,S,C where S.sno=SC.sno and https://www.doczj.com/doc/cf2118204.html,o=https://www.doczj.com/doc/cf2118204.html,o

实验四 索引和视图参考答案

索引 --为表student中SName属性建立惟一索引 create unique index snameindex on student(SName) --为teacher中的tname属性建立惟一聚集索引。 由于sqlserver2005在主键和具有unique约束的属性上自动建立了索引,且在主键上自动建立了聚集索引,因此必须移除主键(或其它聚集索引),然后才能在tname上建立聚集索引create unique clustered index tnameindex on teacher(tname) 移除主键

然后还原Tno为teacher表的主键 --利用系统存储过程sp_helpindex查看表student上的所有索引。

exec sp_helpindex student --利用系统存储过程sp_rename将表student上的索引改名。 exec sp_helpindex student exec sp_rename 'student.snameindex','snameindex2' --删除表student中的惟一索引。(注意,sqlserver2005在主键和具有unique约束的属性上自动建立了索引,要删除这些索引,必须先取消这些属性的主键或unique性质(通过修改表),才能删除索引,不能直接删除索引) drop index student.snameindex2 --视图 --建立视图teacherview1(无check option选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview1 as select Tno, TName, DepID from teacher where TName like '张%' --建立视图teacherview2(带check option选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview2 as select Tno, TName, DepID from teacher where TName like '张%' with check option --建立视图teacherview3(带encryption选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview3 with encryption as select Tno, TName, DepID from teacher where TName like '张%' --分别向teacherview2、teacherview1中插入记录(’866’,’杨志’,3),体会with check option选项的作用。 insert into teacherview1 values('866','杨志',3) insert into teacherview2 values('867','王五',3)

数据库原理实验报告-实验四-视图与索引

《数据库原理》实验报告 题目:实验四视图与索引学号班级日期 2016.10.20 一、实验内容、步骤以及结果 1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。(5分) 2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。 --第一种方法 CREATE VIEW V_SPJ AS SELECT sno,pno,qty FROM SPJ WHERE jno=( SELECT jno FROM J WHERE jname ='' ); GO --删除建好的视图 DROP VIEW V_SPJ; GO --第二种方法

CREATE VIEW V_SPJ AS SELECT sno,pno,qty FROM SPJ,J WHERE J.jno=SPJ.jno AND J.jname=''; 3.用SQL语句完成第五版教材第三章第11题中的视图查询(10分,每小题5分)。 11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码 (PNO)、供应数量(QTY)。 针对该视图VSP完成下列查询: (1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。

4.用SQL语句完成视图的数据更新。(15分,每题5分) (1)给视图V_SPJ中增加一条数据。 提示: -SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO 为NULL,所以视图中没有该条数据。 -SPJ表中JNO不能为空时,可以使用instead of触发器实现。 (2)修改视图V_SPJ中的任意一条数据的供应数量。

视图与索引作业

视图与索引作业 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

第一部分 创建如下表:并向每张表中添加5条数据 学生表t_student(f_no,f_name,f_sex,f_department) 课程表(f_id,f_name) 成绩表(f_no,f_subjectid,f_score) 作业: 1、对成绩表的课程编号创建非簇索引 2、对学生表的姓名和年龄创建非簇索引 3、对学生表的学号创建唯一索引 4、创建视图统计成绩表中任何一门课程及没有及格的信息 5、创建视图查询男生的平均成绩 6、对课程表的课程编号和分数创建非簇索引 7、将上题中的非簇索引删除 8、创建视图查询C#课程不及格的女生信息 9、创建视图统计男女生的平均分信息 10、简述索引的作用和种类 11、简述视图的作用 第二部分 使用northwind数据库完成: 1)在northwind库中(products和suppliers表中)查找每个商品对应的供 应商名称建立视图my_view,并通过该视图查询数据。 2)在视图my_view中,将companyname为以tokyo开头的改为ToKyo.使 用修改表数据的UPDATE语句。 3)使用DROP VIEW语句将视图my_view删除。 4)使用Northwind数据库,在Suppliers表的Country列和city列上创建一 个名为Country_index的非聚集索引。 5)删除Country_index索引。 6)在Suppliers表的Country列和city列上创建一个名为Country_index的 非聚集索引。请确保索引页留有50%的空白空间,并且删除具有相同 名称的现有索引 7)使用CREATE VIEW语句,基于employees表创建一个名为EmpHierarchy 的视图。视图应包含有上级领导的雇员的雇员ID、名、姓及其上级的 姓

数据库原理索引、视图的定义实验报告

数据库原理实验报告 题目:索引、视图的定义院系:计算机科学与工程学院

【实验题目】 索引、视图的定义 【实验目的】 掌握使用T -SQL语句创建视图的方法,包括视图的建立、删除、修改;了解如何应用视图有选择地查看所需数据,并熟悉通过视图更改数据表中数据的方法。掌握创建索引的方法。 【实验内容】 1、据库TestDB中,基于表"项目数据表"和"员工数据表"创建视图,要求为: (1)视图名为"员工项目"。 (2)包含字段"编号"、"姓名"、"名称"和"开始日期"。 (3)字段别名分别是"员工编号"、”员工姓名"、"项目名称"、"项目开 始日期"。 2、使用企业管理器和Transact-SQL语句在实验二的数据表"员工数据表"中基于"姓名"创建索引,要求索引名为"IDX_Name",索引类型为非聚集索引。 【实现方法】 1、视图 (1)打开查询分析器。 在查询窗口书写CREATE VIEW语句创建视图,并指定字段别名: USE TestDB GO CREATE VIEW员工项目(员工编号,员工姓名,项目名称,项目开始日期) AS SELECT a·编号,a·姓名,b·名称,b·开始日期, FROM员工数据表AS a INNER JOIN项目数据表AS b ON a·编号=b·负责人 WHERE a·编号=b·负责人 GO (2)使用INSERT语句通过视图向员工数据表中添加一条记录,要求"姓名"字段值 为"马中兴"。 USETestDB GO INSERTINTO 员工项目(员工姓名) VALUES('马中兴') GO (3)使用UPPDATE语句通过视图将第二步中插入记录的员工姓名改为"马中新"。 USETestDB GO UPDATE员工项目 SET 项目负责人= '马中新’, WHERE 项目负责人=’马中兴’

SQL基本表查询基本表、索引与视图的定义、删除和修改

数据库实验报告 实验二 实验题目:SQL基本表查询基本表、索引与视图的定义、 删除和修改 实验类型:验证 实验地点:软件实验室二 指导老师:*** 专业班级:计算机科学与技术系网络工程方向***班姓名:***

2013年9月29日实验类型:验证实验地点:软件实验室二 一、实验题目 SQL 基本表查询基本表、索引与视图的定义、删除和修改 二、实验目的和要求 使学生熟悉SQL Server的企业管理器的用法,初步了解SQL Server查询分析器的使用方法,熟悉SQL SERVER的常用数据类型,加深对SQL和SQL语言的查询语句的理解。 熟练掌握简单表、索引与视图的创建与修改。 三、实验内容 1. 基本表的建立: a)建立一个“学生表student”,它由学号xh、姓名xm、性别xb、 年龄nl、所在系xi五个属性组成,其中学号属性为主属性,并 且其值是唯一的。 b)建立“课程course”包括课程号kch,课程名称kcmc,先修课程 xxkc,学分xf,要求建立主键课程号 c)建立“选课表sc”包括学号xh,课程号kch,成绩grade,要求 建立主键及与student及sc表联接的外键 2. 基本表的修改: d)在选课表中增加一列“任课教师rkjs” e)删除选课表中rkjs一列 f)将student表的xm一列允许空值的属性更改成不允许为空,将 列xm的长度由char(8)改为char(10) g)建立一个临时表,再将其删除 3. 索引的建立与删除: a) 在学生表中以学生的姓名建立降序索引 b) 在课程表中以课程名建立升序,以学分建立降序索引 c) 删除以上索引 4. 建立、删除和更新视图: a) 建立数学系学生的视图,并要求进行修改和插入操作时仍需保证 该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。 CREATE VIEW C_Student AS SELECT Sno, Sname, Sage, Sdept FROM Students WHERE Sdept=’数学’ WITH CHECK OPTION b) 删除视图 在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学

数据库原理实验报告实验四视图与索引

数据库原理实验报告实验 四视图与索引 The Standardization Office was revised on the afternoon of December 13, 2020

一、实验内容、步骤以及结果 1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。(5分) 2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。 --第一种方法 CREATE VIEW V_SPJ AS SELECT sno,pno,qty FROM SPJ WHERE jno=( SELECT jno FROM J WHERE jname ='三建' ); GO --删除建好的视图 DROP VIEW V_SPJ; GO --第二种方法 CREATE VIEW V_SPJ AS

SELECT sno,pno,qty FROM SPJ,J WHERE=AND='三建'; 3.用SQL语句完成第五版教材第三章第11题中的视图查询(10分,每小题5分)。 11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、 零件代码(PNO)、供应数量(QTY)。 针对该视图VSP完成下列查询: (1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。

4.用SQL语句完成视图的数据更新。(15分,每题5分) (1)给视图V_SPJ中增加一条数据。 提示: -SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO为NULL,所以视图中没有该条数据。 -SPJ表中JNO不能为空时,可以使用instead of触发器实现。 (2)修改视图V_SPJ中的任意一条数据的供应数量。

实验六:关系图、索引和视图的定义及维护

实验六:关系图、索引和视图的定义及维护 一、实验目的 1.掌握创建关系图的方法。 2.掌握创建、查看和删除索引的操作和方法。 3.理解视图的含义,能使用SQL Server企业管理器创建视图并对其进行管 理。 二、实验环境 已安装SQL Server 企业版的计算机(120台); 具有局域网环境,有固定IP; 三、实验学时 2学时 四、实验要求 1.索引和视图的创建和管理也可以用查询分析器实现,参照课本上的相关 Transact-SQL命令,写出对应的Transact-SQL实现代码。 2.将视图的创建、修改、删除过程与实验二中表的创建、修改、和删除进 行对照,看看有什么相同点和不同点。 3.完成实验报告; 五、实验内容及步骤 以系统管理员身份登录到SQL Server服务器,在SQL Server2005界面中实现第1题操作,其余题目用SQL Server2005界面及T-SQL 语句实现: 1.使用创建数据库关系图向导为学生选课数据库中的Student表,Course 表,SC表创建关系图。 2.为Student表创建一个基于Sname(姓名)的按降序排列的聚簇索引 Stusname。 CREATE CLUSTERED INDEX Stusname ON

Student(Sname DESC) 3.为学生—课程数据库中的Student,Course,SC 3 个表建立索引。其中 student按学号升序建唯一索引,course按课程号升序建唯一索引,SC 按学号升序和课程号降序建唯一索引,索引名称分别为 Stusno,Coucno,Scno。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 4.删除 Student表中的Stusname索引。 DROP INDEX student.Stusname 5.创建信息系男学生基本信息视图stu_is,包括学生的学号、姓名及年龄, 并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。CREATE VIEW stu_is AS SELECT sno,sname, sage,ssex,sdept from student Where sdept = ‘IS’ and ssex=‘男’ WITH CHECK OPTION 6.建立信息系选修了1号课程的学生视图stu_is_c1(学号,姓名,成绩)。CREATE VIEW stu_is_c1(学号,姓名,成绩) AS SELECT Student. Sno,Sname,Grade FROM Student,SC WHERE Sdept= 'IS' AND Student.Sno=SC.Sno AND https://www.doczj.com/doc/cf2118204.html,o= '1' 7.建立信息系男同学年龄在19岁以上学生信息的视图stu_is_age。(使用 第5题的视图) CREATE VIEW stu_is_age AS SELECT Sno,Sname,sage FROM stu_is WHERE sage>19 8.查询信息系男同学年龄在19岁以上的学生信息。 SELECT * From stu_is_age WHERE sage>=19 9.查询信息系选修了1号课程且成绩大于 80的学生成绩信息。 SELECT * FROM stu_is_c1 where grade>80 或SELECT Student.Sno,Sname ,grade FROM Student,SC WHERE Student.Sno =SC.Sno AND https://www.doczj.com/doc/cf2118204.html,o= '1‘AND sdept=‘CS’and grade>80

Oracle视图中建立索引的注意事项

Oracle视图中建立索引的注意事项 在视图上创建索引需要三个条件: 一、视图必须绑定到架构。 要做到这点,在 CREATE VIEW 语句中,必须加上 WITH SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,属性,选中“绑定到架构”。 二、索引必须是唯一索引。 要做到这点,在 CREATE INDEX 中必须指定 UNIQUE。 三、索引必须是聚集索引。 要做到这点,在 CREATE INDEX 中必须指定 CLUSTERED。 例: CREATE VIEW viewFoo WITH SCHEMABINDING AS SELECT id... CREATE UNIQUE CLUSTERED INDEX index_viewFoo ON viewFoo(id) 在视图上创建聚集索引之前,该视图必须满足下列要求: 当执行 CREATE VIEW 语句时,ANSI_NULLS 和 QUOTED_IDENTIFIER 选项必须设置为 ON。OBJECTPROPERTY 函数通 过 ExecIsAnsiNullsOn 或 ExecIsQuotedIdentOn 属性为视图报告此信息。 为执行所有 CREATE TABLE 语句以创建视图引用的表,ANSI_NULLS 选项必须设置为 ON。 视图不能引用任何其它视图,只能引用基表。 视图引用的所有基表必须与视图位于同一个数据库中,并且所有者也与视图相同。 必须使用 SCHEMABINDING 选项创建视图。SCHEMABINDING 将视图绑定到基础基表的架构。 必须已使用 SCHEMABINDING 选项创建了视图中引用的用户定义的函数。 表和用户定义的函数必须由 2 部分的名称引用。不允许使用 1 部分、3 部分和 4 部分的名称。

数据库实验实验10 视图与索引

实验10 视图与索引 1.实验目的 (1)掌握视图的创建、修改方法。 (2)能够通过视图修改数据。 (3)理解索引的概念和索引的作用,学会使用索引。 (4)了解聚簇索引和非聚簇索引。 2.实验内容 (1)创建视图 ①创建03班学生的视图 create view c1_student as select * from SM.dbo.student where clno='03' ②创建03班学生的视图,输出其学号、姓名和年龄 create view c11_student as select sno,sname,sage from SM.dbo.student where clno='03' ③创建030002班学生的视图,输出其学号、姓名和年龄,并且更换列名 create view c12_student(学号,姓名,年龄) as select sno,sname,sage from SM.dbo.student where clno='030002' ④修改表sutdent的结构,增加一列,再执行上述3组语句,查看结果 ?? ⑤通过如下两组SQL语句创建星“王”的学生的视图,然后分别向两师徒中插入

一条姓的记录,用SQL语句查看执行结果 create view w1_Student as select sno,sname from SM.dbo.student where sname like '王%' with check option create view s2_Student as select sno,sname from SM.dbo.student where sname like '王%' ⑥创建17信计选修了6课程的学生的视图 create view IS_C1(SNo,SName,Score) as select student.sno,sname,score from SM.dbo.student,SM.dbo.SC,SM.dbo.class where clname='17信计' and student.sno=https://www.doczj.com/doc/cf2118204.html,o and https://www.doczj.com/doc/cf2118204.html,o='6' and student.clno=class.clno ⑦创建17信计选修了6号课程且成绩几个的学生的视图 create view IS_C2 as select sno,sname,score from IS_C1 where Score>=60

数据库实验-数据库索引、视图与触发器

石家庄经济学院 实验报告 学院: 信息工程学院 专业: 网络工程 信息工程学院计算机实验中心制

1.索引的建立和删除操作 2.视图的创建、修改、更新和查询操作 二实验目的 1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。 2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。 三实验内容 1.索引的建立和删除操作 (1)在S表中,建立按照sno升序的惟一性索引snoIDX。 (2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。 (3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。 (4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。 (5)删除索引cnameIDX。 2.视图的创建、修改、更新和查询操作 (1)建立一个关于所有女生信息的视图S_GIRL。 (2)将各系学生人数,平均年龄定义为视图V_NUM_A VG (3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。 (4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。 (5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。 (6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。 (7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。 (8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。 (9)删除视图S_GRADE。 (10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。 (11)通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询 结果。 (12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。 (13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。 (14)通过视图COMPUTE_A VG_GRADE,将“4121090301”学生的平均分改为90分,是否可以实 现,请说明原因。 四实验要求 1.要求掌握索引的类型,以及创建索引时的注意事项,例如每个表只能创建一个聚集索引,可以创建非聚集索引最多为249个,等等。 2.理解创建视图的目的和意义。掌握创建视图时需要考虑的原则:只能在当前数据库中创建视图、

实验训练4:视图和索引的构建与使用

数据库原理实验报告-实验四-视图与索引《数据库原理》实验报告 题目:实验四 视图与索引 一、实验内容、步骤以及结果 1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。(5 分) 2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。 -- 第一种方法

CREATEVIEW V_SPJ AS SELECT sno , pno , qty FROM SPJ WHERE jno =( SELECT jno FROM J WHERE jname = ' 三建 ' ); GO -- 删除建好的视图 DROPVIEW V_SPJ ; GO -- 第二种方法 CREATEVIEW V_SPJ AS SELECT sno , pno , qty FROM SPJ , J WHERE J . jno = SPJ . jno AND J . jname = ' 三建 ' ; 3.用SQL语句完成第五版教材第三章第11题中的视图查询(10分,每小题5分)。 11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。

针对该视图VSP完成下列查询: (1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。 4.用SQL语句完成视图的数据更新。(15分,每题5分) (1) 给视图V_SPJ中增加一条数据。 提示: - SPJ表中 JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于 JNO 为NULL,所以视图中没有该条数据。 - SPJ表中JNO不能为空时,可以使用 instead of触发器实现。

视图和索引(数据库实验4)

数据库基础与实践实验报告实验四视图和索引 班级:惠普测试142 学号:1408090213 姓名:闫伟明 日期:2016-11-13

1 实验目的: 1)掌握SQL进行视图创建的方法; 2)掌握SQL进行视图更新的方法,理解视图更新受限的原因; 3)掌握SQL进行索引创建及删除的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验内容与步骤 利用实验一创建的sch_id数据库完成下列实验内容。 1.定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。 视图定义代码: CREATE VIEW V_TCS AS SELECT tno,tn,sex,age,prof,sal,comm,T.dno FROM T,D WHERE T.dno=D.dno AND D.dn='计算机' 视图查询语句与查询结果截图: SELECT*FROM V_TCS 2.定义视图V_sal,存放全体教师的教师号,教师姓名,教师酬金(工资+岗位津贴),职称信息。视图定义代码: CREATE VIEW V_sal AS

SELECT tno教师号,tn教师姓名,sal+comm教师酬金,prof支撑信息 FROM T 视图查询语句与查询结果截图: SELECT*FROM V_sal 3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。视图更新代码: INSERT INTO V_TCS SELECT'T10','良瑗','女',20,'讲师',6000,8000,D.dno FROM D WHERE D.dn='计算机'

视图和索引(数据库实验4)

. . . 数据库基础与实践实验报告实验四视图和索引 班级:惠普测试142 学号:1408090213 :闫伟明 日期:2016-11-13

1 实验目的: 1)掌握SQL进行视图创建的方法; 2)掌握SQL进行视图更新的方法,理解视图更新受限的原因; 3)掌握SQL进行索引创建及删除的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验容与步骤 利用实验一创建的sch_id数据库完成下列实验容。 1.定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。 视图定义代码: CREATE VIEW V_TCS AS SELECT tno,tn,sex,age,prof,sal,comm,T.dno FROM T,D WHERE T.dno=D.dno AND D.dn='计算机' 视图查询语句与查询结果截图: SELECT*FROM V_TCS 2.定义视图V_sal,存放全体教师的教师号,教师,教师酬金(工资+岗位津贴),职称信息。视图定义代码: CREATE VIEW V_sal AS

SELECT tno教师号,tn教师,sal+comm教师酬金,prof支撑信息 FROM T 视图查询语句与查询结果截图: SELECT*FROM V_sal 3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。视图更新代码: INSERT INTO V_TCS SELECT'T10','良瑗','女',20,'讲师',6000,8000,D.dno FROM D WHERE D.dn='计算机'

实验 视图、索引与数据库关系图

实验名称:实验五视图、索引与数据库关系图 班级学号姓名日期 所在院系指导老师成绩 一、试验目的 使学生掌握SQL Server中的视图创建、查看、修改和删除的方法;索引的创建和删除的方法;数据库关系图的实现方法。加深对视图和SQL Server数据库关系图的理解。 二、实验内容 (1)创建、查看、修改和删除视图。 (2)创建、删除索引文件。 (3)创建数据库关系图。 三、试验步骤 1)视图操作 (1)创建视图。 使用SQL Server Management Studio直接创建,步骤如下: 1.单击数据库前面的+号,然后再单击“学生选课”数据库前面的+号,右击“视图”,在弹出的快捷菜单中选择“新建视图”命令,弹出“添加表”对话框。如图5.1所示 图5.1 “添加表”对话框 2.在“添加表”对话框中,添加视图数据来源的表,这里添加三张表,分别是student、course和sc表。添加表后,单击添加表对话框中的“关闭”按钮,出现创建视图界面。如图5.2所示 图5.2添加字段前的效果图

3.如果要在视图中显示某些表的某个字段,只需单击其字段前的复选框即可,同时在中间列中会显示该字段,在代码区中会看到具体实现的代码。 4.如果要查看视图,单击常用工具栏中的“执行”按钮,就可以看到视图的数据显示,如由字段student.sno、sname、cname、grade生成的视图效果。如图 5.3所示 图5.3 生成视图效果图 5.在创建视图中还可以为字段添加列名、进行排序、添加多个筛选条件。 6.单击常用工具栏中的“保存”按钮,就可以弹出保存视图提示对话框,输入视图名字即可,为view_stu_grade。 (2)修改视图。 视图创建好后,就可以利用它进行查询信息了。如果发现视图的结构不能很好的满足要求,还可以对它进行修改。 使用SQL Server Management Studio直接修改,步骤如下: 1.在SQL Server Management Studio中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。 2.右击要修改结构的视图,在弹出的视图功能快捷菜单中选择“修改”命令,就可以直接修改了。 (3)删除视图 使用SQL Server Management Studio直接删除,步骤如下: 1.在SQL Server Management Studio中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。 2.右击要删除的视图,在弹出的视图功能快捷菜单中选择“删除”命令,就可以直接删除掉制定的视图。 2)索引文件的创建与删除 索引是一个单独的、物理的数据库结构,是为了加速对表中数据行的查询而创建的一种分散的存储结构。 (1)创建索引文件。 使用SQL Server Management Studio直接创建索引文件,步骤如下: 1.单击数据库前面的+号,然后再单击“学生选课”数据库前面的+号,再单击表前面的+号,就额可以看到已存在的表了, 2.选定要添加索引的表,如数据表student。右击,在弹出的快捷菜单中选择“修改”命令。

索引和视图实验报告

7-1编程在teaching 数据库中的student 表的sname 列上创建唯一索引 IDX_sname。 USE teaching GO CREATE UNIQUE INDEX IDX_sname ON student(sname) 7-2 编程在teaching数据库中的student表的studentno和classno列上创建组合索引IDX_sc。 USE teaching IF EXISTS(SELECT name FROM sysindexes WHERE name='IDX_sc') DROP INDEX student.sc GO CREATE INDEX IDX_sc ON student(studentno,classno) 7-3 重新组织teaching 数据库中student 表上的IDX_sc 索引。 USE teaching ALTER INDEX IDX_sc ON dbo.student REORGANIZE 7-4 重新生成teaching 数据库中student 表上的IDX_sname 索引,设置填充索引,将填充因子设置为80%,设置将中间排序结果存储在tempdb中。 USE teaching ALTER INDEX IDX_sname ON dbo.student REBUILD WITH(PAD_INDEX =ON,FILLFACTOR= 80,SORT_IN_TEMPDB =ON) 7-5 重新生成teaching 数据库中student 表上的C_studentno 索引,将其修改为聚集唯一索引,并指定该索引的叶级页的填充度为70%。 USE teaching GO CREATE UNIQUE CLUSTERED INDEX C_studentno ON dbo.student(studentno) WITH(PAD_INDEX =ON,FILLFACTOR= 70,DROP_EXISTING =ON)

数据库实验-数据库索引、视图与触发器

经济学院 实验报告 学院: 信息工程学院 专业: 网络工程 信息工程学院计算机实验中心制

一实验题目 1.索引的建立和删除操作 2.视图的创建、修改、更新和查询操作 二实验目的 1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。 2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。 三实验容 1.索引的建立和删除操作 (1)在S表中,建立按照sno升序的惟一性索引snoIDX。 (2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。 (3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。 (4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。 (5)删除索引cnameIDX。 2.视图的创建、修改、更新和查询操作 (1)建立一个关于所有女生信息的视图S_GIRL。 (2)将各系学生人数,平均年龄定义为视图V_NUM_AVG (3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。 (4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。 (5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。 (6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。 (7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。 (8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。 (9)删除视图S_GRADE。 (10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。 (11)通过视图S_GIRL,新增一个学生信息(“兰兰”,“女”,“计算机学院”,1996-8-8),并查询结 果。 (12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。 (13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。 (14)通过视图COMPUTE_AVG_GRADE,将“4121090301”学生的平均分改为90分,是否可以实 现,请说明原因。

实验九 视图和索引及数据关系图

实验九视图和索引及数据库关系 一、实验目的 使学生掌握SQL Server中视图的创建、查看、修改和删除方法,掌握索引的创建和删除方法以及数据库关系图的实现方法,加深对视图和SQL Server数据库关系图作用的理解。 二、实验内容 (1)创建、查看、修改、和删除视图 (2)创建、删除索引文件 (3)创建数据库关系图 三、实验指导 本部分利用数据库JXGL的表S、SC、C中的数据进行实验 1.视图操作 (1)创建视图。 实验9.1 使用SQL Server Management Studio 直接创建视图。

(4)查看视图,单击“常用”工具栏中的“执行”按钮,就可以看到视图的数据显示。

实验9.2 使用T-SQL语句创建和查看视图 语法格式如下: CREATE VIEW view AS select_statement 在数据库JXGL中3个表的基础上建立一个视图,取名为view_s_grade。在数据库引擎查看文档中输入如下代码: (2)修改视图 视图在创建好后,就可以利用它查询信息了。如果用户发现视图的结构不能很好她满足要求,还可以对它进行修改。 实验9.3 使用SQL Server Management Studio 窗口直接修改视图。 2.索引文件的创建与删除 索引是一个单独的,物理的数据库结构,是为了加速对表中数据行的查询而创建的一种分散的存储结构 (1)创建索引文件 实验9.5 使用SQL Server Management Studio 窗口直接创建索引文件。

1.创建索引文件IX_sdept,关键字段为sdept,升序。 在数据库引擎查询文档中输入以下代码: 在S表中心字段age创建索引文件IX_age,降序。代码如下: 3.创建数据库关系图 如果数据库中的表没有设置主键,那么,用户可以在关系图中先设置主键,然后再建立实体关系。数据库关系图是数据训架构的图形描述。 实验9.7 数据库JXGL的关系图管理。

相关主题
文本预览
相关文档 最新文档