sql 数据库练习, 学生表,成绩表

本文详细记录了一次SQL数据库的操作过程,包括创建数据库、定义学生、成绩、课程和教师表,将列编码更改为UTF-8,并插入相关数据。接着,演示了如何查询特定课程的总成绩、选课学生人数、各科成绩的最高和最低分,以及课程选修人数。此外,还展示了查询男女学生人数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


链接: link.

创建database;

create database student;

创建table;

create table student(
    学号 VARCHAR(20) NOT NULL PRIMARY KEY,
    姓名 VARCHAR(20) NOT NULL,
    出生日期 NOT NULL,
    性别 datetime 
    );
    
create table score(
    学号 VARCHAR(255) NOT NULL,
    课程号 VARCHAR(255) NOT NULL,
    成绩 FLOAT(3) NOT NULL
    );
alter table score add primary key (学号,课程号);

create table course(
    课程号 VARCHAR(255) NOT NULL PRIMARY KEY,
    课程名称 VARCHAR(255) NOT NULL,
    教师号 VARCHAR(255) NOT NULL
    );

create table teacher(
    教师号 VARCHAR(20) NOT NULL PRIMARY KEY,
    教师姓名 VARCHAR(20)
    );

修改表和列的编码为utf-8, 添加数据

student

修改数据表编码:
alter table score default character set utf8;
show create table score; 查看编码
alter table score change 学号 学号 varchar(20) character set utf8;
alter table score change 课程号 课程号 varchar(20) character set utf8;
alter table score change 成绩 成绩 varchar(20) character set utf8;
show create table score;  查看编码

insert into student(学号,姓名,出生日期,性别) 
values('0001' , '猴子' , '1989-01-01' , '男');

insert into student(学号,姓名,出生日期,性别) 
values('0002' , '猴子' , '1990-12-21' , '女');

insert into student(学号,姓名,出生日期,性别) 
values('0003' , '马云' , '1991-12-21' , '男');

insert into student(学号,姓名,出生日期,性别) 
values('0004' , '王思聪' , '1990-05-20' , '男');

在这里插入图片描述

2)成绩表(score)

alter table score default character set utf8;
show create table score; 查看编码
alter table score change 学号 学号 varchar(20) character set utf8;
alter table score change 课程号 课程号 varchar(20) character set utf8;
alter table score change 成绩 成绩 varchar(20) character set utf8;
show create table score;  查看编码



insert into score(学号,课程号,成绩) 
values('0001' , '0001' , 80);

insert into score(学号,课程号,成绩) 
values('0001' , '0002' , 90);

insert into score(学号,课程号,成绩) 
values('0001' , '0003' , 99);

insert into score(学号,课程号,成绩) 
values('0002' , '0002' , 60);

insert into score(学号,课程号,成绩) 
values('0002' , '0003' , 80);

insert into score(学号,课程号,成绩) 
values('0003' , '0001' , 80);

insert into score(学号,课程号,成绩) 
values('0003' , '0002' , 80);

insert into score(学号,课程号,成绩) 
values('0003' , '0003' , 80);

在这里插入图片描述

course

alter table course default character set utf8;
alter table course change 课程名称 课程名称 varchar(20) character set utf8;
alter table course change 课程号 课程号 varchar(20) character set utf8;
alter table course change 教师号 教师号 varchar(20) character set utf8;
show create table course;  


insert into course(课程号,课程名称,教师号)
values('0001' , '语文' , '0002');

insert into course(课程号,课程名称,教师号)
values('0002' , '数学' , '0001');

insert into course(课程号,课程名称,教师号)
values('0003' , '英语' , '0003');

在这里插入图片描述

teacher

alter table teacher default character set utf8;
alter table teacher change 教师姓名 教师姓名 varchar(20) character set utf8;
alter table teacher change 教师号 教师号 varchar(20) character set utf8;
show create table teacher;  


-- 教师表:添加数据
insert into teacher(教师号,教师姓名) 
values('0001' , '孟扎扎');

insert into teacher(教师号,教师姓名) 
values('0002' , '马化腾');

-- 这里的教师姓名是空值(null)
insert into teacher(教师号,教师姓名) 
values('0003' , null);

-- 这里的教师姓名是空字符串('')
insert into teacher(教师号,教师姓名) 
values('0004' , '');

在这里插入图片描述

查询课程编号为“0002”的总成绩

select sum(成绩) from score where 课程号=‘0002’;
在这里插入图片描述

查询选了课程的学生人数

select count(distinct 学号) as 选课人数 from score;
在这里插入图片描述

查询各科成绩最高和最低的分, 以如下的形式显示:课程号,最高分,最低分

select 课程号, max(成绩) as 最高分, min(成绩) as 最低分 from score group by 课程号;
在这里插入图片描述

查询每门课程被选修的学生数

查询男生、女生人数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值