[学生课程]数据库,学生信息、课程表、成绩表的相关信息查询与管理
数据库设计主要涉及到学生信息、课程表、成绩表的相关信息查询与管理。项目背景介绍:随着科学技术的发展,我们校园的各项管理也日趋完善,本次的数据库设计主要涉及到学生信息、课程表、成绩表的相关信息查询与管理2.任务概述具体关系数据库如下:
有一个[学生课程]数据库,数据库中包括三个表:
学生表由学号、姓名、性别、年龄、所在系五个属性组成,
可记为:学生表(学号,姓名,性别,年龄,所在系) [学号]为关键字。
课程表由课程号、课程名、先修课号、学分四个属性组成,
可记为:课程表(课程号,课程名,先修课号,学分) [课程号]为关键字。
成绩表由学号、课程号、成绩三个属性组成,
可记为: 成绩表(学号,课程号,成绩) (学号、课程号)为关键字。
用MySQL语言编写实现下列功能的sql语句代码:
(1). 建立一个[学生课程]数据库,包含学生表、课程表、成绩表,其中学生表学号属性不能为空,并且其值是唯一的。
create database if not exists 学生课程; use 学生课程; create table 学生表 ( 学号 char(10) not null unique, 姓名 varchar(50), 性别 char(10), 年龄 int, 所在系 varchar(50), primary key (学号) ); create table 课程表 ( 课程号 char(10) not null unique, 课程名 varchar(100), 先修课号 char(10), 学分 int, primary key (课程号) ); create table 成绩表 ( 学号 char(10), 课程号 char(10), 成绩 int, primary key (学号, 课程号), foreign key (学号) references 学生表(学号), foreign key (课程号) references 课程表(课程号) ); -- 插入数据 insert into 学生表 (学号, 姓名, 性别, 年龄, 所在系) values ('001', '张三', '男', 20, '计算机科学系'), ('002', '李四', '女', 21, '数学系'), ('003', '王五', '男', 22, '物理系'); insert into 课程表 (课程号, 课程名, 先修课号, 学分) values ('C001', '数据库', 'C002', 4), ('C002', '数据结构', null, 3), ('C003', '操作系统', 'C001', 4); insert into 成绩表 (学号, 课程号, 成绩) values ('001', 'C001', 80), ('002', 'C002', 90), ('003', 'C003', 75);
(2). 查询全体学生的详细记录。
select * from 学生表;
(3). 查询年龄在20至23岁之间的学生的姓名、系别、和年龄。
select 姓名, 所在系, 年龄 from 学生表 where 年龄 between 20 and 23;
(4). 计算1号课程的学生平均成绩。
select avg(成绩) from 成绩表 where 课程号 = 'C001';
(5). 将计算机科学系全体学生的成绩置零。
update 成绩表 set 成绩 = 0 where 学号 in (select 学号 from 学生表 where 所在系 = '计算机科学系');
(6). 查询出所有成绩在60分以下的学生信息:学号,姓名,性别,年龄,所在系,课程号,成绩。
select 学生表.学号, 学生表.姓名, 学生表.性别, 学生表.年龄, 学生表.所在系, 成绩表.课程号, 成绩表.成绩 from 学生表 join 成绩表 on 学生表.学号 = 成绩表.学号 where 成绩表.成绩 < 60;
(7). 创建一个视图:学生成绩(学号,姓名,性别,年龄,所在系,课程号,成绩)。
create view 学生成绩 as select 学生表.学号, 学生表.姓名, 学生表.性别, 学生表.年龄, 学生表.所在系, 成绩表.课程号, 成绩表.成绩 from 学生表 join 成绩表 on 学生表.学号 = 成绩表.学号;
还没有留言,还不快点抢沙发?