欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql综合性练习

程序员文章站 2022-11-07 21:54:51
题目描述 设定有一个数据库,里面有4张表: 学生表(student) 课程表(course) 成绩表(score) 教师信息表(teacher) 表结构如下: 表一_学生表(student) 属性名数据类型含 义 sno int 学号(主键) sname varchar 学生姓名 ssex varc ......

题目描述

设定有一个数据库,里面有4张表:

  • 学生表(student)
  • 课程表(course)
  • 成绩表(score)
  • 教师信息表(teacher)

表结构如下:

表一_学生表(student)

属性名 数据类型 含 义
sno int 学号(主键)
sname varchar 学生姓名
ssex varchar 学生性别
sbirthday date 学生出生年月
classid varchar 学生所在班级

 

表二_课程表(course)

 

属性名 数据类型 含 义
cno varchar 课程号(主键)
cname varchar 课程名称
tno int 教师编号(外键)

表三_成绩表(score)

属性名 数据类型 含 义
sno int 学号(外键)
cno varchar 课程号(外键)
sdegree float 成绩

表四_教师表(teacher)

属性名 数据类型 含 义
tno int 编号(主键)
tname varchar 教师姓名
tsex varchar 教师性别
tbirthday date 教师出生年月
professional varchar 职称
department varchar 教师所在部门

二、创建数据库和表

先创建数据库mysql_test,并且设置这个数据库的编码字符集为utf-8。

mysql综合性练习

 

 学生表:

create table student(
    sno  int(10),
    sname varchar(10),
    ssex varchar(10),
    sbirthday date,
    classid varchar(10)
);

alter table student add primary key(sno);

 

 教师表:

create table teacher(
    tno int(10),
    tname varchar(12),
    tsex varchar(10),
    tbirthday date,
    professional varchar(20),
    department varchar(20)
);

alter table teacher add primary key(tno);

 

课程表:

create table course(
    cno varchar(10),
    cname varchar(20),
    tno int(10)
);

alter table course add primary key(cno);
alter table course add constraint fk_course_teacher foreign key(tno) references teacher(tno); 

 

成绩表:

create table score(
    sno int(10),
    cno varchar(10),
    sdegree float(5)
);

alter table score add constraint fk_score_student foreign key(sno) references student(sno);
alter table score add constraint fk_score_course foreign key(cno) references course(cno);

 

三、添加数据

insert into student (sno,sname,ssex,sbirthday,classid) 
values(108,'曾华','男','1996-9-1','95033'),(105,'匡明','男','1995-10-2','95031'),
(107,'王丽','女','1996-1-23','95033'),(101,'李军','男','1996-2-20','95033'),
(109,'王芳','女','1995-2-10','95031'),(103,'陆君','男','1994-6-3','95031');


insert into teacher(tno,tname,tsex,tbirthday,professional,department) 
values(804,'李诚','男','1978-12-2','副教授','计算机系'),
(856,'张旭','男','1979-3-12','讲师','电子工程系'),
(825,'王萍','女','1982-5-5','助教','计算机系'),
(831,'刘冰','女','1984-8-14','助教','电子工程系');


insert into course(cno,cname,tno) 
values('3-105','计算机导论',825),('3-245','操作系统',804),
('6-166','数字电路',856),('9-888','高等数学',831);


insert into score(sno,cno,sdegree) values
(103,'3-245',86),
(105,'3-245',75),
(109,'3-245',68),
(103,'3-105',92),
(105,'3-105',88),
(109,'3-105',76),
(101,'3-105',64),
(107,'3-105',91),
(108,'3-105',78),
(101,'6-166',85),
(107,'6-166',79),
(108,'6-166',81);

学生表:

mysql综合性练习

 

教师表:

mysql综合性练习

 

 课程表:

 mysql综合性练习

 

 成绩表:

mysql综合性练习

四、sql题目

1、查询所有学生的姓名,性别及班级编号

mysql综合性练习

 

 

 2、查询教师所有的部门名称(即不重复的depart列)

mysql综合性练习

