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

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

  • 第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,一经查实,立即删除!

相关文章

从零开始学习软件测试-第38天笔记

接口测试 什么是接口 接口是两个独立部件共享信息的边界&#xff0c;测试中常说的接口大部分是web接口。web接口是遵循了http或者https协议的URL。 数据的流转过程 由客户端通过接口将数据发送给服务器。服务器收到数据之后&#xff0c;取出想要的数据&#xff0c;拼装成一…

[虚幻引擎插件介绍] 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…

常见关系型数据库SQL增删改查语句

常见关系型数据库SQL增删改查语句&#xff1a; 创建表&#xff08;Create Table&#xff09;&#xff1a; CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),age INT,department VARCHAR(50) ); 插入数据&#xff08;Insert Into&#xff09;&#xff1a; INSERT …

sqlite3 是一个命令行工具,用于与 SQLite 数据库进行交互和管理

通过在终端或命令提示符中键入 sqlite3 命令&#xff0c;可以启动 sqlite3 工具并连接到指定的 SQLite 数据库文件。 连接成功后&#xff0c;你将获得一个交互式的命令行界面&#xff0c;可以在其中执行各种数据库操作。使用 sqlite3 命令时&#xff0c;可以提供以下参数&#…

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

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

【车载开发系列】诊断故障码中的扩展数据

【车载开发系列】诊断故障码中的扩展数据 诊断故障码中的扩展数据 【车载开发系列】诊断故障码中的扩展数据一. 扩展数据概念二. DemDataElementClass对象三. DemInternalDataElement对象四. DemExtendedDataClass五. DemExtendedDataRecordClass1)DemExtendedDataRecordNumbe…

【Cicadaplayer】avpkt 队列(mPacketQueue)的条件等待(wait)

此时,网络包读取,网络包可能有音频、视频、字幕等等。MAX_QUEUE_SIZE 是总共的包数目的上限,保证mPacketQueue 不能太大也不能太小。小于此值,读取线程会等待。std::condition_variable.wait()的用法和设计缺陷带来的坑 大神对条件变量做了深入分析。int avFormatDemuxer::…

go基础09-Go语言的字符串类型

字符串类型是现代编程语言中最常使用的数据类型之一。在Go语言的先祖之一C语言当中&#xff0c;字符串类型并没有被显式定义&#xff0c;而是以字符串字面值常量或以’\0’结尾的字符类型&#xff08;char&#xff09;数组来呈现的&#xff1a; #define GOAUTHERS "Rober…

vue3 defineProps 函数

在 vue2 中我们使用选项中的 props 来接受父组件传递过来的数据&#xff1b;那在 vue3 的 setup 中&#xff0c;我们使用 defineProps 来定义父组件传递过来的数据 1、defineProps 支持的类型有&#xff1a;String、Number、Boolean、Object、Array、Function&#xff0c;除此之…

2023-09-07 C++命名空间的一些陷阱

老林的C语言新课, 想快速入门点此 <C 语言编程核心突破> C命名空间的一些陷阱 前言一、命名空间是什么&#xff1f;(InsCode AI 创作助手)二、命名空间全局污染总结 前言 最近看到个问题, 就是在命名空间中声明一个变量 ( int rand 0 ), 用using namespace将这个命名空…

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

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

常见数据库介绍对比之SQL关系型数据库

1.关系型数据库介绍 关系型数据库是一种基于关系模型的数据库&#xff0c;它使用表格来组织和存储数据。下面是一些常见的关系型数据库&#xff1a; 1.1. MySQL MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于Web应用程序和企业级…

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…

计算机网络常见端口号

端口号标识了一个主机上进行通信的不同的应用程序。比如网站服务器80端口一般都是开启的&#xff0c;等你来连接。 端口划分&#xff1a; &#xff08;1&#xff09;常用端口&#xff0c;公共端口&#xff08;保留给公共服务所使用&#xff09;&#xff0c;端口号为0-1023之间…

三色标记整理

在并发标记过程中&#xff0c;因为标记期间应用线程还在继续跑&#xff0c;多标漏标的情况有可能发生 把Gcroot可达性分析遍历分析对象过程中遇到的对象&#xff0c;按照知否访问过来标记三种颜色 黑色&#xff1a;表示这个对象已经被垃圾收集器访问过&#xff0c;且所有的引用…

小鹏汽车在滴滴上眺望远方

监制 | 何玺 排版 | 叶媛 小鹏汽车越来越有看头了。 前不久&#xff0c;小鹏汽车宣布与滴滴出行达成战略合作&#xff0c;将采用股票增发形式&#xff0c;收购滴滴旗下的智能电动汽车项目。 预计到2024年&#xff0c;小鹏汽车将依托这次收购的技术和资产&#xff0c;向市场推…

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

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

支持向量机

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