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

合集下载

网络数据库讲稿(索引、关系、视图)

网络数据库讲稿(索引、关系、视图)

一、概述索引是与表或视图关联的、存储在数据库中的、具有特殊结构的对象,索引包含由表或视图中的一列或多列生成的键,并通过指针指向表或视图中对应的数据页和记录。

使用索引可以快速有效地查找与键值关联的行,提高从表或视图中检索行的速度。

二、索引的种类1. 聚集索引2. 非聚集索引三、创建索引P2991. 在对象资源管理器中创建2.用命令建立(1)用CREA TE INDEX命令建立例:CREATE UNIQUE INDEX 学生学号ON 学生(学号) ON 'PRIMARY'(2)在CREA TE TABLE命令中建立(3)在ALTER TABLE命令中建立四、删除索引1. 在对象资源管理器中删除。

2. 用DROP INDEX命令删除。

例:DROP INDEX 学生.学生学号五、几点说明1.一个表只能包含一个聚集索引,最多允许有249个非聚集索引。

2.默认情况下,PRIMARY KEY建立的索引是聚集索引;UNIQUE建立的索引是非聚集索引。

3.索引名在表或视图中必须唯一,但在数据库中不必唯一。

4.ntext、text、image数据类型的列不能作为索引列。

5.所有索引名都被保存在本数据库的系统视图sys.indexes的name列中。

6.在CREATE TABLE和ALTER TABLE命令中建立的索引不能用DROPINDEX命令删除,只能用ALTER TABLE命令修改。

表关系一、表关系图的创建P90二、为表添加关系P298三、对象依赖关系P82一、视图的概念视图是虚拟的表,保存在视图中的数据是由表派生的。

派生表被称为视图的基本表。

在SQL Server 2005中,视图被分为三种类型:标准视图,索引视图,分区视图。

二、创建视图P3001.在对象资源管理器中创建2.用命令建立用命令CREATE VIEW创建三、修改视图1.在对象资源管理器中修改2.用ALTER VIEW命令修改四、删除视图1.在对象资源管理器中删除2.用DROP VIEW命令删除。

6视图和索引

6视图和索引

创建视图注意事项
(3)视图列名列表是视图中所包含的列。若使用与基本表中 相同的列名,则可以省略。若指定列名列表,则需全部指定, 不能只给出一部分。以下情况要求必须指定视图的全部列名: ①由算术表达式、系统内置函数或者常量得到的列; ②多表连接查询时选出的同名列; ③希望视图中的列名与基表中的列名不同的时候。 (4)WITH CHECK OPTION子句表示在视图上执行UPDATE, INSERT或DELETE操作时要保证所修改的行满足视图定义 中的谓词条件(即SELECT查询子句中的限定条件,如Where 条件),这样可以确保数据修改后,仍可通过视图看到修改 的数据。
3.创建基于视图的视图
视图可以建立在其它已经创建好的视图上,即创建基于 视图的视图。
【例3.4】基于上例中的视图R_B_Book,创建”王旭”的读者 借阅的图书书名和出版社信息和借阅日期的视图WXBorrow。 CREATE VIEW WXBorrow AS SELECT 书名, 出版社, 借阅日期 FROM R_B_Book WHERE姓名 =‘王旭’
3.1.2 创建视图
创建视图的SQL语句一般格式为: CREATE VIEW <视图名> [(视图列名表)] AS SELECT 查询子句 [WITH CHECK OPTION]
创建视图注意事项
(1)视图名必须遵循标识符命名规则,且对每类 用户视图名必须是唯一的,即对不同用户定义 相同的视图,也必须使用不同的名字。 (2) SELECT查询子句的查询内容就是视图的内 容。SELECT语句通常不允许含有பைடு நூலகம்RDER BY子 句和DISTINCT子句。 SELECT语句中查询的表和视图即新创建的视 图所参照的表和视图。
4.创建带表达式的视图

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

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

