实训三:多表查询 - 大学数据库创建与查询实战

大学数据库创建与查询实战

  • 第1关:数据库表设计
    • 任务描述
    • 相关知识
      • 大学数据库的整体设计
      • 教师信息表(instructor)
      • 开课信息表(section)
    • 编程要求
    • 测试说明
    • 参考代码
  • 第2关:查询(一)
    • 任务描述
    • 相关知识
      • 学生表(student)
      • 选课信息表(takes)
      • 课程表(course)
      • 教师信息表(instructor)
      • 系表(department)
    • 编程要求
    • 测试说明
    • 代码参考

第1关:数据库表设计

任务描述

本关任务:创建大学数据库的教师信息表和开课信息表。

相关知识

大学数据库的整体设计

一个大学里面会有很多教学楼、学生、老师,他们之间的都有着密不可分的关系,因此将大学数据库整体设计如下图所示,总共涉及到八张表:

  1. 学生表(student):包含学生学号 ID,学生姓名 name,学生所在系 dept_name,总学分 tot_cred 属性。

  2. 课程表(course):包含课程号 course_id,课程名称 title,课程所属的系名 dept_name,学分 credits 属性。

  3. 系表(department):包含系名 dept_name,建筑 building,预算 budget 属性。

  4. 教室表(classroom):包含建筑 building,房间号 room_number,容量 capacity 属性。

  5. 教学信息表(teaches):包含教室号 ID,课程号 course_id,课程信息序号 sec_id,学期 semester,年份 year 属性。

  6. 选课信息表(takes):包含学生学号 ID,课程标识 course_id,课程段标识 sec_id,学期 semester,年份 year,成绩 grade 属性。

  7. 教师信息表(instructor)。

  8. 开课信息表(section)。

image

图1 大学数据库模型

教师信息表(instructor)

教师信息表的具体属性及约束如下:

字段名称类型备注约束
IDvarchar(5)教师号主键
namevarchar(20)教师名字非空
dept_namevarchar(20)教师所在的系外键
salarynumeric(8,2)薪资底薪大于 29000

开课信息表(section)

开课信息表的具体属性及约束如下:

字段名称类型备注约束
course_idvarchar(8)课程号外键
sec_idvarchar(8)课程段标识
semestervarchar(6)学期只能插入 FallWinterSpringSummer四个值。
yearnumeric(4,0)年份1701 < year < 2100
buildingvarchar(15)课程所在建筑外键
room_numbervarchar(7)课程所在教室号外键
time_slot_idvarchar(4)时间档序号

section 表的主键由 course_idsec_idsemesteryear 四个属性共同组成。

编程要求

在右侧编辑器中的Begin-End之间补充代码,创建教师信息表和开课信息表(其他六张表系统已为你创建完成),使用 universityDB 数据库,创建的表命名依次为 instructorsection

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

每次点击评测后台都会将数据库环境重置,数据库 universityDB 会自动创建好。

预期输出:

+------------------------+
| Tables_in_universityDB |
+------------------------+
| classroom              |
| course                 |
| department             |
| instructor             |
| section                |
| student                |
| takes                  |
| teaches                |
+------------------------+

开始你的任务吧,祝你成功!

参考代码

#请在此添加创建开课信息表的SQL语句
########## Begin ##########
#请在此添加创建开课信息表的SQL语句
########## Begin ##########
use universityDB;
create table instructor(ID varchar(5) COMMENT'教师号',primary key(ID),name varchar(20) COMMENT'教师名字'NOT NULL,dept_name varchar(20) DEFAULT NULL COMMENT'教师所在的系',salary numeric(8,2) COMMENT'薪资' check(salary>29000),foreign key (dept_name) references department(dept_name)on delete set null
);
create table section(course_id varchar(8)  COMMENT '课程号' ,sec_id varchar(8) COMMENT'课程段标识',semester varchar(6) COMMENT'学期' check(semester in('Fall','Winter','Spring','Summer')),year numeric(4,0)  COMMENT'年份',building varchar(15)  COMMENT '课程所在建筑' ,room_number varchar(7)  COMMENT '课程所在教室号' ,time_slot_id varchar(4) COMMENT'时间档序号',primary key (course_id, sec_id, semester, year),foreign key (course_id) references course(course_id)on delete cascade,foreign key (building, room_number) references classroom(building, room_number)on delete set null
);########## End #################### End ##########

