写再前面的话
1,本文为Java学习五部分第二部分所有项目回顾(数据库练习系列-对应Java体系第二部分第一阶段内容)这些再前面的博客里有,再写会重复的。但是一想到我设计的第五部分第一阶段本来就要把那些值得记录的项目练习单独整理一遍。所以,理应如此,我会写的更好的。
2,整体项目系列博客(包括整体快递e站系列,数据库练习系列,前端练习系列,Javaweb系列,SSM系列,微服务系列,实战系列,等)
3,完整的Java体系链接(比你想的更多的Java内容),感谢一下开课吧。
需求介绍
整体:

问题:
1.grade 表增加一个阶段,“就业期”
2.将第三阶段的学生的 gradeid 改为就业期的 id
3.查询所有得了 100 分的学号
4.查询所有 1989 年出生的学生(1989-1-1~1990-1-1)
5.查询学生姓名为“金蝶”的全部信息
6.查询 subjectid 为 8 的科目考试未及格(60 分)的学号和成绩
7.查询第 3 阶段课时大于 50 的课程全部信息
8.查询 S1101001 学生的考试信息
9.查询所有第二阶段的女生信息
10.“基于.NET 平台的软件系统分层开发”需要多少课时
11.查询“设计 MySchool 数据库”和“面向对象程序设计”的课时(使用 in)
12 查询所有地址在山东的学生信息
13 查询所有姓凌的单名同学
14.查询 gradeid 为 1 的学生信息,按出生日期升序排序
15.查询 subjectid 为 3 的考试的成绩信息,用降序排序
16.查询 gradeid 为 2 的课程中课时最多的课程信息
17.查询北京的学生有多少个
18.查询有多少个科目学时小于 50
19.查询 gradeid 为 2 的阶段总课时是多少
20.查询 subjectid 为 8 的课程学生平均分
21.查询 gradeid 为 3 的课程中最多的学时和最少的学时
22.查询每个科目有多少人次考试
23.每个阶段课程的平均课时
24.查询每个阶段的男生和女生个数(group by 两列)
答案
– 1、grade 表增加一个阶段, “就业期”
INSERT INTO grade VALUES(4,‘就业期’);
我的答案截图:

– 2.将第三阶段的学生的 gradeid 改为就业期的 id
UPDATE student a SET a.gradeid = ‘4’ WHERE a.gradeid = ‘3’;
SELECT * FROM student;
我的答案截图:

– 3.查询所有得了 100 分的学号
SELECT studentno FROM score WHERE score = 100;
我的答案截图:

– 4.查询所有 1989 年出生的学生(1989-1-1~1990-1-1)
SELECT studentno,studentname FROM student WHERE borndate >= ‘1989-01-01’ AND borndate < ‘1990-01-01’;
我的答案截图:

– 5.查询学生姓名为“金蝶” 的全部信息
SELECT * FROM student WHERE studentname = ‘金蝶’;
我的答案截图:

– 6.查询 subjectid 为 8 的科目考试未及格(60 分) 的学号和成绩
SELECT studentno,score FROM score WHERE id = 8 AND score < 60;
我的答案截图:

– 7.查询第 3 阶段课时大于 50 的课程全部信息
SELECT * FROM SUBJECT WHERE gradeid = 3 AND HOUR > 50;
我的答案截图:

– 8.查询 S1101001 学生的考试信息
SELECT * FROM student WHERE studentno = ‘S1101001’;
我的答案截图:

– 9.查询所有第二阶段的女生信息
SELECT * FROM student WHERE gradeid = 2 AND sex = ‘女’;
我的答案截图:

– 10.“基于.NET 平台的软件系统分层开发” 需要多少课时
SELECT HOUR FROM SUBJECT WHERE subjectname = ‘基于.NET 平台的软件系统分层开发’;
我的答案截图:

– 11.查询“设计 MySchool 数据库” 和“面向对象程序设计” 的课时(使用in)
SELECT HOUR FROM SUBJECT WHERE subjectname IN (‘设计 MySchool 数据库’,‘面向对象程序设计’);
我的答案截图:

– 12 查询所有地址在山东的学生信息
SELECT * FROM student WHERE address = ‘山东’;
我的答案截图:

– 13 查询所有姓凌的单名同学
SELECT * FROM student WHERE studentname LIKE ‘凌_’;
我的答案截图:

– 14.查询 gradeid 为 1 的学生信息, 按出生日期升序排序
SELECT * FROM student WHERE gradeid = 1 ORDER BY borndate ASC;
我的答案截图:

– 15.查询 subjectid 为 3 的考试的成绩信息, 用降序排序
SELECT * FROM score WHERE subjectid = 3 ORDER BY score DESC;
我的答案截图:

– 16.查询 gradeid 为 2 的课程中课时最多的课程信息
SELECT * FROM SUBJECT WHERE gradeid = 2 AND HOUR = (SELECT MAX(HOUR) FROM SUBJECT WHERE gradeid = 2);
我的答案截图:

– 17.查询北京的学生有多少个
SELECT COUNT(*) FROM student WHERE address = ‘北京’;
我的答案截图:

– 18.查询有多少个科目学时小于 50
SELECT COUNT(HOUR) FROM SUBJECT WHERE HOUR < 50;
我的答案截图:

– 19.查询 gradeid 为 2 的阶段总课时是多少
SELECT SUM(HOUR) FROM SUBJECT WHERE gradeid = 2;
我的答案截图:

– 20.查询 subjectid 为 3 的课程学生平均分
SELECT AVG(score) FROM score WHERE subjectid = 3;
我的答案截图:

– 21.查询 gradeid 为 3 的课程中最多的学时和最少的学时
SELECT MAX(HOUR) FROM SUBJECT WHERE gradeid = 3;
SELECT MIN(HOUR) FROM SUBJECT WHERE gradeid = 3;
我的答案截图:

– 22.查询每个科目有多少人次考试
SELECT subjectid,COUNT(studentno) FROM score WHERE examdate IS NOT NULL GROUP BY subjectid ;
我的答案截图:

– 23.每个阶段课程的平均课时
SELECT gradeid, AVG(HOUR) FROM SUBJECT GROUP BY gradeid;
我的答案截图:

– 24.查询每个阶段的男生和女生个数(group by 两列)
SELECT gradeid,sex,COUNT(studentno) FROM student GROUP BY gradeid,SEX;
我的答案截图:

附录:建表语句
实际的建表语句:
/*
Navicat Premium Data Transfer
Source Server : 47.98.158.124
Source Server Type : MySQL
Source Server Version : 50732
Source Host : 47.98.158.124:3306
Source Schema : mysqlwork_primary
Target Server Type : MySQL
Target Server Version : 50732
File Encoding : 65001
Date: 12/05/2021 10:15:25
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for grade
-- ----------------------------
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade` (
`gradeid` int(11) NOT NULL AUTO_INCREMENT,
`gradename` varchar(20) NOT NULL,
PRIMARY KEY (`gradeid`)
) ENGINE=InnoDB AUTO_INCREMENT=<

这篇博客介绍了24个SQL数据库基础练习题目,涉及插入、更新、查询等操作,涵盖了学生、科目、成绩等信息。例如,增加新的阶段、查询特定分数、筛选特定年份出生的学生等。并给出了相应的SQL解答。
最低0.47元/天 解锁文章
2833

被折叠的 条评论
为什么被折叠?



