[作业答案]MySQL数据库课后作业-‘查询student表的所有记录‘-‘查询student表的第2条到4条记录‘-‘从student表中查询计算机系和英语系的学生的信息‘

前言

       今天老师讲完了MySQL数据库基础,发了一份文档下来,有一些简单的题目布置给我们完成。再次记录一下自己的课后习题,加深印象。


一、题目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、解题步骤

1.创建数据库、表。并为之添加数据。

咱先依次创建数据库数据表:
在这里插入图片描述

然后为之添加数据:
在这里插入图片描述

在这里插入图片描述

2.新建查询

查询student表的所有记录语句:
select * from student;

查询student表的第2条到4条记录语句:

select * from student LIMIT 1,3

查询结果:
在这里插入图片描述
在这里插入图片描述

查询student表中苏哟有学生的学号、姓名、和院系。

select id,Name,department from student;

从student表中查询计算机系和英语系的学生信息

select * from student
where department = '计算机系' OR department ='英语系';

从student表中查询每个院系有多少人;

select department,COUNT(*)from student GROUP BY department;

从score表中查询每个科目的最高分

select c_name, MAX(grade) from score
GROUP BY c_name;

查询李四的考试科目(c_name)和考试成绩(grade)


select * from score as s LEFT JOIN 
student as st ON s.stu_id = st.id where name = '李四';

用连接的方式查询所有学生的信息和考试信息

select * from score as s LEFT JOIN 
student as st ON s.stu_id = st.id;     

计算每个学生的总成绩

select name,SUM(grade) from score
LEFT JOIN student ON score.stu_id = student.id GROUP BY name; 

计算每个考试科目的平均成绩

select c_name,AVG(grade) from score GROUP BY c_name;   

查询计算机成绩低于95的学生信息

select name from score LEFT JOIN student 
ON score.stu_id = student.id GROUP BY c_name HAVING AVG(grade
)<95;

查询同时参加计算机和英语考试的学生的信息

select name from (select * from score where c_name = '计算机') 
as s inner JOIN (select * from score where c_name = '英语') 
as st on s.stu_id = st.stu_id
 INNER JOIN student on s.stu_id =student.id   

将计算机考试成绩按从高到低进行排序

select * from score where c_name='计算机' ORDER BY grade DESC; 

从student表和score表中查询出学生的学号,然后合并查询结果

select * from score as s INNER JOIN student as st ON s.stu_id = st.id;

查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

select * from score as s INNER JOIN
 student as st ON s.stu_id = st.id where name like '张%' OR
name like '王%'

查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

select * from score as s
INNER JOIN student as st ON s.stu_id= st.id where address like '湖南%'

总结

  1. LIMIT(n,m) 用于分页,后面的参数表示从n开始查m个 ,下标从0开始。
  2. In 表示包含那个, in(‘计算机系’,‘英语系’); 只有两个系,限制条件。
  3. 查询每个系院有多少人,首先是department 写前面,count(*)写后面,最后是分组 group by department.
  4. 求最高分也同理,科目名字放前面,MAX(grade)放后面, group by c_name.
  5. 当两张表同时有数据需要查询时,用 left join 左连接, 固定写法 select * from xxx as x left join xxx on xx.id = xxx.id.
  6. 只要查询两张表的信息,就要用到表连接, 其中一张表 用 As 命名 inner join 另外一张表也命名, 通过inner join 于 on 来连接。
  7. 排序问题:写在最后面,比如说 order by XXx(表名) desc 是降序,dsc是升序。

启发于这篇博客,在此基础上完善整理一下。如果本文对你有帮助,请给我一个点赞。

https://blog.csdn.net/x289231673/article/details/78365941

猜你喜欢

转载自blog.csdn.net/qq_43055855/article/details/109451241