RDBMS的查询方法实践 | 青训营

137 阅读2分钟

数据库原理实验报告

一、 背景

根据课程与巩固所学知识的要求,以所给练习题为例,进行关系型数据库的操作实验,并对结果进行记录。

二、实验要求

根据课程资料区中要求,实现每个小问对应的查询语句,并给出语句及所得结果,对于复杂或意料外结果进行分析。

实验设计

1. 软硬件基础

我们以运行在Windows10系统上的MySql8.0.34为例。设备使用11代i5处理器,4GB内存及50GB硬盘存储。足够安装、使用数据库软件并实现实验要求。

2. 数据库设计

在实验要求中存在学生表、课程表、成绩表,同时又存在教师表,但在后面的实验过程中发现课程表中也包含执教教师的信息,即教师信息在两个表中进行了冗余存储。为了避免空间的浪费,单独设计一个教授表存储教师与课程的关系,顺便也为以后的拓展保留空间。当然这样也对接下来的实验语句带来了一定的变化,使得实验过程相对复杂了一些。

我们用到了学生实体下的姓名、学号、性别;课程实体下的课程名、课程编号;教师实体下的姓名、工号。工资等属性。同时学生和课程间存在“选修”的1对n关系;课程和教师间存在“教授”的1对n关系。故设计如下数据库,并写入数据:

图片.png  

按图示建立数据库,有5个表,分别是:

CREATE TABLE students(
Sno varchar(12),
Sname varchar(12),
Ssex char(2),
Semail varchar(32),
Scredit numeric(3,2),
PRIMARY KEY(Sno)
);

图片.png

CREATE TABLE courses(
Cno varchar(12),
Cname varchar(32),
Ccredit numeric(3,2),
Tno varchar(12),
PRIMARY KEY(Cno),
FOREIGN KEY(Tno)
);

图片.png

CREATE TABLE teachers(
Tno varchar(12),
Tname varchar(12),
Tsalary numeric(9,2),
PRIMARY KEY(Tno)
);

图片.png

CREATE TABLE reports(
Sno varchar(12),
Cno varchar(12),
PRIMARY KEY(Sno, Cno),
score int,
FOREIGN KEY(Sno) REFERENCES students(Sno),
FOREIGN KEY(Cno) REFERENCES courses(Cno)
);

图片.png

CREATE TABLE teachings(
Tno varchar(12),
Cno varchar(12),
PRIMARY KEY(Tno)
);

图片.png  

四、实验结果

按照实验要求执行对应语句,得到如下结果(课程题目较多,有删减):

图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

注意到没有名称含“算法”的课程,添加一个后:

图片.png

图片.png

图片.png

图片.png

图片.png

图片.png

数据中不包含S26,故用S2代替

图片.png

图片.png

多少有点长了。

五、总结

通过实验,我巩固了所学。通过自行设计数据库并使用的方式,更加深刻的理解了数据库的设计方法、使用技巧。

可以发现,其实SQL语句虽然贴近自然语言,但还是比较繁杂。以编程语言提供的库进行数据库的使用是更加便捷的选择。