本专栏收录了数据库的知识点,而基础DQL系列文章将对每种查询都单独写一篇文章,提供给有需要的小伙伴参考,本专栏地址可以戳下面链接查看
🔑 数据库相关练习题(持续更新中):【数据库练习题】
🔥 一个提供给Java学习者的专栏:【拼图小游戏(Java)】
本文主要是列举了一些有关于数据查询的练习,比较综合,在学习完相关知识点后可以通过这六道题来检验自测一下
Student
| S# | SName | AGE | SEX |
|---|---|---|---|
| 001 | 张小红 | 23 | 女 |
| 002 | 小芳 | 18 | 女 |
| 003 | 赵六 | 24 | 男 |
| 004 | 李华 | 23 | 男 |
| 005 | 刘晓华 | 28 | 男 |
| 006 | 刘某 | NULL | NULL |
Course
| C# | CName | Teacher |
|---|---|---|
| C01 | 数据库 | 徐老师 |
| C02 | Java编程 | 孟博士 |
| C05 | 数据结构与算法 | 唐老师 |
StudentCourse
| S# | C# | Score |
|---|---|---|
| 001 | C01 | 91 |
| 001 | C02 | 87 |
| 001 | C03 | 85 |
| 002 | C01 | 88 |
| 002 | C02 | 79 |
| 002 | C03 | NULL |
| 003 | C01 | 87 |
| 003 | C02 | 76 |
| 003 | C03 | 82 |
| 004 | C01 | 87 |
| 004 | C02 | 93 |
| 004 | C03 | 97 |
| 005 | C01 | NULL |
| 005 | C02 | 89 |
| 005 | C03 | 78 |
| 006 | C01 | 69 |
| 006 | C02 | NULL |
统计有学生选修的课程门数
COUNT(···)StudentCourseDISTINCT(···)SELECT COUNT (DISTINCT C#) FROM StudentCourse;

求选修C02课程的女学生的平均年龄
StudentAVG(AGE)SEX = '女'StudentCourseC# = 'C02'S# IN(内层循环)SELECT AVG(AGE)FROM Student WHERE SEX = '女' AND S# IN (SELECT S# FROM StudentCourse WHERE C# = 'C02');

我们将所有符合条件的女学生都查询出来,手动算一下平均值,看是否正确
SELECT * FROM Student WHERE SEX = '女' AND S# IN (SELECT S# FROM StudentCourse WHERE C# = 'C02');

检索学号比赵六大,且年龄比他小的姓名
StudentStudentSName = '赵六'WHERE S# > (内层查询) AND AGE < (内层查询)SELECT SName FROM Student WHERE S# > (SELECT S# FROM Student WHERE SName = '赵六')
AND AGE < (SELECT Age FROM Student WHERE SName = '赵六');

求年龄大于女同学平均年龄的男同学的姓名和年龄
AVG(Age)StudentSex = '女'WHERE Sex = '男' AND Age > (内层查询)SELECT SName,AGE FROM Student WHERE Sex = '男' AND Age >(SELECT AVG(Age) FROM Student WHERE Sex = '女');
为了验证真实性,这里我们也来求一下所有女生的平均年龄
SELECT AVG(Age) FROM Student WHERE Sex = '女';

检索姓刘的学生的姓名和年龄
StudentLIKE···%SELECT SName,Age FROM Student WHERE SName LIKE '刘%';

在StudentCourse表中检索成绩为空值的学生的学号和课程号
StudentCourse··· NOT NULLSELECT S#,C# FROM StudentCourse WHERE Score IS NULL;

我们在表格中自己查询成绩值为NULL的行,如下图所示

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