前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >haue数据库原理第三次实验

haue数据库原理第三次实验

作者头像
南桥
发布2024-11-27 08:37:58
发布2024-11-27 08:37:58
8200
代码可运行
举报
文章被收录于专栏:南桥谈编程南桥谈编程
运行总次数:0
代码可运行

一、实验学时

2学时

二、实验目的

(1)熟练掌握T-SQL语句创建与维护索引的方法。 (2)掌握视图创建、更改的方法。 (3)掌握用视图管理数据的方法。

三、实验内容

(一)索引

索引分为两种:聚簇索引和非聚簇索引。每张表只能有一个聚簇索引。创建索引时的缺省设置是非聚簇索引。 1.使用SQL语句为course表的课程编号创建唯一性索引,命名为cno_idx。(8分)

代码语言:javascript
代码运行次数:0
复制
CREATE UNIQUE INDEX Cno_idx ON course(Cno ASC);

2.使用SQL语句为sc表的“成绩”字段创建一个普通索引,命名为sc_idx。(8分)

代码语言:javascript
代码运行次数:0
复制
CREATE INDEX sc_idx ON sc (Grade ASC);

3.使用SQL语句为sc表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为sc_sno_cno_idx。(8分)

代码语言:javascript
代码运行次数:0
复制
CREATE UNIQUE INDEX sc_sno_cno_idx ON sc (Sno ASC,Cno ASC);

4.查看SC表上的索引信息。(提示:MySQL使用show index)(8分)

代码语言:javascript
代码运行次数:0
复制
SHOW INDEX FROM sc;

5.使用SQL语句删除索引sc_idx。再次查看sc表上的索引信息。(8分)

代码语言:javascript
代码运行次数:0
复制
ALTER TABLE sc DROP INDEX sc_idx;
SHOW INDEX FROM sc;

(二)视图

1.使用SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为20180002的学生情况。(10分)

代码语言:javascript
代码运行次数:0
复制
CREATE VIEW v_stu_c AS SELECT sc.Sno,Sname,Cno FROM student, sc WHERE sc.Sno=student.Sno;
SELECT * FROM v_stu_c WHERE sno = '20180002';

2.基于student表、course表和sc表,建立一个名为v_stu_g的视图,视图包括所有选课学生的学号、姓名、课程名称、分数。使用视图v_stu_g查询学号为20180003的学生的课程平均分。(10分)

代码语言:javascript
代码运行次数:0
复制
CREATE VIEW v_stu_g AS SELECT sc.Sno,Sname,Cname,Grade FROM course,student,sc WHERE sc.Sno=student.sno AND sc.Cno=course.Cno;
SELECT AVG(Grade) FROM v_stu_g WHERE Sno = '20180003';

3.使用SQL语句修改视图v_stu_c,显示学生的学号、姓名、性别。(8分)

代码语言:javascript
代码运行次数:0
复制
ALTER VIEW v_stu_c AS SELECT Sno,Sname,Ssex FROM student;

4.利用视图v_stu_c为student表添加一行数据:学号为20180008、姓名为陈婷婷、性别为女。(8分)

代码语言:javascript
代码运行次数:0
复制
INSERT INTO v_stu_c VALUES('20180008','陈婷婷','女');

5.利用视图v_stu_c删除学号为20180008的学生记录。(8分)

代码语言:javascript
代码运行次数:0
复制
DELETE FROM v_stu_g WHERE sno='20180008';

6.利用视图v_stu_g修改姓名为刘晨的学生的数据库系统概论分数为87分。(8分)

代码语言:javascript
代码运行次数:0
复制
UPDATE sc 
SET Grade = '87' 
WHERE sno = (SELECT Sno FROM student WHERE Sname = '刘晨' LIMIT 1) 
AND Cno = (SELECT Cno FROM course WHERE Cname = '数学' LIMIT 1);

7.使用SQL语句删除视图v_stu_c和v_stu_g。(8分)

代码语言:javascript
代码运行次数:0
复制
DROP VIEW v_stu_c;
DROP VIEW v_stu_g;

五、实验思考

1. 能否在视图上建立索引。 不能创建索引表,视图本身是一个虚拟的表,它是基于查询语句(SELECT)的结果集

2.创建视图时,with check option参数的含义。

WITH CHECK OPTION 是在创建视图时用来限制通过视图进行数据修改(例如 INSERTUPDATEDELETE)的操作的一种参数。其作用是确保对视图进行的数据操作(修改)符合视图定义的条件。

3.视图的作用。 简化复杂查询:视图可以将复杂的查询逻辑封装成一个虚拟表,用户无需每次都编写复杂的 SQL 语句。通过创建视图,用户只需要简单地查询视图,而不必重复复杂的 JOIN、GROUP BY 等操作。

数据安全性和权限管理:视图可以限制用户访问底层表的特定列或行,从而控制数据访问。通过视图,数据库管理员可以只暴露特定的数据字段,隐藏敏感信息或复杂的业务逻辑。

数据抽象:视图将数据库结构与用户的应用程序逻辑分离,使得应用程序可以以更抽象的方式访问数据,而不需要关心底层表的复杂结构。数据库的结构变化(如表名或字段名的修改)可以通过修改视图来隐藏,从而减少对应用程序的影响。

数据统一和集成:视图可以将来自多个表的数据统一呈现,消除不同数据源之间的差异。例如,基于多个表的数据生成一个视图,用户可以像查询一个单一的表一样,方便地查询这些数据。

提高代码重用性:一旦定义了视图,其他用户和应用程序可以多次使用它,避免了重复编写相同的查询。视图的定义可以帮助在多个地方重用相同的数据逻辑。

便于数据迁移和历史数据管理:视图可以用于跟踪某个时间点的数据快照,或者将实时数据转化为历史数据。对于历史记录和版本管理,视图可以帮助用户查看历史数据的变化,而不直接操作底层表。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、实验学时
  • 二、实验目的
  • 三、实验内容
    • (一)索引
    • (二)视图
  • 五、实验思考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档