数据库查询——选课系统

目录

 第1关 数据库系统的插入

数据库表设计

头歌实验编程要求

第2关 简单查询

头歌实验编程要求

第3关 进阶查询

头歌实验编程要求

第4关 复杂查询

头歌实验编程要求


 第1关 数据库系统的插入

本关任务:插入选课系统数据库的表数据。

相关知识

数据库表设计

学生要进行选课,我们就需要有相应的学生表(student)、课程表(course)和学生选课表(dbsc)。因此基本表设计为如下:

学生表(student

我们将如下表结构数据对应插入:

Sno[char(7)]Sname[varchar(20)]Ssex[char(2)]Sage[int]Sdept[varchar(30)]
9512101李勇19计算机系
9512102刘晨20计算机系
9512103王敏20计算机系
9521101张立22信息系
9521102吴宾21信息系
9521103张海20信息系
9531101钱小平18数学系
9531102王大力19数学系

课程表(course

Cno[char(10)]Cname[varchar(20)]Ccredit[int]Semster[int]Period[int]
C01计算机文化学3141
C02VB2361
C03计算机网络4714
C04数据库基础6624
C05高等数学8219
C06数据结构5455

学生选课表(dbsc

ScID[int]Sno[char(7)]Cno[char(10)]Grade[int]isTec[varchar(10)]
19512101c0190必修
29512101c0286选修
39512101c0645必修
49512102c0278选修
59512102c0466必修
69521102c0182选修
79521102c0275选修
89521102c0492必修
99521102c0550必修
109521103c0268选修
119521103c0656必修
129531101c0180选修
139531101c0595必修
149531102c0585必修

头歌实验编程要求

代码补充,具体任务如下:

  • 往学生表(student)、课程表(course)和学生选课表(dbsc)中插入相应数据。
USE School;

#请在此添加实现代码
########## Begin ##########
########## 插入学生表(Student)相应数据 ##########
insert into student(Sno,Sname,Ssex,Sage,Sdept) values(9512101,'李勇','男',19,'计算机系'),
        (9512102,'刘晨','男',20, '计算机系'),
        (9512103,'王敏', '女',20,'计算机系'),
        (9521101,'张立','男',22,'信息系'),
        (9521102,'吴宾','女',21,'信息系'),
        (9521103,'张海','男',20,'信息系'),
        (9531101,'钱小平','女',18,'数学系'),
        (9531102,'王大力','男',19,'数学系');
########## 插入课程表(Course)相应数据 ##########
insert into course(Cno,Cname,Ccredit,Semster,Period) values('C01','计算机文化学',3,1,41),
        ('C02','VB',2,3,61),
        ('C03','计算机网络',4,7,14),
        ('C04','数据库基础',6,6,24),
        ('C05','高等数学',8,2,19),
        ('C06','数据结构',5,4,55);
########## 插入学生选课表(DBSC)相应数据 ##########
insert into dbsc(ScID,Sno,Cno,Grade,isTec) values(1,9512101,'c01',90,'必修'),(2,9512101,'c02',86,'选修'),(3,9512101,'c06',45,'必修'),
        (4,9512102,'c02',78,'选修'),(5,9512102,'c04',66,'必修'),
        (6,9521102,'c01',82,'选修'),(7,9521102,'c02',75,'选修'),(8,9521102,'c04',92,'必修'),(9,9521102,'c05',50,'必修'),
        (10,9521103,'c02',68,'选修'),(11,9521103,'c06',56,'必修'),
        (12,9531101,'c01',80,'选修'),(13,9531101,'c05',95,'必修'),
        (14,9531102,'c05',85,'必修');
########## End ##########
########## 查询表数据 ##########
SELECT * FROM student;
SELECT * FROM course;
SELECT * FROM dbsc;

第2关 简单查询

任务描述

本关任务:编写sql语句,输出符合条件的查询结果。

相关知识

学生表(student

我们将如下表结构数据对应插入:

Sno[char(7)]Sname[varchar(20)]Ssex[char(2)]Sage[int]Sdept[varchar(30)]
9512101李勇19计算机系
9512102刘晨20计算机系
9512103王敏20计算机系
9521101张立22信息系
9521102吴宾21信息系
9521103张海20信息系
9531101钱小平18数学系
9531102王大力19数学系

课程表(course

Cno[char(10)]Cname[varchar(20)]Ccredit[int]Semester[int]Period[int]
C01计算机文化学3141
C02VB2361
C03计算机网络4714
C04数据库基础6624
C05高等数学8219
C06数据结构5455

学生选课表(dbsc

其中Sno字段为student表的外键,Cno字段为course表的外键。

ScID[int]Sno[char(7)]Cno[char(10)]Grade[int]isTec[varchar(10)]
19512101c0190必修
29512101c0286选修
39512101c0645必修
49512102c0278选修
59512102c0466必修
69521102c0182选修
79521102c0275选修
89521102c0492必修
99521102c0550必修
109521103c0268选修
119521103c0656必修
129531101c0180选修
139531101c0595必修
149531102c0585必修

头歌实验编程要求

代码补充,具体任务如下:

  1. 查询计算机系全体学生的姓名;

  2. 查询考试成绩不及格的学生的学号;

  3. 查询信息系年龄在20 ~ 23岁之间的学生的姓名以及其所在系和年龄;

  4. 查询选修修了课程C02的学生的学号以及其成绩,查询结果按成绩降序排列;

  5. 统计学生总人数。

#********* Begin *********#
echo "
select Sname, Sdept from student where Sdept = '计算机系';

select Sno from dbsc where Grade < 60;

select Sname, Sdept, Sage from student where Sage >=20 and Sage <=23 and Sdept = '信息系';

select Sno, Grade from dbsc where Cno = 'c02' order by Grade desc;

select count(*) from student;

"
#********* End *********#

第3关 进阶查询

任务描述

本关任务:编写sql语句,输出符合条件的查询结果。

相关知识

学生表(student

我们将如下表结构数据对应插入:

Sno[char(7)]Sname[varchar(20)]Ssex[char(2)]Sage[int]Sdept[varchar(30)]
9512101李勇19计算机系
9512102刘晨20计算机系
9512103王敏20计算机系
9521101张立22信息系
9521102吴宾21信息系
9521103张海20信息系
9531101钱小平18数学系
9531102王大力19数学系

课程表(course

Cno[char(10)]Cname[varchar(20)]Ccredit[int]Semester[int]Period[int]
C01计算机文化学3141
C02VB2361
C03计算机网络4714
C04数据库基础6624
C05高等数学8219
C06数据结构5455

学生选课表(dbsc

其中Sno字段为student表的外键,Cno字段为course表的外键。

ScID[int]Sno[char(7)]Cno[char(10)]Grade[int]isTec[varchar(10)]
19512101c0190必修
29512101c0286选修
39512101c0645必修
49512102c0278选修
59512102c0466必修
69521102c0182选修
79521102c0275选修
89521102c0492必修
99521102c0550必修
109521103c0268选修
119521103c0656必修
129531101c0180选修
139531101c0595必修
149531102c0585必修

头歌实验编程要求

代码补充,具体任务如下:

  1. 查询所有姓‘ 张 ’学生的详细信息;
  2. 查询信息系,数学系和计算机系学生的姓名和性别;
  3. 查询选修课程的人数,列出课程号和人数;
  4. 查询选修了3门课程以上的学生的学号;
  5. 查询计算机系学生的选课情况,要求列出学生的名字,所修课的课程号和成绩。

注意:编写查询语句时,需要查询列表所有信息时,请使用 表名.* (由于评测原因指定这样书写,实际自己使用可以直接*)。

#********* Begin *********#
echo "
select student.* from student where Sname like '张%';

select Sname, Ssex, Sdept from student where Sdept in ('计算机系','信息系','数学系');

select Cno, count(*) from dbsc where isTec= '选修' group by Cno;

select Sno from dbsc group by Sno having count(*) > 3;

select Sname,Cno,Grade from dbsc left join student on student.Sno=dbsc.Sno where student.Sdept='计算机系';

"
#********* End *********#

第4关 复杂查询

任务描述

本关任务:编写sql语句,输出符合条件的查询结果。

相关知识

学生表(student

我们将如下表结构数据对应插入:

Sno[char(7)]Sname[varchar(20)]Ssex[char(2)]Sage[int]Sdept[varchar(30)]
9512101李勇19计算机系
9512102刘晨20计算机系
9512103王敏20计算机系
9521101张立22信息系
9521102吴宾21信息系
9521103张海20信息系
9531101钱小平18数学系
9531102王大力19数学系

课程表(course

Cno[char(10)]Cname[varchar(20)]Ccredit[int]Semester[int]Period[int]
C01计算机文化学3141
C02VB2361
C03计算机网络4714
C04数据库基础6624
C05高等数学8219
C06数据结构5455

学生选课表(dbsc

其中Sno字段为student表的外键,Cno字段为course表的外键。

ScID[int]Sno[char(7)]Cno[char(10)]Grade[int]isTec[varchar(10)]
19512101c0190必修
29512101c0286选修
39512101c0645必修
49512102c0278选修
59512102c0466必修
69521102c0182选修
79521102c0275选修
89521102c0492必修
99521102c0550必修
109521103c0268选修
119521103c0656必修
129531101c0180选修
139531101c0595必修
149531102c0585必修

头歌实验编程要求

代码补充,具体任务如下:

  1. 查询选了选修课程的学生,并列出学生的学号和姓名;
  2. 查询每名学生的选课门数和平均成绩,并列出相应信息;
  3. 查询选课门数等于或大于4门的学生的平均成绩和选课门数;
  4. 查询信息系选修VB课程的学生的成绩,要求列出学生姓名,课程名和成绩;
  5. 编写修改sql语句,将成绩小于60分的加5分。

注意:编写查询语句时,需要查询列表所有信息时,请使用 表名.* (由于评测原因指定这样书写,实际自己使用可以直接*)。

#********* Begin *********#
echo "
select distinct dbsc.Sno, student.Sname from dbsc join student on student.Sno=dbsc.Sno where dbsc.isTec = '选修';

select Sname, count(*), avg(Grade) from dbsc join student on student.Sno=dbsc.Sno  group by dbsc.Sno;

select avg(Grade),count(*) from dbsc join student on student.Sno=dbsc.Sno group by dbsc.Sno having count(*) >= 4;

select student.Sname, dbsc.Cno, dbsc.Grade from student left join dbsc on student.Sno=dbsc.Sno
where student.Sdept='信息系' and dbsc.isTec='选修' and Cno='C02';

update dbsc set Grade=Grade+5 where Grade < 60;

"
#********* End *********#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椅糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值