一、基于OBE模式的实验目的和要求
支持毕业要求指标点:
1-2. 能够将数学、自然科学、工程科学的语言工具用于软件工程问题的表述;
5-1. 能够掌握软件工程领域中主要方法、平台、工具的使用原理和方法,了解其差异和适用领域;
能力要求:
- 掌握SQL语句中运算符和表达式的使用、Select语句的结构及应用
- 能够在数据库管理软件中使用SQL语句进行对数据进行查询和纵。
- 能够在数据库管理软件中使用SQL语句进行对视图进行创建和使用
实验目的和要求
- 掌握使用SQL语句对数据库进行单表查询和连接查询;
- 掌握使用SQL语句对数据库查询和数据操纵;
- 掌握使用SQL语句对视图进行创建和管理的方法;
二、实验仪器和设备
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机;
环境:WINDOWS、MySQL中文版。
三、实验过程
(一)数据库的单表查询和连接查询
根据实验2在学生作业管理数据库Mydb中创建的学生表、课程表和学生作业表,进行以下的查询操作(每一个查询都要给出SQL语句,列出查询结果)。
1.查询各位学生的学号、班级和姓名。
select `id`,`class`,`name` from student;
2.查询课程的全部信息。
select * from course;
3.查询数据库中有哪些专业班级。
select class from student group by class;
4.查询学时数大于60的课程信息。
select * from course where period_num > 60;
5.查询在1986年出生的学生的学号、姓名和出生日期。
select * from student where birthday like '1986%';
6.查询三次作业的成绩都在80分以上的学号、课程号。
select `student_id`, `course_id` from sc where (`work1_score` > 80 and `work2_score` > 80 and `work3_score` > 80);
无作业一大于80分的
7.查询姓张的学生的学号、姓名和专业班级。
select id, name, class from student where name like '张%'
8.查询05级的男生信息。
select * from student where class like '%05'
9.查询没有作业成绩的学号和课程号。
select student_id, course_id from sc where(work1_score is null or work2_score is null or work3_score is null);
10.查询学号为0538的学生的作业1总分。
select student_id, sum(work1_score) as 'sum' from sc where(student_id = '0538') group by student_id;
11.查询选修了K001课程的学生人数。
select course_id, COUNT(student_id) as 'cnt' from sc where course_id = 'K001' group by course_id;
12.查询数据库中共有多少个班级。
select count(distinct class) from student;
13.查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。
select student_id, avg(work1_score) as avg1, avg(work2_score) as avg1, avg(work3_score) as avg1, count(course_id) as cnt
from sc inner join student on student.id = sc.student_id
group by student_id
having count(course_id) >= 3
14.查询于兰兰的选课信息,列出学号、姓名、课程名(使用两种连接查询的方式)。
方式一
select student.id, student.name, course.name
from course inner join sc on course.course_id = sc.course_id
inner join student on sc.student_id = student.id
where student.name = '于兰兰'
方式二
select R1.id, R1.name, R3.name from
(select student.id, student.name from student where(student.name = '于兰兰'))as R1
inner join
(select sc.student_id, sc.course_id from sc)as R2
on R2.student_id = R1.id,
(select course.name, course.course_id from course)as R3
where(R2.course_id = R3.course_id)
|