• SQL中有关数据查询的练习


    本专栏收录了数据库的知识点,而基础DQL系列文章将对每种查询都单独写一篇文章,提供给有需要的小伙伴参考,本专栏地址可以戳下面链接查看

    🎈 数据库知识点总结(持续更新中):【数据库知识点

    🔑 数据库相关练习题(持续更新中):【数据库练习题

    🔥 一个提供给Java学习者的专栏:【拼图小游戏(Java)

    前言

    本文主要是列举了一些有关于数据查询的练习,比较综合,在学习完相关知识点后可以通过这六道题来检验自测一下

    本文中所用到表格

    Student

    S#SNameAGESEX
    001张小红23
    002小芳18
    003赵六24
    004李华23
    005刘晓华28
    006刘某NULLNULL

    Course

    C#CNameTeacher
    C01数据库徐老师
    C02Java编程孟博士
    C05数据结构与算法唐老师

    StudentCourse

    S#C#Score
    001C0191
    001C0287
    001C0385
    002C0188
    002C0279
    002C03NULL
    003C0187
    003C0276
    003C0382
    004C0187
    004C0293
    004C0397
    005C01NULL
    005C0289
    005C0378
    006C0169
    006C02NULL

    第一题

    题目

    统计有学生选修的课程门数

    思路

    • 统计门数:COUNT(···)
    • 所要查询的表格既要包含课程信息,又要包含学生信息:StudentCourse
    • 选秀课程肯定有重复,要去重:DISTINCT(···)

    完整语句

    SELECT COUNT (DISTINCT C#) FROM StudentCourse;
    
    • 1

    执行结果

    在这里插入图片描述

    第二题

    题目

    求选修C02课程的女学生的平均年龄

    思路

    • 需要得到属性值:年龄
    • 题目可以看出是“嵌套查询”
    • 查询女学生的平均年龄是外层查询,选修C02课程是内层查询
    • 外层查询所用表:Student
    • 外层查询函数:AVG(AGE)
    • 外层查询条件:SEX = '女'
    • 内层查询所用表:StudentCourse
    • 内层查询条件:C# = 'C02'
    • 内外层逻辑关系:在符合外层查询条件下满足课程号为C02:S# IN(内层循环)

    完整语句

    SELECT AVG(AGE)FROM Student WHERE SEX = '女' AND S# IN (SELECT S# FROM StudentCourse WHERE C# = 'C02');
    
    • 1

    在这里插入图片描述

    验证结果

    我们将所有符合条件的女学生都查询出来,手动算一下平均值,看是否正确

    SELECT * FROM Student WHERE SEX = '女' AND S# IN (SELECT S# FROM StudentCourse WHERE C# = 'C02');
    
    
    • 1
    • 2

    在这里插入图片描述

    第三题

    题目

    检索学号比赵六大,且年龄比他小的姓名

    思路

    • 需要得到的属性值:姓名
    • 需要检索的表格:Student
    • 需要先得到的结果(内层查询):赵六的学号姓名
    • 内层查询所用表:Student
    • 内层查询条件:SName = '赵六'
    • 查询条件(内外层逻辑):WHERE S# > (内层查询) AND AGE < (内层查询)

    完整语句

    SELECT SName FROM Student WHERE S# > (SELECT S# FROM Student WHERE SName = '赵六')
    AND AGE < (SELECT Age FROM Student WHERE SName = '赵六');
    
    • 1
    • 2

    在这里插入图片描述

    第四题

    题目

    求年龄大于女同学平均年龄的男同学的姓名和年龄

    思路

    • 需要得到属性值:姓名和年龄
    • 先要得到的查询结果(内层查询):女同学平均年龄
    • 内层查询函数:AVG(Age)
    • 内层查询所用表:Student
    • 内层查询条件:Sex = '女'
    • 内外层逻辑:WHERE Sex = '男' AND Age > (内层查询)

    完整语句

    SELECT SName,AGE FROM Student WHERE Sex = '男' AND Age >(SELECT AVG(Age) FROM Student WHERE Sex = '女');
    
    • 1

    验证结果

    为了验证真实性,这里我们也来求一下所有女生的平均年龄

    SELECT AVG(Age) FROM Student WHERE Sex = '女';
    
    • 1

    在这里插入图片描述

    第五题

    题目

    检索姓刘的学生的姓名和年龄

    思路

    • 需要得到的属性值:姓名和年龄
    • 需要查询的表格:Student
    • 模糊查询:LIKE···
    • 由于不知道姓名长度,使用通配符%

    完整语句

    SELECT SName,Age FROM Student WHERE SName LIKE '刘%';
    
    • 1

    在这里插入图片描述

    第六题

    题目

    在StudentCourse表中检索成绩为空值的学生的学号和课程号

    思路

    • 需要得到属性值:学号和课程号
    • 需要查询的表格:StudentCourse
    • 查询条件:··· NOT NULL

    完整语句

    SELECT S#,C# FROM StudentCourse WHERE Score IS NULL;
    
    • 1

    在这里插入图片描述

    验证结果

    我们在表格中自己查询成绩值为NULL的行,如下图所示
    在这里插入图片描述

    结语

    本文题目是博主自己的解题思路,如果有任何问题或者错误欢迎留言评论

  • 相关阅读:
    机器学习笔记之最优化理论与方法(八)无约束优化问题——常用求解方法(中)
    函数调用在嵌入式架构设计中的应用
    【玩玩Vue】使用elementui页面布局和控制页面的滚动
    excel如何查找两张表格共有的名单信息
    在国外当程序员有多高兴
    计算机组成原理 new09 定点数的移位运算
    传输层—TCP原理详解
    Java中关键字final的用法细节详解
    UITableView的style是UITableViewStyleGrouped
    《大话数据结构》学习记录8——查找
  • 原文地址:https://blog.csdn.net/Alita233_/article/details/127434959