数据库原理实验报告

这篇具有很好参考价值的文章主要介绍了数据库原理实验报告。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这门课是大二学年数据库原理这门必修理论课中需要写报告的部分,要求学会使用sql语句,之前忘发了,今天想起来上传一下。

当时是和室友一起讨论着写完的,因为其中有几个问题实现起来还是比较复杂的,我推荐大家不要闷头自己写,否则万一写错了也不知道。但也不是推崇大家互相抄,我的意思是自己写完之后可以和同学对一下,双方互相改进。

这篇文章发出来的目的就是为了大家写完之后可以找一个标准的进行纠正。

正文:

实验题目 1:

从课程表(course)中查询所有课程信息。

答案:

select *
from course;
实验题目 2:

从课程表中(course)查询课程名。

答案:

select distinct title
from course;
实验题目 3:

从课程段(section)表中查询课程名称,要求消除值相同的那些行。

答案:

select distinct course_id
from section;
实验题目 4:

从学生(student)表中查询所有的信息,要求只显示查询结果的前 6 行数据。

答案:

select *
from student limit 6;
实验题目 5:

查询选了所有计算机学院开设课程的学生的姓名。

答案:

select name
from student natural join
(
select ID
from
(
select distinct ID,course_id
from takes
where course_id in(
select distinct course_id
from course natural join section
where dept_name="计算机"
)
)a
group by ID
having count(a.course_id)=(
select count(course_id)
from
(
select distinct course_id
from course natural join section
where dept_name="计算机"
)b
)
)c
实验题目 6:

查询 2019 年春季开课,但 2018 年不开课的课程的编号。

答案:

select course_id
from
(
select distinct course_id
from section
where semester="Spring" and year="2019"
)as y
where course_id not in(
select distinct course_id
from section
where year="2018"
);
实验题目 7:

假设毕业要求为修够 80 学分,请统计计算机学院内学生距离毕业要求还差多少学分,并按所

差分数的升序排列。

答案:

select ID,need
from
(
select ID,80 - tot_cred as need
from student
where dept_name="计算机"
)a
where need>0
order by need;
实验题目 8:

统计 2019 年春季所开课程段选课人数的最大值。

答案:

select max(ret)
from
(
select count(course_id)as ret
from
(
select course_id,sec_id
from takes
where semester="Spring" and year="2019"
)a
group by course_id,sec_id
)b
实验题目 9:

统计各个学院老师的平均年薪。

答案:

select dept_name,avg(salary)
from instructor
group by dept_name
实验题目 10:

请输出没有选择 2019 年春季开课的课程段的学生的姓名。

答案:

select name
from student
where ID not in (
select distinct ID
from takes
where semester="Spring" and year="2019"
)
实验题目 11:

请输出“张三”指导的学生在 2019 年春季开设课程段中所获得的总学分。(我们默认只要选择某

个 course 的一个 section,就可以获得这个 course 的学分;若选择同一个 course 的多个 section,

也只获得 1 次这个 course 的学分)。

答案:

select ID,sum(credits)
from (
select distinct ID,course_id,semester,year,credits
from takes natural join course
)c
where ID in(
select s_ID as ID
from advisor natural join(
select ID as i_ID
from instructor
where name="张三"
)a
)
group by ID
实验题目 11:

请输出“数据库系统原理”和“离散数学”的共同的先修课程的 ID。

答案:

select prereq_id
from (
select prereq_id
from prereq natural join course
where title="数据库系统原理"
)a
where prereq_id in(
select prereq_id
from prereq natural join course
where title="离散数学"
)
实验题目 12:

请统计 2016 年-2018 年,计算机学院每年开设的课程段的数量。

答案:

select year,count(*)
from(
select distinct year,course_id,sec_id
from section natural join course
where dept_name="计算机"
)a
group by year
having year in("2016","2017","2018")
实验题目 13:

查询课程编号不为“004”、“007”、“013”的课程编号和课程名称。

答案:

select course_id,title
from course
where course_id not in("004","007","013")
实验题目 14:

查询课程名以字母 D 开始,以“e”结尾的课程信息。

答案:

select *
from course
where title like "D%" and title like "%s"
实验题目 15:

查询课程名以“制作”两字作为中间字的课程信息。(要求“制作”不做开头和结尾)

答案:

select *
from course
where title like "%制作%"
实验题目 16:

查询姓名第二个字为“宝”的学生信息。

答案:

select *
from student
where name like "_宝%"
实验题目 17:

查询不姓“刘”的学生信息。

答案:

select *
from student
where ID not in(
select ID
from student
where name like "刘%"
)
实验题目 18:

查询那些在 2018 年有至少两个课程段的课程的 ID。

答案:

select course_id
from (
select course_id,sec_id
from section
where year="2018"
)a
group by course_id
having count(sec_id)>1
实验题目 19:

查询计算机学院学生选了非本学院老师开设的属于本学院的课程的情况,统计这些学生的 ID,

姓名,总学分。

答案:

