我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL数据库习题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL数据库习题

前言

大家好,分享一些MySQL练习题,都是自己整理的考试例题附有答案,可用作巩固知识点,也可以用来考前复习。

一、创建数据库

1.创建一个叫做Mytest 的数据库,在该库中建立以下5张表,表之间的关系及字段如图所示:

在这里插入图片描述
创建数据库:

create database Mytest;

创建teacher表:

create table teacher(id smallint(4) not null primary key,name varchar(20));

创建class表

create table class(id smallint(6) not null primary key,name varchar(50));

创建course表

create table course(id smallint(3) not null primary key,name varchar(100), teacher_id smallint(6) not null,foreign key(teacher_id) references teacher(id));

创建student表

create table student(id smallint(6) not null primary key,name varchar(20),gender char(2),class_id smallint(6) not null,foreign key(class_id) references class(id));

创建score表

create table score(id int(11),student_id smallint(6) not null,course_id smallint(3) not null,mark tinyint(4),foreign key(student_id) references student(id),foreign key(course_id) references course(id),primary key(student_id,course_id));

2.插入下图数据

在这里插入图片描述
有两种方式插入数据(演示两表):

1.单行插入

例:插入class表数据

insert into class values(1,"软件工程1班");insert into class values(2,"计算机科学技术1班");insert into class values(3,"网络工程1班");

2,。批量插入

例:插入teacher表数据

insert into teacher values(1,"老虎"),(2,"小马"),(3,"大牛");

二、操作数据库

1.查询所有的课程的名称以及对应的任课老师姓名;

select course.name,teacher.namefrom course inner join teacheron course.teacher_id = teacher.id;

2.查询学习课程"数据结构"比课程"java语言"成绩低的学生的学号;

select shuju.student_id from(select score.student_id,course.name,score.mark from score inner join course on score.course_id=course.id where course.name="数据结构") as shujuinner JOIN(select score.student_id,course.name,score.mark from score inner join course on score.course_id=course.id where course.name="java语言") as javaon shuju.student_id=java.student_idwhere shuju .mark<java.mark;

3 查询平均成绩大于65分的同学的id和平均成绩(保留两位小数);

select student_id,round(avg(mark),2) as grade from scoregroup by student_id having grade>65;

4. 查询平均成绩大于65分的同学的姓名和平均成绩(保留两位小数);

select student.name,round(avg(mark),2) as grade from scoreinner joinstudentonscore.student_id=student.idgroup by student_id having grade>65;

5. 查询所有同学的姓名、选课数、总成绩;

select student.name,count(score.course_id) as "选课数",sum(score.mark) as "总成绩" from score inner join student on score.student_id=student.idgroup by student_id;

6. 查询没学过"大牛"老师课的同学的姓名;

select name from student where id not in(select id from score where course_id in(3,3));

7. 查询学过"大牛"老师所教的全部课程的同学的姓名;

select student.name from score inner join student on score.student_id=student.id where score.course_id in(select course.id from course inner join teacheron course.teacher_id=teacher.id where teacher.name="大牛")group by score.student_id;

8. 查询有课程成绩小于60分的同学的姓名;

select name from student where id in(select student_id from score where mark<60 group by student_id);

9. 查询选修了全部课程的学生姓名;

select name from student where id in(select student_id from score group by student_id having count(1)=(select count(1) from course));

10. 查询至少有一门课程与"小草"同学所学课程相同的同学姓名;

select name as"姓名" from student where id in(select student_id from score where course_id in(select course_id from score inner join student on score.student_id=student.id where student.name="小草")group by student_id)and name!="小草";

11. 查询至少有一门课程和"小草"同学所学课程不相同的同学姓名;

select name as "姓名" from student where id in(select student_id from score where course_id in(select course_id from score inner join student on score.student_id!=student.id where student.name="小草")group by student_id)and name!="小草";

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

select course_id as "课程id",max(mark) as "最高分",min(mark) as "最低分" from score group by course_id;

