mysql查询选修了课程名为“java”的学生学号
时间: 2024-12-02 14:18:01 浏览: 25
在MySQL中,你可以使用`SELECT`语句来获取选修了"java"课程的学生学号。假设有一个名为`students`的表,其中包含`student_id`(学生ID)和`courses_taken`(已选课程列表,可以是一个字符串数组或者关联数组存储)字段,查询语句可能会类似这样:
```sql
SELECT student_id
FROM students
WHERE 'java' IN (SUBSTRING_INDEX(SUBSTRING_INDEX(courses_taken, ',', numbers.n), ',', -1) FOR numbers IN (1, 2, 3, ...) IF courses_taken REGEXP '\\bjava\\b');
```
这个查询使用`SUBSTRING_INDEX`函数分割`courses_taken`中的每个课程名,并检查是否包含"java"。`REGEXP`用于正则表达式匹配,`\bjava\b`确保只匹配完整的"java",而不会因误匹配其他单词中的"a"。
注意,这个查询假设`courses_taken`是以逗号分隔的字符串形式存储的。如果实际数据库结构不同,查询会有所调整。此外,递归查找次数(numbers.n)取决于课程名最大可能出现的位置,如果超过预设值可能需要优化。
相关问题
实验三Java数据库编程(设计型) 一、实验目的: (1) 了解用JDBC实现数据库的连接方式: (2) eclipse 如何添加jar包: (3)利用JDBC实现数据库基本内容的访问。 二、实验内容: 在这个实验中用户会通过两个练习了解如何利用JDBC连接和访问Mysql 中的指 定数据库。 1.查询student表中所有的数据,并在控制台显示出来,-.行显示--个学生的信息。 2.输入一个学号,如果该学号信息存在,则显示出该学号对应的学生的基本信息, 包括学号,姓名,性别,年龄等,以及该学生所选修的课程名称,成绩;若没有该学号 对应的信息存在,则输出简单的提示信息。
三、实验步骤:
1. 下载并安装MySQL数据库,创建一个名为“test”的数据库,创建一个名为“student”的表。
2. 在eclipse中新建一个Java项目,添加MySQL的驱动jar包到项目中。
3. 创建一个名为“JDBCExample”的类,编写代码实现连接到MySQL数据库、查询student表中的所有数据、按行显示学生信息的功能。
代码如下:
```java
import java.sql.*;
public class JDBCExample {
public static void main(String[] args) throws SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 加载MySQL的JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 连接到MySQL数据库
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
// 执行查询语句
stmt = conn.createStatement();
String sql = "SELECT * FROM student";
rs = stmt.executeQuery(sql);
// 输出查询结果
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String gender = rs.getString("gender");
int age = rs.getInt("age");
System.out.println("id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
}
```
4. 运行程序,控制台会输出student表中所有的数据。
5. 修改JDBCExample类的代码,实现输入一个学号,查询该学号对应的学生的基本信息以及所选修的课程名称、成绩的功能。
代码如下:
```java
import java.sql.*;
public class JDBCExample {
public static void main(String[] args) throws SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 加载MySQL的JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 连接到MySQL数据库
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
// 读取用户输入的学号
java.util.Scanner scanner = new java.util.Scanner(System.in);
System.out.print("请输入学号:");
int id = scanner.nextInt();
// 查询学生信息和课程成绩
stmt = conn.createStatement();
String sql = "SELECT s.id, s.name, s.gender, s.age, c.name AS course_name, sc.score FROM student s LEFT JOIN score sc ON s.id = sc.student_id LEFT JOIN course c ON sc.course_id = c.id WHERE s.id = " + id;
rs = stmt.executeQuery(sql);
// 输出查询结果
if (rs.next()) {
String name = rs.getString("name");
String gender = rs.getString("gender");
int age = rs.getInt("age");
String courseName = rs.getString("course_name");
int score = rs.getInt("score");
System.out.println("id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + ", course_name=" + courseName + ", score=" + score);
} else {
System.out.println("该学号对应的信息不存在!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
}
```
6. 运行程序,根据提示输入学号,程序会输出该学号对应的学生的基本信息以及所选修的课程名称、成绩。如果该学号对应的信息不存在,则输出简单的提示信息。
四、实验总结:
通过本次实验,我了解了如何利用JDBC连接和访问MySQL中的指定数据库。在实验过程中,我学会了如何添加MySQL的驱动jar包到项目中,并且掌握了基本的JDBC编程技巧。
1、JAVA实现对LearnDB数据库的操作: (1)按学号排序输出成绩单,成绩单格式如下(以下数据只是示例,不一定是数据库中数据): 学号 姓名 班级 课程 期末成绩 012005001 白山 软件工程171 数据库原理 89 012005001 白山 软件工程171 操作系统与实验 85 012005002 李红 电子信息161 通信原理 78 (2)修改012005001同学的1号课程成绩为99 (3)删除未有选修记录的课程 (4)插入一个学院:CH,化学院,SL403,88229099,CH@nit.edu
对于这个问题,需要结合具体的数据库实现方式来进行操作,以下是一个基于JDBC的Java实现示例:
```java
import java.sql.*;
public class LearnDBDemo {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/LearnDB";
static final String USER = "root";
static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 执行查询
System.out.println("按学号排序输出成绩单:");
stmt = conn.createStatement();
String sql = "SELECT 学号, 姓名, 班级, 课程, 期末成绩 FROM 成绩单 ORDER BY 学号";
ResultSet rs = stmt.executeQuery(sql);
// 输出查询结果
while (rs.next()) {
String 学号 = rs.getString("学号");
String 姓名 = rs.getString("姓名");
String 班级 = rs.getString("班级");
String 课程 = rs.getString("课程");
int 期末成绩 = rs.getInt("期末成绩");
System.out.printf("%s\t%s\t%s\t%s\t%d\n", 学号, 姓名, 班级, 课程, 期末成绩);
}
// 修改012005001同学的1号课程成绩为99
System.out.println("修改012005001同学的1号课程成绩为99");
sql = "UPDATE 成绩单 SET 期末成绩 = 99 WHERE 学号 = '012005001' AND 课程 = '数据库原理'";
int rowsUpdated = stmt.executeUpdate(sql);
if (rowsUpdated > 0) {
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
// 删除未有选修记录的课程
System.out.println("删除未有选修记录的课程");
sql = "DELETE FROM 课程 WHERE 课程号 NOT IN (SELECT DISTINCT 课程 FROM 成绩单)";
int rowsDeleted = stmt.executeUpdate(sql);
if (rowsDeleted > 0) {
System.out.println("删除成功");
} else {
System.out.println("没有符合条件的记录");
}
// 插入一个学院
System.out.println("插入一个学院:CH,化学院,SL403,88229099,CH@nit.edu");
sql = "INSERT INTO 学院 VALUES ('CH', '化学院', 'SL403', '88229099', 'CH@nit.edu')";
int rowsInserted = stmt.executeUpdate(sql);
if (rowsInserted > 0) {
System.out.println("插入成功");
} else {
System.out.println("插入失败");
}
// 关闭资源
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理 Class.forName 错误
e.printStackTrace();
} finally {
// 关闭资源
try {
if (stmt != null) stmt.close();
} catch (SQLException se2) {
}
try {
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
```
需要注意的是,这个示例中使用的是MySQL数据库,因此需要先安装MySQL并创建一个名为LearnDB的数据库,然后创建相应的表和数据。对于其他数据库,需要根据实际情况进行修改。
阅读全文