select distinct ID,name,tot_cred
from (
select distinct ID,name,tot_cred,course_id,sec_id,semester,year
from takes natural join student
where dept_name="计算机"
)b
where (course_id,sec_id,semester,year)
in(
select course_id,sec_id,semester,year
from instructor natural join (
select ID,course_id,sec_id,semester,year
from teaches natural join course
where dept_name="计算机"
)a
where dept_name not in("计算机")
)
实验题目 20:

查询 2019 年春季开设的,选课人数少于 25 并且多于 15 人的课程段信息。

答案:

select *
from section natural join (
select course_id,sec_id,semester,year
from (
select ID,course_id,sec_id,semester,year
from takes
where semester="Spring" and year ="2019"
)a
group by course_id,sec_id
having count(*)>15 and count(*)<25
)b
实验题目 21:

查询 2018 年由非本学院开设的课程段的总数。如果没有,输出结果为 0。

答案:

不好意思老师,我无法理解这道题,按照教材数据库的设计,有一个课程段被开设,那肯定是
由本学院开设的,不可能存在由非本学院开设的课程段,所以结果为 0,但是我无法用 dml
语句描述,以下是我的一个语句,可以看出以我的数据库的设计无法得到结果:
select * from section natural join course where year="2018"
实验题目 22:

查询报名人数大于 25 或者少于 15 人的课程信息,要求查询结果按照报名人数降序排列。

答案:

select *
from course natural join (
select course_id,count(ID) as total_people
from(
select ID,course_id
from takes
)a
group by course_id
having count(ID)<15 or count(ID)>25
)c
order by total_people desc
实验题目 23:

查询与计算机学院同处于一座大楼的其他学院的老师的平均工资。

答案:

select dept_name,avg(salary)
from instructor
where dept_name in (
select dept_name
from department
where building in(
select building
from department
where dept_name="计算机"
) and dept_name<>"计算机"
)
group by dept_name
实验题目 24:

给在“匡亚明”大楼内办公的老师的工资增加到原来工资的 1.5 倍。

答案:

update instructor
set salary=salary*1.5
where dept_name in(
select dept_name
from department
where building="匡亚明大楼"
)
实验题目 25:

统计各个学院的学生的数量。

答案:

select dept_name,count(*)
from student
group by dept_name
order by count(*)
实验题目 26:

统计计算机学院中所获总学分排名前 10 位的学生的信息。

答案:

select *
from student
where dept_name="计算机" order by tot_cred desc
limit 10
实验题目 27:

查询“李四”老师在 2017-2019 年开设课程段的数量。

答案:

select count(*)
from teaches
where ID in (
select ID
from instructor
where name="李四"
) and year in("2017","2018","2019")
实验题目 28:

查询计算机学院老师中比生物学院工资最高的老师工资低,但是比生物学院最低工资高的老师

的信息。

答案:

select *
from instructor
where dept_name="计算机" and salary>(
select min(salary)
from instructor
where dept_name="生物"
) and salary<(
select max(salary)
from instructor
where dept_name="生物"
)
实验题目 29:

请统计 2019 年计算机学院比生物学院多开设了几个课程段。

答案:

select count(*)-(
select count(*)
from course natural join (
select *
from section
where year="2019"
)b
where dept_name="生物"
)
from course natural join (
select *
from section
where year="2019"
)a
where dept_name="计算机"
实验题目 30:

请统计 2019 年春季,没有学生选课的课程段的数量。若没有,请输出 0。

答案:

select count(*)
from section
where semester="Spring" and year="2019" and (course_id,sec_id)
not in (
select distinct course_id,sec_id
from takes
where semester="Spring" and year="2019"
)
实验题目 31:

请输出计算机学院学生的指导老师的姓名,去掉重复信息。

答案:

select name
from instructor
where ID in (
select distinct i_ID
from advisor
where s_ID in(
select ID
from student
where dept_name="计算机"
)
)
实验题目 32:

将低于整个学校的平均预算的各个学院的预算提高到原来的 1.2 倍。

答案:

update department
set budget=budget*1.2
where budget<(select avg(budget) from(select *from department)a)
实验题目 33:

统计“李四”老师指导的学生数量。若没有,请输出 0。

答案:

select count(*)
from advisor
where i_ID in(
select ID
from instructor
where name="李四"
)
实验题目 34:

查询已经选了“数据库原理“这门课的所有直接先修课程的学生的信息

答案:

select *
from student natural join(
select distinct ID
from takes
where course_id in(
select prereq_id
from prereq
where course_id in(
select course_id
from course
where title="数据库原理"
)
)
group by ID
having count(*)=(
select count(*)
from prereq
where course_id in(
select course_id
from course
where title="数据库原理"
)
)
)a
实验题目 35:

查询 2019 年春季选了自己指导教师开设的课程段的学生的姓名、指导老师的姓名和课程段的

ID。

答案:

select s_name,i_name,course_id,sec_id
from (
select name as s_name,ID as s_ID,course_id,sec_id,semester,year
from takes natural join student
where semester="Spring" and year="2019"
)a natural join(
select name as i_name,ID as i_ID,course_id,sec_id,semester,year
from teaches natural join instructor
)b
where (s_ID,i_ID)in(
select *
from advisor
)