实验六:关系图、索引和视图的定义及维护一、实验目的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 ONStudent(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索引。

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

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

实验名称:实验五视图、索引与数据库关系图班级学号姓名日期所在院系指导老师成绩一、试验目的使学生掌握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中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。

索引与视图简介

索引与视图简介

1.索引索引是一个单独的,物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标志这些值的数据页的逻辑指针清单.索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法.一个表的存储是由两部分组成的,一部分是用来存放表的数据页面,另一部分存放索引页面.索引就存放在索引页面上.从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较没有目录的书方便,快捷.按照上面的解释看书的目录这个比喻:>>它实际存,占据了书的内容,纸张>>它指向实际存在的内容。

比如要找第一章,那么目录后面的页码便为我们提供了一个快捷的方法。

当然对数据库来说,这些都是透明的我们不能看到的。

但的确提高了数据库返回给我们查询结果的效率。

另外,我们要将它与查询常用到的order by区分开。

前几天公司里新员工培训曾遇到有的同学j混淆了。

所谓order by只不过是将返回的结果按要求排好顺序,方便我们的使用。

它对所在的查询语句返回给我们结果是效率或其它方面(除去我们对结果的应用)是没有任何用处的。

另外有一种唯一索引,也就是主键(简单理解就是一个表中,如果在某列上建立了唯一索引,则该列不可以有两个一样的记录出现).但唯一索引有时会使我们插入/修改数据效率降低---或说就是降低了。

只是数据量小时不明显。

因为每次插入/修改都会检查完所有记录,看是否有该值存在。

>>>>就像要求每个身份证号只能一人使用,那么分配一个身份证号时就要检查一下是否已经有人在用这个身份证号(当然我们现实中可能已经排好了,我们用到哪个,下一个会用哪个)2.视图首先看一下一些标准的说法视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。

可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。

视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。

那些用于产生视图的表叫做该视图的基表。

6_索引与视图

6_索引与视图

多表视图 create view v1 as select title,publname from titles left join publishers on titles.publId = publishers.publid
上机作业 为上次课的员工与部门表创建一个视图, 为上次课的员工与部门表创建一个视图,通过视 图可以查询员工的姓名与部门的名称。 图可以查询员工的姓名与部门的名称。
索引与视图
主讲:宁恒生 主讲 宁恒生
主要内容 索引 视图
索引 为了在一个数据表中查询某个特定的记录, 为了在一个数据表中查询某个特定的记录,获取 提取一系列数据生成一个排序表格, 提取一系列数据生成一个排序表格,MySQL必须 必须 把这个数据表中的所有数据记录都搜索一遍。 把这个数据表中的所有数据记录都搜索一遍。 如果数据表的体积比较大, 如果数据表的体积比较大,在遇到一些查询的时 候性能就会明显下降,为了解决这个问题, 候性能就会明显下降,为了解决这个问题,需为 这个查询所涉及的数据列创建一个索引。 这个查询所涉及的数据列创建一个索引。
创建视图
tbl_emp( id serial, name varchar(20) not null, dept varchar(20), salary float(8,2) ) //单表视图 单表视图
create view v_emp as select id,name,dept from tbl_emp
视图 视图(view)使的人们可以为一个或多个数据表定 使的人们可以为一个或多个数据表定 视图 义一个特殊的表现形式。 义一个特殊的表现形式。 视图(view)在行为上与表 在行为上与表(table)没有区别 可以增、 没有区别,可以增 视图 在行为上与表 没有区别 可以增、 删,改,查。 创建视图的基本理由: 创建视图的基本理由 安全:员工资料 安全 员工资料 方便:多表查询 方便 多表查询

实验六 视图和索引 实验指导

实验六 视图和索引 实验指导

实验六视图和索引实验指导一、视图视图是SQL Server中重要的数据库对象。

视图常用于集中、简化和定制显示数据库的数据信息,为用户从多种角度观察数据库中的数据提方便。

为了屏蔽数据的复杂性、简化用户对数据的操作、控制用户访问数据的权限、保护数据安全,常为不同的用户创建不同的视图。

1. 视图的基本概念视图是从一个或多个表或视图导出的表;其结构和数据是建立在对表的查询基础上的。

和表一样,视图也是包括几个被定义的数据列和多个数据行。

但就本质而言,这些数据列和数据行来源于其所引用的表。

所以,视图不是真实存在的基础表,而是一张虚表。

视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。

视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份。

通过视图看到的数据,只是存放在基本表中的数据。

对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。

当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。

可以将任何符合视图创建规定的SELCT语句命名和存储为视图。

在视图中北查询的表称为基表。

视图的常见实例如下。

●一个基表的行或列的于集。

●两个或多个表的合并。

●两个或多个表的联接。

●一个基表的统计总汇。

●另外一个视图的子集。

●视图和基表的混合。

2. 创建视图在SQL Server2008中创建视图,创建者必须拥有创建视图的权限,并且对视图中引用的基表或视图有许可权。

此外,创建视图前还应该注意以下几点:●只能在当前数据库中创建视图。

如果使用分布式查询,视图所引用的基表和视图可以存在于其他数据库或其他服务器中。

●在一个视图中最多引用1024列,视图中记录的行数限制由基表中的记录数目决定。

●视图的名称必须遵循标识符的命名规则,且对每个架构都必须唯一,并且该名称不得与该架构包含的任何表的名称相同。

第6章 索引和视图

第6章 索引和视图

6.1.3 创建和删除索引
3
6.1.1 索引的概念
建立索引的目的:加快查询速度 可以针对表中的任何列建立索引
谁可以建立索引?
DBA 或 表的属主(即建立表的人) DBMS一般会自动建立以下属性列上的索引
PRIMARY KEY UNIQUE 谁维护索引? DBMS自动完成
询时间。
在经常使用 WHERE 子句中的列上创建索引,
加快条件的判断速度。
7
不应该创建索引的列
在查询中很少使用或者参考的列不应该创建索引。因为
索引反而降低了系统的维护速度和增大了空间需求。
只有很少数据值的列不应该增加索引。例如性别列,在
查询的结果中,结果集的数据行占了表中数据行的很大 比例,即需要在表中搜索的数据行的比例很大。增加索 引,并不能明显加快检索速度。 对于那些定义为text,image和bit数据类型的列不应 该增加索引。因为这些列的数据量要么相当大,要么取 值很少。
33
6.2.5 视图的作用
简化数据查询语句
使用户能从多角度看待同一数据 提高了数据的安全性 提供了一定程度的逻辑独立性
34
在设计和创建索引时,应确保对性能的提
高程度大于在存储空间和处理资源方面的 代价。
6
应该创建索引的列
在主码(主键)列上DBMS强制建立索引。 在经常连接的列上建立索引,这些列主要是一
些外键,可以加快连接的速度。
在经常需要根据范围进行搜索的列上创建索
引,,其指定的范围是连续的。
在经常需要排序的列上创建索引,加快排序查
视图的数据取自一个基本表的部分行、列,这样的视图
行列与基本表行列对应。 [例1]建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept = ‘信息系’ 说明:DBMS执行CREATE VIEW语句的结果只是保存视图 的定义,并不执行其中的SELECT语句。只有在对视图执 行查询时,才按视图的定义从相应基本表中查询数据。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六:关系图、索引和视图的定义及维护
一、实验目的
1.掌握创建关系图的方法。

2.掌握创建、查看和删除索引的操作和方法。

3.理解视图的含义,能使用SQL Server查询分析器器创建视图并对其进行
管理。

二、实验环境
已安装SQL Server 企业版的计算机(120台);
具有局域网环境,有固定IP;
三、实验学时
2学时
四、实验要求
1.索引和视图的创建和管理也可以用查询分析器实现,参照课本上的相关
Transact-SQL命令,写出对应的Transact-SQL实现代码。

2.将视图的创建、修改、删除过程与实验二中表的创建、修改、和删除进
行对照,看看有什么相同点和不同点。

3.完成实验报告;
五、实验内容及步骤
以系统管理员身份登录到SQL Server服务器,在SQL Server2005界面中实现第1题操作,其余题目用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 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,course,sc where sdept='is' and o='1'
7.建立信息系男同学年龄在19岁以上学生信息的视图stu_is_age。

(使用
第5题的视图)
create view stu_is_age as select sno,sname,sage from student where sdept = 'IS' and ssex='男'and sage>'19' with check option
8.查询信息系男同学年龄在19岁以上的学生信息
select * from stu_is_age where sage>'19'
9.查询信息系选修了1号课程且成绩大于 80的学生成绩信息。

select distinct grade from stu_is_c1 where grade>'80'
10.向视图stu_is中插入一个新的学生记录,学号为200515027,姓名为王
唔,年龄为20。

insert into stu_is values('200515027','王',20)
11.向视图stu_is_c1中插入一个新的学生记录,学号为200515027,姓名
为王唔,成绩为60。

insert into stu_is_c1 values('200515027','王唔',60)
12.将视图stu_is中学号为“200515004”的学生姓名改为“张珊”。

update stu_is set sname='张珊' where sno='200515004'
13.将视图stu_is_c1中学号为“200515006”的学生成绩改为75。

update stu_is_c1 set grade='75' where sno='200515006'
14.删除视图stu_is中学号为“200515020”的学生记录。

delete from stu_is where sno='200515020'
15.将stu_is视图修改为只包含信息系学生学号、姓名及年龄。

alter view stu_is as select sno,sname,sage from student where sdept='is'
16.同时删除视图stu_is和stu_is_age。

drop view stu_is,stu_is_age
思考题:1.考虑一下视图的作用,在什么样的情况下需要建立视图?
2.索引、视图和基本表有什么不同 ?。

相关文档
最新文档