3、查询student表的所有记录

mysql综合性练习

 

 4、查询score表中成绩在60到80之间的所有记录

mysql综合性练习

 

 5、查询score表中成绩为85,86或88的记录

mysql综合性练习

 

 6、查询student表中班级编号为"95031"或性别为"女"的同学记录

mysql综合性练习

 

 7、查询student表的所有记录,以班级编号降序排列

mysql综合性练习

 

 8、查询score表的所有记录,先按照cno升序排列,若相同则按照sdegree降序排列

mysql综合性练习

 

 9、查询班级编号为"95031"班级的学生人数

mysql综合性练习

 

 10、查询score表中的最高分的学生学号和课程号

mysql综合性练习

 

 11、查询编号为"3-105"的课程平均分

mysql综合性练习

 

 12、查询score表中至少有5名学生选修的并以3开头的课程的平均分数

mysql综合性练习

 

 13、查询每科成绩均在70到90之间的学生编号

mysql综合性练习

 注意:having 后面只能跟聚合函数,如avg、min、max、sum等聚合函数

 14、查询所有学生的姓名,所选课程编号和成绩

mysql综合性练习

 

 

 15、查询所有学生的学号,所选课程名和成绩

mysql综合性练习

 

 

 16、查询所有学生的姓名,所选课程名和成绩

mysql综合性练习

 

 

 17、查询"95033"班同学所选每个课程的平均分

mysql综合性练习

 

 

 18、假设使用如下命令建立了一个grade表:

create table grade(
low int(3),
upp int(3),
rank varchar(1)
);
insert into grade values(90,100,'a');
insert into grade values(80,89,'b');
insert into grade values(70,79,'c');
insert into grade values(60,69,'d');
insert into grade values(0,59,'e');

– 现查询所有同学的学号,所选课程号和等级(rank列)

mysql综合性练习

 

 19、查询"3-105"课程的成绩高于学号为109同学这科成绩的所有同学记录

mysql综合性练习

 

 20、查询1995年之后出生的所有学生所选学的课程名及成绩

 mysql综合性练习

 

 

 21、查询与学号108同学同年出生的所有学生的学号,姓名和生日

mysql综合性练习

 

 

 22、查询"张旭"教师任课的学生成绩

mysql综合性练习

 

 

 23、查询选修某课程的同学人数多于5人的教师姓名

mysql综合性练习

 

 

 24、查询"95033"班和"95031"班全体学生的记录

mysql综合性练习

 

 

 25、查询存在有85分以上成绩的课程编号

mysql综合性练习

 

 

 26、查询出"计算机系"教师所教课程每一科成绩的平均分

mysql综合性练习

 

 

 27、查询"计算机系"与"电子工程系"不同职称的教师的姓名和职称

mysql综合性练习

 

 

28、查询所有教师和同学的姓名,性别和生日

mysql综合性练习

 

 

 29、查询所有"女"教师和"女"同学的姓名,性别和生日

mysql综合性练习

 

 

 30、查询所有任课教师的姓名和部门

mysql综合性练习

 

 

 31、查询所有未讲课的教师的姓名和部门

mysql综合性练习

 

 

 32、查询student表中不姓"王"的同学记录

mysql综合性练习

 

 

 33、查询student表中每个学生的姓名和年龄

mysql综合性练习

 

 

 34、查询student表中最大和最小的生日值

mysql综合性练习

 

 

 35、查询student表中的全部记录,按照班级编号降序排列,班级编号若相同则按照生日降序排列

mysql综合性练习

 

 

 36、查询所有"男"教师及其所上的课程名称

mysql综合性练习

 

 

 37、查询和"李军"同性别并同班的同学信息

mysql综合性练习

 

 

 38、查询所有选修"计算机导论"课程的"男"同学的成绩表

mysql综合性练习

 

 

 39、查询出同时选择"3-245"和"3-105"的课程的学生信息

mysql综合性练习

 

 

 

40、查询既没有选修"3-245"课程也没有选修"3-105"课程的学生信息

mysql综合性练习