mysql阶段测试

一.简答:(5 * 6 = 30)
1.SQL语句分类:

DQL:数据查询语言
DML:数据操作语言
DDL:数据定义语言
DCL:数据控制语言
TPL:事物处理语言
CCL:指针控制语言

2.MYSQL有哪些数据类型:

Int
Char
Varchar
Float
Data
datatime

3.什么是事务:

事物是由一组DML语句执行,这组DML语句要么全部执行,要么全部放弃执行

4.事务有哪几个特性,并简要概括:

原子性、一致性、持续性、隔离性

5.简要阐述使用索引的目的及索引的特点:

目的:提高查询速度

特点:占用磁盘空间,提高查询速度

6.索引的分类:

普通索引
唯一索引
主键索引(主键索引都是唯一索引)

二.大题:(5*14=70)
根据如下四张表回答以下问题:
表一:student(学生表),其中,s_id:学生ID,s_name:学生姓名,s_birth:生日,s_sex:学生性别
在这里插入图片描述

表中数据如下:
在这里插入图片描述

表二:course(课程表),其中,c_id:课程ID,c_name:课程名称,t_id:教师ID
在这里插入图片描述

表中数据如下:
在这里插入图片描述

表三:teacher(教师表),其中,t_id:教师ID,t_name:教师名字
在这里插入图片描述

表中数据如下:
在这里插入图片描述

表四:score(成绩表),其中,s_id:学生ID,c_id:课程ID,s_score:学生成绩
在这里插入图片描述

表中数据如下:
在这里插入图片描述

问题1. 查询姓‘李’老师的数量

select COUNT(t_name) from teacher where t_name like “李%”;

在这里插入图片描述

问题2. 查询每门课程被选修的学生数,要求显示课程ID及其学生数量

select c.c_id,count(*) from course c LEFT JOIN score s ON c.c_id=s.c_id GROUP BY c_id;
在这里插入图片描述

问题3. 查询男生、女生人数,要求显示性别及其人数

select s_sex,COUNT(S_sex) from student GROUP BY s_sex;
在这里插入图片描述

问题4. 查询名字中含有‘风’字的学生所有信息

select * from student where s_name like “%风%”;
在这里插入图片描述

问题5. 查询1990年出生的所有学生信息
select * from student where s_birth like “1990%”;
在这里插入图片描述

问题6. 查询至少选修两门课程的学生学号及学生选修的课程数量

select s1.s_id,COUNT(s2.c_id) from student s1 left join score s2 on s1.s_id = s2.s_id GROUP BY s1.s_id having count(s2.c_id)>1;
在这里插入图片描述

问题7. 查询每个学生不及格的课程,要求显示学生ID,课程ID,课程名字及分数

select s1.s_id,s2.c_id,c.c_name,s2.s_score from student s1 LEFT JOIN score s2 on s1.s_id=s2.s_id left join course c on c.c_id=s2.c_id WHERE s2.s_score<60;

在这里插入图片描述

问题8. 查询课程编号为01且课程成绩在70分以上的学生姓名及成绩
select s1.s_name,s2.s_score from student s1 left join score s2 on s1.s_id=s2.s_id where s2.c_id = 01 and s2.s_score>70;
在这里插入图片描述

问题9. 查询课程名称为‘数学’,且分数低于60分的学生姓名和分数

select s1.s_name,s2.s_score from student s1 LEFT JOIN score s2 on s1.s_id=s2.s_id left join course c on c.c_id=s2.c_id where c.c_name=“数学” and s2.s_score<60;

在这里插入图片描述

问题10. 查询学过编号为‘01’的课程,但是没学过编号为‘02’课程的学生信息

select s_id,s_name
from Student
where s_id in
(select s_id from Score where c_id = ‘01’)
and s_id not in
(select s_id from Score where c_id = ‘02’)

在这里插入图片描述

问题11. 查询平均成绩大于等于60分同学的学生编号,学生姓名和平均成绩

select a.s_id as 学号, s_name as 姓名, avg(b.s_score) as 平均分
from Student a join Score b on a.s_id=b.s_id
group by a.s_id,s_name
having avg(b.s_score) >60;
在这里插入图片描述

问题12. 查询没学过‘张三’老师课的所有学生信息

select *
from Student
where s_id not in
(select s_id from Score join Course on Score.c_id = Course.c_id
join Teacher on Course.t_id = Teacher.t_id
where t_name = ‘张三’);

在这里插入图片描述

问题14. 查询‘01’课程比‘02’课程成绩低的学生信息及分数

select * from student s1 left join score s2 on s1.s_id=s2.s_id LEFT JOIN score s3 on s1.s_id = s3.s_id where s2.c_id=“01” and s3.c_id=“02” and s2.s_score < s3.s_score;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值