用mysql编写:在学生数据库中,查询选修课程名称为财务管理的学生学号和姓名
时间: 2024-02-26 09:55:58 浏览: 78
可以使用以下SQL语句来查询学生数据库中选修课程名称为财务管理的学生学号和姓名:
```
SELECT s.id, s.name
FROM student s, course c, sc sc
WHERE s.id = sc.id AND c.course_id = sc.course_id AND c.course_name = '财务管理';
```
其中,`student`是学生表的表名,`id`和`name`是学生表中学号和姓名的列名,`course`是课程表的表名,`course_id`和`course_name`是课程表中课程编号和课程名称的列名,`sc`是成绩表的表名,`id`和`course_id`是成绩表中学号和课程编号的列名。`=`是比较运算符,用于判断学生表中的学号、课程表中的课程编号和成绩表中的学号和课程编号是否相等,以及判断课程表中的课程名称是否为“财务管理”。通过执行该SQL语句,就可以得到一个结果集,其中包含了选修课程名称为财务管理的学生的学号和姓名。
相关问题
实验三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编程技巧。
在教学数据库teaching中编写一个存储过程display _course,其功能是根据参数传入学号,利用游标机制,逐显示该学生所选修的每一门课程,要求显示学号、选修的课程名称和成绩。。
好的,下面是对应的存储过程代码:
```mysql
DELIMITER $$
CREATE PROCEDURE display_course(
IN sID INT
)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cID INT;
DECLARE cName VARCHAR(255);
DECLARE score FLOAT;
DECLARE cur CURSOR FOR SELECT `courseID`, `courseName`, `score` FROM `teaching` WHERE `studentID` = sID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO cID, cName, score;
IF done THEN
LEAVE read_loop;
END IF;
SELECT CONCAT('Student ID: ', sID, ', Course ID: ', cID, ', Course Name: ', cName, ', Score: ', score) AS `Result`;
END LOOP;
CLOSE cur;
END$$
DELIMITER ;
```
这个存储过程可以通过传入学生的学号`sID`来逐一显示该学生所选修的每一门课程及其成绩。在存储过程中,我们使用了游标机制来遍历查询结果,并将其逐一输出。注意,这里使用了`CONCAT`函数来拼接输出字符串。
希望这个存储过程能够对你有所帮助!
阅读全文