当前位置: 首页 > news >正文

【数据库原理 实验报告7】视图和存储过程的应用

上一篇:【数据库原理 实验报告6】数据查询的应用(嵌套查询)

目录

【实验目的】

【实验准备】

【实验要求】

实验心得


【实验目的】

掌握视图和存储过程的使用,能独立按要求对视图和存储过程的进行指定的更新操作。

【实验准备】

  1. 界面方式创建数据库student.在该数据库下完成本次实验题目。
  2. 在数据库student下,执行文件CREATETAB.sql
  3. 在数据库student下,执行文件INSERTTAB.sql

【实验要求】

第一部分:教材P100-101

1 使用实验一中创建的数据库验证教材第3章第5节例3.28---3.30。

第二部分:

  1. 建立一个名为StudentView的视图,包含18岁以上学生的学号,姓名和年龄。要保证对视图的修改复合该条件。

截图:

代码:

CREATE VIEW StudentView AS SELECT S#, SName, Age FROM S WHERE Age >= 18;
  1. 修改StudentView视图,将‘许阳’同学的年龄改为22。

截图:

代码:

UPDATE StudentView SET Age = 22 WHERE SName = '许阳';
  1. 修改StudentView视图,将‘吴海’同学的年龄改为17。出现何种提示信息?为什么?记录代码和提示信息。

截图:

代码:

UPDATE StudentView SET Age = 17 WHERE SName = '吴海';

建立一个名为StudentSumView的视图,包含所有学生学号和其总成绩。

截图:

代码:

CREATE VIEW StudentSumView AS SELECT S#, SUM(SCORE) AS TotalScore FROM SC GROUP BY S#;

修改StudentSumView,给每个同学的总成绩增加10%,出现何种提示信息?记录代码和提示信息。

截图:

代码:

UPDATE StudentSumView SET TotalScore = TotalScore * 1.1;

删除StudentSumView视图。

截图:

代码:

DROP VIEW StudentSumView;

创建存储过程studentage,返回全体同学的平均年龄。执行该存储过程。

截图:

代码:

CREATE PROCEDURE studentage AS SELECT AVG(Age) AS AverageAge FROM S;

创建带参数的存储过程studentgrade。查询指定学生姓名和课程名的成绩。

截图:

代码:

CREATE PROCEDURE studentgrade @SName char(10), @CName char(20) AS SELECT SCORE FROM SC JOIN S ON SC.S# = S.S# JOIN C ON SC.C# = C.C# WHERE S.SName = @SName AND C.CName = @CName;

执行存储过程studentgrade,查找张宏同学的‘DBA’课程的成绩。

截图:

代码:

EXEC studentgrade '张宏', 'DBA';

删除存储过程studentage。

截图:

代码:

DROP PROCEDURE studentage;

使用系统存储过程sp_help查看存储过程studentgrade的信息,并把结果截屏记录下来。

截图:

代码:

EXEC sp_help 'studentgrade';

实验心得

通过本次数据库视图与存储过程应用实验,我系统掌握了视图创建、修改、删除及存储过程定义与调用的核心操作,深入理解了视图的安全性、逻辑独立性与存储过程的高效性优势,不仅夯实了数据库理论基础,更提升了实操能力,对数据库规范化开发有了全新认知。

实验让我清晰掌握了视图的核心特性与使用规范。视图作为虚拟表,不存储实际数据,却能为用户提供定制化的数据访问窗口。在创建StudentView视图时,我通过WHERE条件筛选 18 岁以上学生信息,实现了数据的权限控制,有效保护了原始表中的敏感数据。在修改视图数据的过程中,我直观体会到视图的可更新性规则:当修改数据违反视图定义条件时,操作会被限制,这让我明白视图不仅能简化查询,更能保障数据一致性。而对基于聚合函数创建的StudentSumView视图执行更新操作失败的实验,让我深刻理解了聚合视图不可更新的原理,彻底厘清了可更新视图与不可更新视图的边界,弥补了理论学习中的认知盲区。

视图的逻辑独立性价值在实验中体现得尤为明显。视图将用户与基础表隔离,即便基础表结构发生变化,只需调整视图定义即可保证用户查询不受影响,极大降低了数据库维护成本。同时,通过删除视图的操作,我熟悉了视图的生命周期管理,养成了规范操作数据库对象的习惯,也认识到合理使用视图能够简化复杂查询、提升数据访问的安全性。