附录:

其中表的插入语句,表的内容语句在此不赘述,请大家自行撰写。文章来源地址https://www.toymoban.com/news/detail-487049.html

到了这里,关于数据库原理实验报告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库实验报告一

    实验要求: 创建名为 TESTDB 的数据库。 相关SQL语句如下: 实验要求: 在 TESTDB 数据库中创建教师表( teacher ),表结构如下: 字段名 数据类型(长度) 备注 tno CHAR(4) 工号 tname VARCHAR(12) 姓名 sex CHAR(3) 性别 title VARCHAR(15) 职称 birthday DATE 出生日期 相关SQL语句如下: 实验要求

    2023年04月19日
    浏览(50)
  • 数据库实验报告一-创建数据库和表

    一 ,实验目的 1、了解SQL Server数据库的操作环境; 2、了解SQL Server的基本数据类型、表的结构和空值的概念; 3、掌握在企业管理器中创建数据库和表; 4、熟练掌握使用T-SQL语句创建数据库和表; 5、熟悉主码、外码、Check约束和索引的建立和删除操作 二,实验原理 建立表,

    2023年04月13日
    浏览(47)
  • 《数据库系统概论》实验7报告

    实验题目:通过ODBC方式访问数据库 实验环境:Windows 10、MySQL、SQL Server 实验步骤 一、MySQL数据源配置 1、安装MySQL的ODBC驱动安装包 https://dev.mysql.com/downloads/connector/odbc/,选择32位的8.0.21的msi版本,进行安装 2、添加驱动程序 打开 控制面板 —— 系统和安全 —— 管理工具 ——

    2024年02月07日
    浏览(58)
  • 1.数据库的管理(实验报告)

    目录 一﹑实验目的 二﹑实验平台 三﹑实验内容和步骤 四﹑命令(代码)清单 五﹑命令(代码)运行结果 了解SQL Server数据库的逻辑结构和物理结构的特点; 掌握使用SQL Server管理平台对数据库进行管理的方法; 掌握使用Transact-SQL语句对数据库进行管理的方法。 操作系统:Window

    2024年02月02日
    浏览(40)
  • MySQL数据库 实验报告(一)

    实验报告(一) 1、实验目的 (1)掌握系统数据类型的特点和功能 (2)掌握创建、修改表结构的方法 (3)掌握数据添加的方法 2、实验预习与准备 (1)MYSQL中创建数据库的命令 (2)表结构的创建、修改和删除 (3)MYSQL导入导出表数据的方式 (4)添加数据的SQL命令 3、实

    2024年02月05日
    浏览(58)
  • 一个计算机专业的学生数据结构这门课学到什么程度才能算学的还不错?

    数据结构之所以重要是因为它处于算法中的基础地位,与解决实际问题关系密切;而之所以不重要是因为课本上能学到的所有实现都已经有人造过轮子了,甚至已经作为很多语言的标准API存在了。 换句话来说,在以后的编码生涯中,你很有可能天天用排序却从来没有写过排序

    2024年02月14日
    浏览(44)
  • 数据库实验报告【太原理工大学】

    温馨提示:仅供参考! 1.数据定义 创建、修改、删除基本表 创建索引 创建视图 2.数据操作 插入数据 修改数据 删除数据 3.数据查询操作 单表查询 分组统计 连接查询 嵌套查询 集合查询 视图操作 1.使用 SSMS 的图形界面创建用户并授权 使用 SSMS 的图形界面创建登录名 使用

    2023年04月27日
    浏览(70)
  • MySQL数据库设计作业 ——《网上书店系统》数据库设计实验报告

    普通用户:可以进行最基础的登陆操作,可浏览图书、按类别查询图书、查看 图书的详细信息,还可以注册成为会员。 会员:需要填写详细信息(真实姓名、性别、手机号、地址、邮箱等),可浏览图书、按类别查询图书、查看图书的详细信息,在此基础上,还可以订购图

    2024年02月04日
    浏览(76)
  • Mysql数据库实验报告--实验五 存储过程和触发器

    在这个系列会更新一些最近老师要求写的实验报告~ 大家尽量对着我的文章做一个参考,不要盲目的cv,毕竟这个对于我们以后的工作学习还是十分重要的。 从这个实验开始,就不在cmd命令行里面进行mysql数据库的操作,因为代码长度和代码的复杂性,需使用 MySQL Workbench: 双

    2024年02月09日
    浏览(67)
  • 数据库SQL Server实验报告 之 SQL语言进行简单查询(3/8)

    实验名称          SQL语言进行简单查询 注意:原版word在下载资源里面(免费下载) 实验目的及要求: 掌握各种查询的SQL脚本写法,包括SELECT、FROM、WHERE、GROUP BY、HAVING子句的用法,特别要求比较内连接、外连接的结果 在XSGL数据库中,使用各种查询条件完成指定的查询

    2024年02月02日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包