第2关:查询(一)

任务描述

本关任务:编写 sql 语句,输出符合条件的查询结果。

相关知识

为了完成本关任务,下面列出你可能需要使用到的表及数据。

学生表(student)

其中 dept_name 是系表(department)的外键。

IDnamedept_nametot_cred
00128ZhangComp. Sci.102
12345ShankarComp. Sci.32
19991BrandtHistory80
23121ChavezFinance110
44553PeltierPhysics56
45678LevyPhysics46
54321WilliamsComp. Sci.54
55739SanchezMusic38
70557SnowPhysics0
76543BrownComp. Sci.58
76653AoiElec. Eng.60
98765BourikasElec. Eng.98
98988TanakaBiology120

选课信息表(takes)

其中 course_idsec_idsemesteryear 为开课信息表(section)的外键,ID 为学生表(student)的外键。

IDcourse_idsec_idsemesteryeargrade
00128CS-1011Fall2009A
00128CS-3471Fall2009A-
12345CS-1011Fall2009C
12345CS-1902Spring2009A
12345CS-3151Spring2010A
12345CS-3471Fall2009A
19991HIS-3511Spring2010B
23121FIN-2011Spring2010C+
44553PHY-1011Fall2009B-
45678CS-1011Fall2009F
45678CS-1011Spring2010B+
45678CS-3191Spring2010B
54321CS-1011Fall2009A-
54321CS-1902Spring2009B+
55739MU-1991Spring2010A-
76543CS-1011Fall2009A
76543CS-3192Spring2010A
76653EE-1811Spring2009C
98765CS-1011Fall2009C-
98765CS-3151Spring2010B
98988BIO-1011Summer2009A
98988BIO-3011Summer2010null

课程表(course)

course_idtitledept_namecredits
BIO-101Intro. to BiologyBiology4
BIO-301GeneticsBiology4
BIO-399Computational BiologyBiology3
CS-101Intro. to Computer ScienceComp. Sci.4
CS-190Game DesignComp. Sci.4
CS-315RoboticsComp. Sci.3
CS-319Image ProcessingComp. Sci.3
CS-347Database System ConceptsComp. Sci.3
EE-181Intro. to Digital SystemsElec. Eng.3
FIN-201Investment BankingFinance3
HIS-351World HistoryHistory3
MU-199Music Video ProductionMusic3
PHY-101Physical PrinciplesPhysics4

教师信息表(instructor)

其中 dept_name 字段为系表(department)的外键。

IDnamedept_namesalary
10101SrinivasanComp. Sci.68250
12121WuFinance94500
15151MozartMusic42000
22222EinsteinPhysics99750
32343El SaidHistory63000
33456GoldPhysics91350
45565KatzComp. Sci.78750
58583CalifieriHistory65100
76543SinghFinance84000
76766CrickBiology75600
83821BrandtComp. Sci.96600
98345Kim Elec.Eng.84000

系表(department)

dept_namebuildingbudget
BiologyWatson90000
Comp. Sci.Taylor100000
Elec. Eng.Taylor85000
FinancePainter120000
HistoryPainter50000
MusicPackard80000
PhysicsWatson70000

编程要求

在右侧编辑器中的Begin-End之间补充代码,完成下列查询:

  1. 查询修了‘ Biology ’所有课程的学生姓名;

  2. 查询满足工资至少比‘ Biology ’系某一个教师的工资高的所有教师的姓名;

  3. 查询所有教师的姓名,以及他们所在系的名称和系所在建筑的名称;

  4. 查询在包含‘ Watson ’字段的大楼开课的所有系名。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。


开始你的任务吧,祝你成功!

代码参考