存储过程的学习是本次实验的另一大收获。存储过程将一组 SQL 语句预先编译存储在数据库中,通过调用即可执行,大幅提升了数据处理效率。创建无参存储过程studentage实现平均年龄查询,让我掌握了存储过程的基本语法结构;而带参数存储过程studentgrade的设计与执行,让我学会了通过传入参数实现灵活的条件查询,理解了存储过程在模块化编程中的作用。使用系统存储过程查看对象信息的操作,让我了解了数据库内置工具的使用方法,拓展了数据库管理的技能。实验中存储过程的创建、调用与删除全流程操作,让我切实感受到其减少网络交互、提高执行效率、增强代码复用性的优势,这也是存储过程在实际项目中广泛应用的核心原因。

实验过程中,我也遇到了不少问题,比如视图更新报错、存储过程参数匹配错误、多表连接查询语法失误等。通过排查错误、分析原因,我不仅熟练掌握了错误调试方法,更深化了对 SQL 语法规则、数据完整性约束的理解。每解决一个问题,都让我的数据库实操能力得到一次提升。

此次实验将理论知识与实操紧密结合,让我真正掌握了视图和存储过程的应用场景与操作技巧。我深刻认识到,视图是保障数据安全、简化查询的重要工具,存储过程是提升数据库运行效率、实现模块化开发的关键技术。在今后的学习和实践中,我会更加注重数据库对象的合理使用,遵循规范化开发原则,不断提升数据库设计与管理能力,为后续复杂数据库项目开发打下坚实基础。

http://www.jsqmd.com/news/620995/

相关文章:

  • U盘文件怎么加密?教你五个给U盘文件加密的方法,快试试
  • 2026年汉白玉厂家核心技术拆解:四川汉白玉批发/四川汉白玉栏杆/四川汉白玉栏杆厂家/四川汉白玉栏板厂家/四川汉白玉桥栏杆/选择指南 - 优质品牌商家
  • AI原生前端开发实战手册:从Prompt驱动UI到Autonomous Component,2026大会首发12个可复用工程模式
  • 我让 Claude 和 Codex 同时审计 个模块,它们只在 个上达成共识揽
  • 保姆级教程:在PyBullet里用UR10+Robotiq夹爪抓取鼠标,从环境搭建到避坑调参
  • 2024个人AI趋势:OpenClaw+Qwen3-32B的十大革新场景
  • 高效论文降重方案:2026年TOP5平台功能对比与终极选择建议,AIGC率实测直降5%!
  • AI Coding越来越强,我们还有必要学Processing吗? · 创意编程屑
  • INA219高精度电流功率监控芯片原理与嵌入式驱动开发
  • 小米手机相关设置
  • 分布式锁的实现,选Redis还是ZooKeeper?
  • CogPMAligMultiTool 工具使用-发卡识别
  • OFA图像语义蕴含模型效果展示:contradiction高亮识别与错误假设预警能力
  • 深入解析AMD Versal自适应SoC:架构革新与多场景应用指南
  • Arduino CBUS按钮开关协议处理库CBUSSwitch详解
  • ARM 架构 JuiceFS 性能优化:基于 MLPerf 的实践与调优妒
  • KMS_VL_ALL_AIO完整指南:3分钟搞定Windows和Office激活的终极方案
  • 【Python实战】数据可视化自动化:matplotlib+pyecharts+AI智能推荐图表类型
  • Linux服务器网络突然不通?别慌,先检查一下nf_conntrack这张‘表’是不是满了
  • cocotb实战入门:从零搭建D触发器测试环境
  • 企业私有化IM哪个好? - BeeWorks
  • 全球线性可变位移传感器:工业数字化转型与智能制造驱动下的稳增进阶,2025年11.7亿,2032年规模19.25亿,2026-2032年CAGR7.5%
  • FastAPI项目半夜报警吵醒你?聊聊告警这事儿怎么搞!焉
  • MCP23017增强库:为HC-SR04超声波测距实现硬件级pulseIn()
  • 2026移动方舱技术全解析:保安岗亭/医院警务室/成品岗亭/治安岗亭/流动警务室/社区警务室/移动岗亭/移动方舱/选择指南 - 优质品牌商家
  • 联想 Yoga 7a 二合一笔记本:优缺点交织下的市场考验
  • 数据增强技术对比:Mosaic、Mixup、Cutout与CutMix的核心优势与应用场景
  • 2026年PC流量蓝海掘金:Bing开户公司排名与高价值人群触达策略
  • 算法备案不是终点,而是起点:AI原生软件全生命周期合规治理框架,覆盖需求→上线→迭代→下线4阶段
  • ADXL345驱动开发实战:I2Cdevlib在STM32与FreeRTOS中的工程集成