13. 查询只选修了一门课程的学生的学号和姓名;

select student_id as"学生学号",student.name as"学生姓名" from scoreinner join student on score.student_id=student.idgroup by student_id having count(course_id)=1;

14. 查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程id降序排列。

select course.name as"课程名称",avg(mark) as"平均成绩" from scoreinner join course on score.course_id=course.idgroup by course_idorder by avg(mark) asc,course_id desc;

15. 按平均成绩倒序显示所有学生的"数据库原理"、“java语言”、"C语言"三门的课程成绩,按如下形式显示: 学生id、数据库原理、java语言、C语言、课程数、平均分;(高级应用较难)

  1. 先查询单一学生的数据库原理课程分数
select mark as"分数" from score left join course on score.course_id = course.idwhere course.name = "数据库原理" and score.student_id=1;
  1. 将上面查询的结果作为列字段使用,得到最终结果
select student_id as"学生学号",(select mark from score left join course on score.course_id = course.id where course.name = "数据库原理"and score.student_id=sc.student_id) as "数据库原理",(select mark from score left join course on score.course_id = course.id where course.name = "java语言" and score.student_id=sc.student_id) as "java语言",(select mark from score left join course on score.course_id = course.id where course.name = "C语言" and score.student_id=sc.student_id) as "C语言",count(course_id) as "课程数",avg(mark) as "平均分"from score as scgroup by student_id order by avg(mark) desc;

来源地址:https://blog.csdn.net/m0_59420288/article/details/128180217

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL数据库习题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【典型例题】- 50道MySQL数据库SQL语句练习

现在具有两个表,一个是部门表,另一个员工表,它们的表结构如下: 第一步:创建test数据库,命令:create database test; 第二步,建表: emp(员工表) create table emp( empno int(11) pr
【典型例题】- 50道MySQL数据库SQL语句练习
2015-04-22

数据库学习之六:mysql数据类型

六、mysql数据类型1、课程大纲• 数据类型介绍• 数据类型设置• 列属性• 数据类型的字符集用法• 选择适当的数据类型2、数据类型介绍• 四种主要类别:数值类型字符类型时间类型二进制类型• 数据类型的 ABC 要素:Appropriate(适当)Brief
数据库学习之六:mysql数据类型
2016-06-23

【数据库】MySQL习题及答案(教务管理系统_MySQL_5.7)

✨声明不保证习题答案完全正确,仅供参考MySQL:5.7推荐软件:Navicat Premium学习SQL语句需要勤于练习!✨各表字段说明courseCId课程序号,主键PCId先修课DId开课系编号,外键CName课程名称CCredIT学分CHour学时CA
【数据库】MySQL习题及答案(教务管理系统_MySQL_5.7)
2020-01-04

Python练习之操作MySQL数据库

目录一、创建mysql数据表三、向MySQL表中插入数据三、查询MySQL中的数据总结文章介绍内容:操作MySQL数据库:创建MySQL数据表;向表中插入记录;其他数据库操作。面试题:如何创建MySQL数据表?如何向MySQL表中插
2022-06-13

数据库中10道日常练习题

这篇文章给大家分享的是有关数据库中10道日常练习题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、下列四项中,不属于数据库系统的特点的是( )正确答案: C 数据结构化数据由DBMS统一管理和控制数据冗余度大数
2023-06-20

数据库学习

1. 基本的经典查询#基本的查询语句SELECT *FROM data.`dataanalyst` WHERE city =‘上海‘AND (education = ‘本科‘OR workYear = ‘1-3年‘)AND secondType LIKE ‘%

	数据库学习
2019-09-01

Mysql数据库语言学习的路线

对于我们数据库的学习,不管是测试人员还是开发人员以及我们的DBA来说重点都是SQL;但是我们的SQL可以分多少类型,学习重点又是在哪里呢,本文仅仅针对测试人员来展开说明:SQL:structure query language是结构化语言,正常来说学习了Mys
Mysql数据库语言学习的路线
2020-09-30

编程热搜

目录