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

【数据库原理 实验报告5】数据查询的应用(连接)

上一篇:【数据库原理 实验报告4】数据查询的应用

目录

【实验目的】

【实验准备】

【实验要求】

实验心得


【实验目的】

掌握数据查询语言的使用,能独立按要求对数据库进行指定的查询操作。

【实验准备】

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

  1. 在数据库student下,执行文件INSERTTAB.sql

【实验要求】

第一部分:练习第3章第3节例3.12和例3.13(P88)。

第二部分:

2 查询全体学生选课情况,即学号、姓名、课程号、成绩

截图:

代码:

SELECT S.S#, S.SName, SC.C#, SC.SCORE FROM S JOIN SC ON S.S# = SC.S#;

3 查询成绩大于80分的学生的学号、姓名,年龄、课程号、成绩

截图:

代码:

SELECT S.S#, S.SName, S.Age, SC.C#, SC.SCORE FROM S JOIN SC ON S.S# = SC.S# WHERE SC.SCORE > 80;
  1. 查询选修‘DBA’课程并且该门课程成绩在96分以上的学生姓名。

截图:

代码:

SELECT S.SName FROM S JOIN SC ON S.S# = SC.S# JOIN C ON C.C# = SC.C# WHERE C.CName = 'DBA' AND SC.SCORE > 96;

5 查询选修了C1课程或C2课程学生的学号、姓名、课程号、成绩

截图:

代码:

SELECT S.S#, S.SName, SC.C#, SC.SCORE FROM S JOIN SC ON S.S# = SC.S# WHERE SC.C# IN ('C1', 'C2');