#********* Begin *********#
echo "
select distinct name from student,takes,course
where student.ID=takes.ID and takes.course_id=course.course_id
and course.dept_name='Biology';select name from instructor where salary>any
(select salary from instructor where dept_name='Biology');select name,department.dept_name,building from instructor,department
where instructor.dept_name=department.dept_name;select distinct department.dept_name from course,department
where course.dept_name=department.dept_name
and building like '%Watson%';
"
#********* End *********#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[虚幻引擎插件介绍] DTGlobalEvent 蓝图全局事件, Actor, UMG 相互回调,自由回调通知事件函数,支持自定义参数。

本插件可以在虚幻的蓝图 Actor&#xff0c; Obiect&#xff0c;UMG 里面指定绑定和执行消息&#xff0c;可带自定义参数。 参数支持 Bool&#xff0c;Byte&#xff0c;Int&#xff0c;Int64&#xff0c;Float&#xff0c;Name&#xff0c;String&#xff0c;Text&#xff0c;Ve…

Ubuntu 20.04 LTS 安装Kubernetes 1.26

1、环境配置 (1)添加主机名称解析记录 cat > /etc/hosts << EOF 192.168.44.200 master01 master01.bypass.cn 192.168.44.201 node01 node01.bypass.cn 192.168.44.202 node02 node02.bypass.cn EOF(2)禁止K8s使用虚拟内存 swapoff -a sed -ri s(.*swap.*)#\1…

自然语言处理:提取长文本进行文本主要内容(文本意思)概括 (两种方法,但效果都一般)

本文主要针对长文本进行文本提取和中心思想概括&#xff0c;原文档放在了附件里面&#xff1a;<科大讯飞公告> -----------------------------------方法一&#xff1a;jieba分词提取文本&#xff08;句子赋分法&#xff09;------------------------- 1、首先导入相关…

方向介绍:基于深度学习的轨迹预测

方向介绍&#xff1a;基于深度学习的轨迹预测 文章目录 方向介绍&#xff1a;基于深度学习的轨迹预测问题定义典型方法挑战未来展望参考 基于深度学习的轨迹预测是一种利用神经网络模型来预测移动物体的未来位置和运动状态的技术。这种技术在许多领域都有重要的应用&#xff0c…

Nosql数据库服务之redis

Nosql数据库服务之redis 一图详解DB的分支产品 Nosql数据库介绍 是一种非关系型数据库服务&#xff0c;它能解决常规数据库的并发能力&#xff0c;比如传统的数据库的IO与性能的瓶颈&#xff0c;同样它是关系型数据库的一个补充&#xff0c;有着比较好的高效率与高性能。 专…

AlexNet 06

一、发展 1989年&#xff0c;Yann LeCun提出了一种用反向传导进行更新的卷积神经网络&#xff0c;称为LeNet。 1998年&#xff0c;Yann LeCun提出了一种用反向传导进行更新的卷积神经网络&#xff0c;称为LeNet-5 AlexNet&#xff0c;VGG&#xff0c;GoogleNet&#xff0c;R…

运维监控系统PIGOSS BSM 业务监控 大屏展现解析

“业务大屏”是 PIGOSS BSM&#xff08;IT运维监控工具&#xff09;的特色功能之一&#xff0c;旨在提供综合而直观的业务监控视图。该功能主要由三个组成部分构成&#xff1a;业务健康度雷达图、业务状态矩阵和多趋势对比图。 下面将对每个部分进行详细介绍&#xff1a; 业务健…

支持向量机

一、支持向量机 1. 基本概念 1&#xff09;什么是支持向量机 支持向量机&#xff08;Support Vector Machines&#xff09;是一种二分类模型&#xff0c;在机器学习、计算机视觉、数据挖掘中广泛应用&#xff0c;主要用于解决数据分类问题&#xff0c;它的目的是寻找一个超平…

CDN+GitHub搭建图床

