视图、索引文件的应用

一、实验目的

1.掌握SQL Server 2019中的视图创建及删除的方法。

2加深对视图和SQL Server 2019图表作用的理解。

3. 掌握创建主键(PRIMARY KEY)约束的基本操作。

4.掌握创建唯一(UNIQUE)约束的操作。

5.掌握创建表间的参照关系的操作。

6.掌握创建和管理索引的基本操作。

7.掌握索引文件的使用方法。

二、实验仪器

计算机、SQL Server 2019软件,U盘(学生自备)。

三、实验原理

1.视图

(1)启动数据库服务软件SQL Server 2019的查询分析器,用CREATE VIEW语句建立视图。

(2)用DROP VIEW语句删除视图。

(3)用SELECT 命令对视图建立查询,语法格式同基本表的查询。

(4)利用UPDATE INSERT DELETE 等命令更新视图数据,语法格式同基本表的数据更新。

2.索引

(1)使用T-SQL语句中的CREATE INDEX,可以创建聚集索引或非聚集索引。

(2)使用T-SQL语句中的DROP INDEX,可以从当前数据库中删除一个或多个索引。

(3)用企业管理器创建索引、查看索引、重命名索引、删除索引。

四、实验内容与步骤

1.视图具体操作任务:

(1)利用企业管理器和SQL语言建立视图(运行并观察结果)

1)建立计算机系学生的视图IS_XS。

利用企业管理器建立视图:

 

SQL语言建立视图:create view  is_xs AS select * from xs where sdept = 'is' ;

 

  1. 建立计算机科学系选修了101号课程的学生的视图IS_S1。

利用企业管理器建立视图:

 

      SQL语言建立视图:create view  is_s1  AS select xs.sno,xs.sname,xs.ssex,xs.sbirth from xs,xs_kc where xs.sdept = 'is' and xs_kc.cno=101 and xs.sno=xs_kc.sno;

 

  1. 将学生的学号及他们的平均成绩定义为一个视图S_G。

利用企业管理器建立视图:

 

SQL语言建立视图:

create view  S_G  AS select  sno,AVG(grade) as average from xs_kc group by sno;

 

(2)使用SQL语言在查询分析器中查询视图(运行并观察结果)

1)在计算机科学系学生的视图中找出男生的学号。

SQL查询: select sno from is_xs where is_xs.ssex = '男';

 

  1. 在S_G中查询平均成绩在90分以上的学生的学号和平均成绩。

      SQL查询:select sno,S_G.average from S_G where S_G.average>90;

 

(3)使用SQL语言在查询分析器中更新视图(运行并观察结果)

1)将计算机科学系的学生视图IS_XS中学号为001109的学生姓名改为“刘辰”。

代码:update  is_xs set is_xs.sname = '刘辰' where is_xs.sno='001109';

 

结果:

  1. 删除计算机科学系的学生视图IS_XS中学号为001206的记录。

代码:delete  from is_xs where is_xs.sno='001206';

结果:

 

(4)使用SQL语言在查询分析器中删除视图(运行并观察结果)

1)通过企业管理器删除IS_S1视图

 

  1. 通过SQL命令删除IS_S1视图

代码:drop view is_s1;

 

2.索引与数据完整性操作任务

(1)利用企业管理器创建和删除主键(PRIMARY KEY)约束

1)对xs表中的学号设置主键

 

2)删除xs表中的学号主键

 

(2)通过企业管理器创建索引

 

1)对xs表按照学号建立主键索引,索引组织方式为非聚集索引;

2)对xs表按照姓名建立唯一索引,索引组织方式为聚集索引;

 

3)对xs_kc表按照学号+课程号建立唯一索引,索引组织方式为聚集索引;

 

     

(3)利用企业管理器创建和删除唯一(UNIQUE)约束

1)在xscj数据库的xs_kc表中,学生每门功课的成绩一般在0~100的范围内;

 

2)创建并删除kc表中的课程号唯一约束;

 

 

(4)利用企业管理器定义和删除表间的参照关系

1)建立xs与xs_kc之间的参照关系

 

2)删除xs与xs_kc之间的参照关系

 

(5)利用企业管理器设置默认初始值

1)对xs表中的总学分字段设置默认初始值为0

 

(6)删除索引

1)通过企业管理器删除上述索引;

所有表的结果:

 

2)通过SQL命令删除上述索引;

代码:DROP  INDEX IX_xs on xs;DROP  INDEX IX_kc on xs;DROP  INDEX IX_xs_kc on xs;

结果:

 

五、实验数据的记录及处理

以上操作内容使用SQL语句编程并运行成功后,将程序进行记录,并写在报告纸上。

六、思考题

1.视图与表的区别是什么?

答:区别:1、视图是已经编译好的sql语句。而表不是  
      2、视图没有实际的物理记录。而表有。
      3、表是内容,视图是窗口
      4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改
      5、表是内模式,视图是外模式
      6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
      7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 
      8、视图的建立和删除只影响视图本身,不影响对应的基本表。

  1. 索引分为几类?分别是什么?

答:一共有六种。

   分别是:普通索引:最基本的索引,没有任何约束限制。

唯一索引:和普通索引类似,但是具有唯一性约束,可以有 null

主键索引:特殊的唯一索引,不允许有 null,一张表最多一个主键索引

组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并

全文索引:对文本的内容进行分词、搜索

覆盖索引:查询列要被所建的索引覆盖,不必读取数据行

  1. 实体完整性如何实现?

答:数据的完整性是为了防止数据库中存在错误或不符合语义的数据,SQL语言实现数据的完整性一般通过其数据定义语言来实现以及描述数据完整性,而且是间接通过数据库管理系统进行检查数据库中的关系模型的实体完整性、参照完整性、用户定义完整性等SQL语言描述,以此来保证数据的完整性。

  • 实验中所遇到的问题及解决方法

答:创建视图的限制:
  1.不能将规则或者DEFAULT定义关联于视图。
    2.定义视图的查询中不能含有ORDER BY\COMPURER\COMPUTER BY 子句和INTO关键字
    3.如果视图中某一列是一个算术表达式、构造函数或者常数,而且视图中两个或者更多的不同列拥有一个相同的名字(这种情况通常是因为在视图的定义中有一个连接,而且这两个或者多个来自不同表的列拥有相同的名字),此时,用户需要为视图的每一列指定列的名称。

   创建索引的限制:

一张表索引越多,查询速度不一定快。一张表建立多少索引合适,还取决于这张表的属性,是否属于频繁更新的表,如果一张表记录不怎么更新,那么索引的建立会提高数据库的查询性能,相反,经常被更新记录的表,如果索引过多,则会影响该表的更新速度,所以必须限制索引数量,只在必要的字段上加上索引即可.

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个学编程的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值