6 查询至少选修两门课程的学生学号 (提示:自身连接查询

截图:

代码:

SELECT S.S# FROM S JOIN SC ON S.S# = SC.S# GROUP BY S.S# HAVING COUNT(SC.C#) >= 2;

  1. 查询所有学生的姓名及其选修课程的信息,需要返回学生姓名和课程号

截图:

代码:

SELECT S.SName, SC.C# FROM S LEFT JOIN SC ON S.S# = SC.S#;
  1. 查询所有学生的学号及其选课门数。

截图:

代码:

SELECT S.S#, COUNT(SC.C#) AS Course_Count FROM S LEFT JOIN SC ON S.S# = SC.S# GROUP BY S.S#;
  1. 利用集合操作,显示没有选修过课程的学生的学号

截图:

代码:

SELECT S.S# FROM S EXCEPT SELECT SC.S# FROM SC;

实验心得

本次数据库原理课程设计实验,围绕数据查询的连接操作展开,通过实际操作练习,我不仅巩固了SQL查询语言的应用,更深刻理解了连接查询的核心原理与实际价值,也在实践中发现了自身的不足,收获颇丰。

实验开始前,我们按照要求创建了student数据库,并执行相关SQL文件完成表的创建与数据插入,为后续查询操作做好了准备。此次实验分为两部分,第一部分对教材中的实例进行练习,帮助我们快速回顾连接查询的基础语法;第二部分则是针对性的实操题目,涵盖了内连接、左连接、自身连接以及集合操作等多种查询方式,每一道题目都对应着不同的应用场景,考验我们对连接查询的灵活运用能力。

在实操过程中,我逐渐掌握了不同连接方式的区别与适用场景。内连接通过匹配两个表中的共同字段,只返回满足条件的记录,这在查询学生选课情况、成绩大于80分的学生信息等题目中发挥了重要作用。例如,查询全体学生选课情况时,通过将学生表与选课表进行内连接,精准关联学号字段,成功获取了学号、姓名、课程号和成绩等所需信息。而左连接则不同,它会返回左表中的所有记录,即使右表中没有匹配的记录也会显示,这在查询所有学生的选课信息、选课门数时尤为关键,确保了即使没有选课的学生也能被统计到,避免了数据遗漏。

本次实验中,最具挑战性的是自身连接和集合操作的应用。查询至少选修两门课程的学生学号时,起初我未能理解自身连接的思路,尝试多次后才明白,通过将选课表与自身关联,结合分组统计和筛选条件,才能准确筛选出符合要求的学生。而利用集合操作查询没有选修过课程的学生学号时,通过EXCEPT关键字排除掉有选课记录的学生,简洁高效地得到了结果,这让我意识到集合操作在数据筛选中的便捷性。

实验过程中,我也遇到了一些问题。比如在多表连接查询时,偶尔会出现字段名冲突的情况,后来通过指定表的别名(如S、SC、C),明确每个字段所属的表,成功解决了这一问题。此外,在使用GROUP BY分组统计时,也曾因忘记添加HAVING子句而无法筛选出符合条件的结果,经过反复检查和修改,逐渐掌握了分组查询的语法规范。这些问题让我明白,SQL查询虽然语法看似简单,但细节至关重要,稍有疏忽就会导致查询结果错误,必须严谨细致、认真对待每一个步骤。

通过本次实验,我不仅熟练掌握了连接查询的多种方法,更深刻认识到理论与实践相结合的重要性。课堂上学习的连接查询原理,只有通过实际操作才能真正理解和掌握,才能灵活运用到实际问题中。同时,我也意识到数据库查询在实际应用中的广泛用途,无论是学生信息管理、成绩统计,还是各类数据的筛选与分析,都离不开高效的查询操作。

此次实验也让我看到了自身的不足,比如对复杂查询的逻辑梳理不够清晰,遇到问题时解决效率有待提高。在今后的学习中,我将加强SQL查询的练习,多思考不同查询方式的优化方法,提高自身的实操能力和问题解决能力。同时,我也会更加注重细节,培养严谨的学习态度,为后续学习更复杂的数据库知识打下坚实的基础。

总的来说,本次数据查询连接实验让我收获良多,不仅提升了实操技能,更深化了对数据库原理的理解。在今后的学习和实践中,我将把本次实验所学运用到实际中,不断提升自己的专业能力,为今后从事相关工作做好准备。

http://www.cnnetsun.cn/news/1439483.html

相关文章:

  • 鸿蒙开发实战:5分钟搞定本地HAR库的创建与日志工具封装
  • OpenAI API调用总返回乱码JSON?手把手教你用Structured Outputs和Python搞定数据清洗与格式化
  • 从0到1复现MCP Sampling崩溃现场:20年SRE用eBPF+Wireshark抓取的7层协议栈异常调用流
  • Phi-3-Mini-128K一文详解:Phi-3系列tokenizer对中文长文本分词优势
  • 5分钟快速上手ollama:从安装到运行第一个深度学习模型(保姆级教程)
  • 深入解析transceiver-QPLL:从基础概念到线速率调优实战
  • fastjson2避坑指南:为什么你的null值字段不显示?
  • Windows11高效绘画工具推荐与安装指南
  • uniapp请求格式对比:x-www-form-urlencoded vs. application/json,哪个更适合你的小程序?
  • 小白友好:Ollama部署Qwen2.5-VL-7B视觉模型,无需复杂配置
  • ASW3221@ACP# 高速 DPDT 断电保护开关 产品规格与应用总结
  • Overleaf+BibTeX效率翻倍:除了Google学术,这些工具和技巧让你5分钟搞定参考文献
  • Mentimeter互动演示全攻略:从零开始打造高效会议与课堂互动
  • 高效抓取网页视频资源:以企业微信直播回放为例的两种实战方法
  • SpringSecurity6实战:如何用双AuthenticationManager搞定员工与客户的分表登录?
  • STM32F103C8T6芯片命名规则详解:48脚、64K FLASH、LQFP封装这些参数都代表什么?
  • FunASR实战:从网络音频识别到并发优化与格式兼容的完整方案
  • 3530. 有向无环图中合法拓扑排序的最大利润
  • RVC模型作品案例集:从网红音到专业配音的华丽转变
  • 工业级声纹识别系统实战指南:基于PyTorch的落地应用
  • 华硕笔记本性能调优终极指南:G-Helper轻量级控制工具完整解析
  • 代码随想录一刷记录Day5——leetcode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
  • Recast细节网格:找回丢失的高度
  • 【Docker】国内镜像源配置全攻略:阿里云加速实战
  • 计算机毕业设计springboot旅游平台 基于SpringBoot的文旅信息服务平台设计与实现 基于SpringBoot的智慧旅行综合服务系统设计与实现
  • 392. 判断子序列
  • 避坑指南:Open3D点云显示卡顿?试试这5个性能优化技巧(Python版)
  • 2026年3月22日技术资讯洞察:数据库优化进入预测时代,网络安全威胁全面升级
  • 能效比的新巅峰:骁龙X Elite与Intel Lunar Lake的正面交锋
  • 婚礼请柬与订婚宴设计素材合集:涵盖中式复古、简约西式及电子海报格式