Oracle数据库班级管理系统SQL语句及Java程序示例
Oracle数据库班级管理系统SQL语句及Java程序示例
本文将提供一个简单的Oracle数据库班级管理系统的示例,包括创建表结构、SQL语句查询、更新、删除操作以及Java程序连接数据库并查询学生信息。
1. 创建表结构
create table classes(
cid number primary key, --班级ID
cname varchar2(11), --班级名称
copendate date -- 开班日期
);
create table subjects(
subid number primary key, --学科ID
subname varchar2(20), --学科名称
subdesc varchar2(20) --学科描述
);
create table students(
sid number primary key, --学生ID
sname varchar2(20), --学生名称
ssex varchar2(2), --学生性别
sdate date, --出生日期
cid number --班级ID
);
create table scores(
subid number, --学科ID
sid number, --学生ID
score number --学生成绩
);
2. SQL语句示例
2.1 查询每个班级年龄最大、最小的学生信息
-- 查询每个班级年龄最大、最小的学生信息
-- 使用子查询分别查找每个班级年龄最大和最小的学生信息
SELECT
c.cname,
MAX(s.sname) AS 最大学生姓名,
MIN(s.sname) AS 最小学生姓名
FROM
classes c
JOIN
students s ON c.cid = s.cid
GROUP BY
c.cname;
2.2 查询每个科目、不同班级的学生的平均成绩及每个科目的平均成绩
-- 查询每个科目、不同班级的学生的平均成绩及每个科目的平均成绩
SELECT
s.subname,
c.cname,
AVG(sc.score) AS 班级平均成绩,
(SELECT AVG(score) FROM scores WHERE subid = s.subid) AS 科目平均成绩
FROM
subjects s
JOIN
scores sc ON s.subid = sc.subid
JOIN
students st ON sc.sid = st.sid
JOIN
classes c ON st.cid = c.cid
GROUP BY
s.subname, c.cname
ORDER BY
s.subname, c.cname;
2.3 删除年龄小于15岁的学生信息
-- 删除年龄小于15岁的学生信息
DELETE FROM students WHERE sdate > ADD_MONTHS(SYSDATE, -180);
2.4 查询班级人数最多的班级信息及其人数
-- 查询班级人数最多的班级信息及其人数,如果有多个班级人数相同,则显示先开班的班级信息
SELECT
c.cname,
COUNT(s.sid) AS 人数
FROM
classes c
JOIN
students s ON c.cid = s.cid
GROUP BY
c.cname
HAVING
COUNT(s.sid) = (SELECT MAX(COUNT(sid)) FROM students GROUP BY cid)
ORDER BY
c.copendate DESC
FETCH FIRST 1 ROW ONLY;
2.5 查询考试成绩比该科目平均成绩高的所有学生基本信息
-- 查询考试成绩比该科目平均成绩高的所有学生基本信息
SELECT
st.sname,
st.ssex,
st.sdate,
c.cname,
s.subname,
sc.score
FROM
students st
JOIN
classes c ON st.cid = c.cid
JOIN
scores sc ON st.sid = sc.sid
JOIN
subjects s ON sc.subid = s.subid
WHERE
sc.score > (SELECT AVG(score) FROM scores WHERE subid = sc.subid);
2.6 使用in子句查询没有参与考试学生的基本信息
-- 使用in子句查询没有参与考试学生的基本信息
SELECT * FROM students WHERE sid NOT IN (SELECT sid FROM scores);
3. Java程序连接数据库并查询所有学生信息
import java.sql.*;
public class StudentQuery {
public static void main(String[] args) {
try (Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "user", "password");
Statement stmt = conn.createStatement()) {
String sql = "SELECT * FROM students";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int sid = rs.getInt("sid");
String sname = rs.getString("sname");
String ssex = rs.getString("ssex");
Date sdate = rs.getDate("sdate");
int cid = rs.getInt("cid");
System.out.println("学生ID: " + sid + ", 学生姓名: " + sname + ", 性别: " + ssex + ", 出生日期: " + sdate + ", 班级ID: " + cid);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
注意:
- 请将代码中的数据库连接信息("jdbc:oracle:thin:@localhost:1521:orcl", "user", "password")替换成你的实际数据库连接信息。
- 以上示例仅供参考,你可以根据自己的需要进行修改和扩展。
总结
本文通过创建表结构、编写SQL语句和Java程序,展示了一个简单的Oracle数据库班级管理系统的示例。希望能够帮助你更好地理解Oracle数据库的基本操作和应用。
原文地址: https://www.cveoy.top/t/topic/qAfq 著作权归作者所有。请勿转载和采集!