数据库原理
实验课实验报告
学
专
姓
院:
业:
名:
教 学 号:
软件学院
软件工程
王 某 某
2018 年 6 月 11 日
吉林大学
实验题目
软件学院
数据库原理
根据教材中的“教学管理系统”的数据库,创建表,索引和约束,输入数据并完成以下查询。
说明:
1. 可以根据题目要求,对书上的表结构略作调整
2. 每个表输入不少于十条数据(注意保证数据的关联性)
3. 最后的报告将所创建的表以及数据的插入、查询等语句列出来,并将查询结果截图
4. MySQL 和 SQL Server 两种数据库,任选一种,优先选用 MySQL,若有些机器上已经安装过 MySQL,可以
卸载重装,若安装仍旧出现问题,可以选用 SQL Server
要求:
1. 每个人独立完成;
2. 报告只交电子版即可,文件名为“教学号+姓名”
3. 提交的报告,拷贝到老师指定机器的指定文件夹中,即可
1.从课程表中查询所有课程信息
2.从课程表中查询课程类别的信息。
3.从课程表中查询课程类别,要求消除值相同的那些行。
4.从学生表中查询所有的信息,要求只显示查询结果的前 6 行数据。
5.查询课程表中课程编号、课程名称、 教师、上课时间、限制选课人数和报名人数。
6.在课程表中查询课程类别为“信息技术”,并且学分为“2”的课程。
7.查询课程表的课程信息、报名人数与限选人数之比。
8.查询课程表中最小的报名人数、最大的报名人数以及平均报名人数。
9.查询课程信息、报名人数与限选人数之比。要求查询结果按照报名人数升降排序。
10.查询课程表的教师名、课程编号、课程名,要求查询结果按照教师名降序排序,教师名相同时,则按照课
程编号升序排序。
11.查询课程编号为“004”、“007”、“013”的课程信息。
12.查询课程编号不为“004”、“007”、“013”的课程编号和课程名称。
13.查询课程名以字母 D 开始的课程信息。
14.查询课程名以“制作”两字结尾的课程信息。
15.查询姓名第二个字为“宝”的学生信息。
16.查询不姓“刘”的学生信息。
17.查询课程表中教师姓名未定的课程信息。
18.查询报名人数少于 15 人的课程信息。
19.查询报名人数少于 25 并且多于 15 人的课程信息。
20.查询报名人数少于 25 并且等于 15 人的课程信息,要求查询结果按照报名人数降序排列。
21.查询报名人数少于 25 并且少于 15 人的课程信息,要求查询结果按照报名人数降序排列。
22.查询课程表中“信息技术”类课程信息,并计算平均报名人数。
23.按类别显示课程信息,并计算各类课程的平均报名人数。
24.按课程类别分组统计各类课程的平均报名人数。
25.查询“信息技术”类课程的平均报名人数。
26.查询平均报名人数大于 25 人的课程类别和每类平均报名人数。
27.查询报名人数大于平均报名人数的课程信息。
28.从班级表中查询班级名,从系部表中查询系部名称,实用 UNION 运算符合并两个查询结果。
2
软件学院
吉林大学
数据库原理
29.从班级表中查询班级名,从系部表中查询系部名称,实用 UNION 运算符合并两个查询结果,要求按降序排
序。
30.查询班级信息,要求显示班级编号、班级名称、班级所在的系部编号、系部名称。
31.查询学生信息,显示信息包括学生基本信息和班级名称。
32.查询学生选课信息,要求显示姓名、课程名称、志愿号,按姓名和志愿号排序。
33.查询学生报名“计算机应用工程系”开设的选修课程情况,显示信息包括学生姓名、课程名称和授课教室。
34.查询每个班级可以选修的、不是自己所在系部开设的选修课程的信息,显示信息包括班级号码和课程名称
实验分析
综合分析 34 个数据库操作的要求,设计主体是一个大学教学管理数据库。教材上有一些大学数
据库的相关例子,可以用来参考,同时根据此次实验的题目具体要求进行调整,力求精简实用。
数据库结构设计:考虑到后期数据不易修改,需要设计一个合理的数据库,依据需求,看看是否
能完成所有的需求,再回去完善数据库设计,直到数据库可以处理所有的需求后,再进行数据的插入
操作。
信息插入:题干说每个表输入不少于 10 条数据,考虑到各个表之间的依赖性,应该选取有代表
性的几条数据插入,控制到数据量很重要。
查询操作:根据 34 个题目的具体要求对之前构建的数据库进行查询等操作。
大学教学管理数据库模式表设计
下面根据一个合理的建表顺序,依次介绍各个表的内容。
student(学生):学生的基本信息,包括 ID(学生编号),name(学生姓名),tot_cred(所得
学分),class_id(所在班级编号),dept_name(系名)。
class_room(教室): course_id(课程编号),building(所在教学楼),room(教室编号),capacity
(教室容量)。
3
吉林大学
软件学院
数据库原理
department(系部):dept_id(系部编号),dept_name(系部名称),building(系部所在办公楼)
instructor(教师):ID(教师编号),name(姓名),dept_name(所属系),salary(薪水)
class(班级):class_id(班级编号),class_name(班级名称),dept_name(所属系)
course(课程):course_id(课程编号),title(课程名称),dept_name(课程所属系)
credits(学分),instructor(授课老师),teach_time(上课时间),limit_num(限制报名人数)
will_num(报名人数)
stu_course(学生课程对应表):stu_id(学生编号),cou_id(课程编号),will_num(学生志愿号)
创建表代码
学生
create table student(
ID varchar(10) not null,
name varchar(20) not null,
tot_cre int not null,
class_id varchar(20) ,
dept_name varchar(20),
primary key (ID),
foreign key class references class(class_id),
foreign key dept_name references department(dept_name)
);
系部
create table department(
dept_id varchar(20) not null,
dept_name varchar(20) not null,
building varchar(20),
primary key (dept_id,dept_name),
);
4
吉林大学
教师
create table instructor(
软件学院
数据库原理
ID varchar(10)
name varchar(20)
salary int,
dept_name varchar(20),
primary key (ID),
foreign key (dept_name) references department(dept_name)
);
班级
create table class (
class_id varchar(20) not null,
class_name varchar(20) not null,
dept_name varchar(20) not null,
primary key (class_id),
foreign key (dept_name) references department(dept_name)
);
授课地点
create table class_room(
building varchar(20),
room varchar (20).
course_id varchar(20)
);
课程
create table course(
course_id varchar(20) not null,
title varchar(20),
dept_name varchar(20),
kind varchar(20) not null,
credit int,
instructor varchar(20),
teach_time varchar(20),
primary key (course_id),
foreign key (instructor) references instructor(ID),
foreign key(dept_name) references department(dept_name),
);
5
吉林大学
学生课程对应
create table stu_course(
软件学院
数据库原理
stu_id varchar(10) not null,
cou_id varchar(20) not null,
will_num varchar(20),
foreign key (stu_id) references teacher(ID),
foreign key (cou_id) references course(course_id)
);
插入数据代码(部分)
教室(13 条数据)
insert into class_room values(‘001’'经信教学楼', 'A102',50);
insert into class_room values(‘002’'经信教学楼', 'A203',50);
insert into class_room values(‘003’'经信教学楼', 'C404',50);
insert into class_room values(‘004’'经信教学楼', 'C406',60);
insert into class_room values('005’’经信教学楼', 'F1',150);
系部(10 条数据)
insert into department values('医学系',‘新民一教’,'5116');
insert into department values( '数学系',‘数学楼’,5216');
insert into department values( '文学系',‘逸夫楼’,'5316');
insert into department values( '材料系',‘南岭实验室’,’5416’);
6
吉林大学
insert into department values( '物理系',‘物理楼’,’5516’);
软件学院
数据库原理
教师(10 条数据)
insert into instructor values('1201', '赵亮,‘计算机应用工程系’);
insert into instructor values('1202', '钱亮',‘计算机应用工程系’);
insert into instructor values('1203', '孙亮',‘计算机应用工程系’);
insert into instructor values('1204, '李亮',‘计算机应用工程系’);
insert into instructor values('1205', '周亮',‘文学系’);
学生(34 条数据)
insert into department values('55160101',
insert into department values('55160102',
insert into department values('55160113',
insert into department values('55160134',
‘张霖,‘计算机应用工程系’,’33’,’’001);
‘宿雅婷,‘计算机应用工程系’,’33’,’’001);
‘杨兆铭,‘数学系系’,’33’,004);
‘张文睿,‘艺术系’,’33’,’’005);
7
吉林大学
软件学院
数据库原理
班级(14 条数据)
insert into class values(‘001’'5916', '计算一班');
insert into class values(‘002’'5916', '计算呢二班');
insert into class values(‘003’'5316', '文学班');
insert into class values(‘004’'5216', '数学班');
insert into class values('005’’5716', '艺术班');
8