数据查询(学生管理系统练习)

前言 studentdb数据库还是用的上篇文章的, 害,一直以为列名要用英文,知道可以用汉字时,就把自设的英文都改成汉字,舒服了。上篇文章链接:https://blog.csdn.net/weixin_43912621/article/details/105517325.
(1)在studentdb数据库中,运行下列SQL语句将输出什么? 【数据查询(学生管理系统练习)】① select count(*) from grade
数据查询(学生管理系统练习)
文章图片

② select substring(姓名,1,2) from student_info
数据查询(学生管理系统练习)
文章图片

③ select sqrt(分数) from grade where 分数>=85
数据查询(学生管理系统练习)
文章图片

④ select year(getdate()),month(getdate()),day(getdate())
数据查询(学生管理系统练习)
文章图片

(2)在studentdb数据库中使用select语句进行基本查询。 ①在student_info表中,查询每个学生的学号、姓名和出生日期信息。
②查询学号为’0002’的学生的姓名和家庭住址。
③找出所有男同学的学号和姓名。

select 学号,姓名,出生日期from student_infoselect 姓名,家庭住址from student_info where 学号=0002select 学号,姓名from student_info where 性别='男'

(3)使用select语句进行条件查询。 ①在grade表中查找分数在70-90范围内的学生的学号和分数。
②在grade表中查询课程编号为0003的学生的平均分。
③在grade表中查询学习各门课程的人数。
④将学生信息按出生日期由大到小顺序排序。
⑤查询所有姓“张”的学生的学号和姓名。
select 学号,分数from grade where 分数between 70 and 90select AVG(分数)as 平均分from grade where 课程编号='0003'select 课程编号,count(*)as 课程人数from grade group by 课程编号select* from student_info order by 出生日期select 学号,姓名from student_info where 姓名like '张%'

(4)对student_info表,按性别顺序列出学生的学号、姓名、性别、出生日期及家庭住址,性别相同的按学号由小到大顺序排列。
select * from student_info order by 性别,学号

(5)使用group by子句列出各个学生的平均成绩。
select 学号,AVG(分数)as 同学平均分from grade group by 学号

(6)使用union运算符将student_info表中姓“张”的学生的学号和姓名与curriculum表的课程编号、课程名称返回在一个表中,且列名为u_编号、u_名称。
select 学号as u_编号,姓名as u_名称from student_info where 姓名like'张%' union select 课程编号,课程名称from curriculum

(7)嵌套查询 ① 在student_info表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。
② 使用in子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。
③列出学号为0001的学生的分数比学号为0002号的学生的最低分数高的课程编号和分数。
④列出学号为0001的学生的分数比学号为0002号的学生的最高成绩还要高的课程编号和分数。
select 姓名,出生日期from student_info where 性别=( select 性别 from student_info where 姓名='刘卫平')select a.学号,姓名,性别,课程编号from student_info a, grade b where a.学号=b.学号and 课程编号in(0002,0005)select 课程编号,分数,学号from grade where 学号='0001' and 分数>any( select 分数from grade where 学号='0002')select 课程编号,分数,学号from grade where 学号='0001' and 分数>all( select 分数from grade where 学号='0002')

(8)连接查询。 ①查询分数在80-90范围内的学生的学号、姓名和分数信息。
②查询学习“C语言程序设计”课程的学生的学号、姓名和分数。
③查询所有男同学的选课情况,要求列出学号、姓名、课程名称和分数。
④查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号和分数。
⑤查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。
⑥ 为grade表添加数据行:学号为0004、课程编号为0006、分数为76。查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。
select s.学号,s.姓名,分数 from student_info s, grade g where s.学号=g.学号and g.分数between 80 and 90select s.学号,s.姓名,课程名称,分数from student_info s inner join grade g on g.学号=s.学号 inner join curriculum c on g.课程编号=c.课程编号 where c.课程名称='C语言程序设计'select s.学号,姓名,课程名称,分数 from student_info s join grade g on s.学号=g.学号 join curriculum c on g.课程编号=c.课程编号 where 性别='男'select s.学号,姓名,课程编号,分数 from student_info s left join( select a.学号,课程编号,分数 from grade a, ( select 学号,MAX(分数)最高分from grade g group by 学号) b where a.学号=b.学号and a.分数=b.最高分)c on s.学号=c.学号select s.学号,s.姓名,sum(分数) from student_info s left join grade g on s.学号=g.学号 left join curriculum c on g.课程编号=c.课程编号 group by s.学号,s.姓名insert into grade values('0004','0006',76,null) select c.课程编号,课程名称, COUNT(*) from grade g right join curriculum c on c.课程编号=g.课程编号 group by c.课程编号,c.课程名称

    推荐阅读