前期搭建博客的时候&#xff0c;老是遇到图片无法加载、加载出错等等问题&#xff0c;很是烦恼。于是想搭建一个图床&#xff0c;进行个人博客图片的存储、显示使用。 ​ 利用GitHubjsDelivrPicGo搭建免费图床&#xff0c;CDN图床就是这么朴实无华&#xff0c;是基于免费CDN与免…

敏感信息防泄漏:透明加密与通信内容安全策略深度解析

随着信息技术的迅猛发展&#xff0c;计算机和网络已经成为了我们日常生活中不可或缺的工具&#xff0c;用于办公、通信和协作。尽管这些信息系统提高了工作效率&#xff0c;但也引发了一系列与信息安全相关的问题&#xff0c;例如如何有效地保护存储在这些系统中的关键数据&…

【C++漂流记】函数的高级应用——函数默认参数、占位参数、重载

函数的高级应用&#xff0c;侧重介绍函数的默认参数、函数的占位参数、函数重载定义解释及使用。 文章目录 一、函数的默认参数二、函数的占位参数三、函数重载函数重载的注意事项 一、函数的默认参数 函数默认参数是指在函数声明时为参数提供一个默认值&#xff0c;这样在调…

算法通关村第十三关——溢出问题处理模板

前言 溢出问题是面试当中输出涉及到数字的一个需要特别注意的地方&#xff0c;典型的题目有三个&#xff1a;数字反转&#xff0c;将字符串转成数字和回文数。 1.整数反转 力扣7题&#xff0c;给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。…

数据库误修改后的数据恢复

一不小心将数据库数据修改了&#xff0c;而且回滚无效&#xff0c;于是去尝试各种方法恢复数据 查询到修改时间点之前的数据 恢复数据 恢复数据库被修改数据的流程及代码&#xff0c;这里被修改的表是AUTH_USER,实际应用填写对应表名。 -- 通过时间恢复删除且已提交的数据-- 1…

JDK1.8下载、安装和环境配置使用

JDK1.8下载、安装和配置 下载安装包解压文件配置测试安装 下载安装包 链接地址 https://pan.baidu.com/s/1RF7-ulq0_qAelpXskDxdvA 提取码 d1y0解压文件 jdk1.8.0_181 配置 右击我的电脑&#xff0c;选择属性 2.点击高级系统设置 在系统变量区里点击&#xff1a;新建…

2023年高教社杯数学建模国赛C题详细版思路

C 题 蔬菜类商品的自动定价与补货决策 2023年国赛如期而至&#xff0c;为了方便大家尽快确定选题&#xff0c;这里将对C题进行解题思路说明&#xff0c;以分析C题的主要难点、出题思路以及选择之后可能遇到的难点进行说明&#xff0c;方便大家尽快找到C题的解题思路。 难度排…

【OJ比赛日历】快周末了,不来一场比赛吗? #09.09-09.15 #15场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-09-09&#xff08;周六&#xff09; #5场比赛2023-09-10…

适用于多种场景功能强大的在线海报图片素材设计器源码

源码介绍: 在线海报设计系统素材设计源码是一个漂亮且功能强大的在线海报图片设计器, 仿照稿定设计而成。该系统适用于多种场景,包括海报图片生成、电商分享图、文章长图、 视频/公众号封面等。用户无需下载软件,即可轻松实现创意,迅速完成排版,让设计更简单! 该系统…

JVM学习(五)--方法区

概念&#xff1a; 方法区就是存和类相关的东西&#xff0c;成员方法&#xff0c;方法参数&#xff0c;成员变量&#xff0c;构造方法&#xff0c;类加载器等&#xff0c;逻辑上存在于堆中&#xff0c;但是不同的虚拟机对它的实现不同&#xff0c;oracle的hotsport vm在1.6的时…

U-net网络学习记录

U-net网络 本质上是一个用于图像分割的神经网络 输入是一幅图&#xff0c;输出是目标的分割结果。继续简化就是&#xff0c;一幅图&#xff0c;编码&#xff0c;或者说降采样&#xff0c;然后解码&#xff0c;也就是升采样&#xff0c;然后输出一个分割结果。根据结果和真实分…

基于Simulink的用于电力系统动态分析

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…