有一个[学生课程]数据库,数据库中包括三个表:

1 、创建学生表,以学号为主键。
2 .在学生表中添加入学时间字段。
3 、查询5 号课程学生的成绩,并按降序排序。
4 . 求1 号课程的最高分和平均分。
5 、删除学号05 01 9 的学生卡。

数据库中有如下三个表:学生表(Sno、SName……),选课表(Sno、Cno、Score、……),课程表(Cno、

你的 SQL 已经相当完整了。
2 008 年我刚进公司的时候,写查询花了很长时间。
他们使用三个表对学号和姓名进行 JOIN 和 GROUP BY。
HAVING条件也足够详细。

我记得去年一位实习生问我为什么他的请求进展这么慢。
我看了一下,看到了类似的多表JOIN,但结果是没有添加索引。
如果你想一下,INNER JOIN 会从三个表中检索所有匹配的数据。
如果表特别大,数据量就变得吓人。
索引比使用不当更糟糕。

他们的条件是平均分在7 0分以上,选课数量在2 门以上,按照平均分排序。
这就需要先计算出每个人的平均分以及所修课程的数量,然后再将其过滤掉。
我用Oracle的时候,对于这种复杂查询的优化就是添加索引,然后在执行计划中检查哪些表应该先join,哪些表应该先过滤。

如果你的SQL表不大,运行它应该没有问题。
如果学生表、选课表、课程表包含几十万条数据,最好检查数据库执行计划,看看是否还有优化的空间。
有时,更改 JOIN 顺序或使用子查询过滤来驱动 HAVING 条件时,性能可能会显着不同。

您使用哪个数据库? SQL 服务器?还是MySQL?不同的数据库可能会以不同的方式优化此查询。

有没有大佬会用Java制作一个课程表?

如果你想每天重复课程,就必须添加条件。

选择两门每日必修课程。
改变随机选择必修课程的方式。
java 静态 Vector vectorRequiredCourse() { LinkedHashSet linkedHashSet = new LinkedHashSet(); while (linkedHashSet.size() < requiredCourse> 结果 = new Vector(); 结果.addAll(linkedHashSet); Collections.sort(结果); 结果;
在输出部分,选择两门每日必修课程。
java for (int i1 = 1 ; i1 < 6 xss=clean xss=clean>1 ] + "\t"); 整数 i2 = 0; for (int i3 = 0; i3 < vectorElective xss=clean xss=clean xss=clean>1 ) { System.out.print(RequiredCourse[vectorRequiredCourse.get(i
1 )] + "\t"); System.out.print(RequiredCourse[vectorRequiredCourse.get(i
2 )] + "\t"); } i2 ++; } System.out.println(); vectorRequiredCourse.removeAllElements(); }
每天有两门必修课和一门选修课。