SQL数据库编写程序,设有一个“stu”数据库,数据库中有一个“stu1"表,该表包含学号、姓名、出生日期等列。要给本月出生的学生举办庆视生日会,每月13日选出要过生日的学生名单。
时间: 2024-09-14 14:13:34 浏览: 44
为了在SQL数据库中编写一个程序,以选出在本月13日过生日的学生,我们可以使用SQL的日期函数来筛选出符合条件的学生记录。以下是一个基本的SQL查询示例,这个查询会选出在当前月份和13日出生的所有学生的记录。假设我们使用的是MySQL数据库,可以这样写:
```sql
SELECT 学号, 姓名, 出生日期
FROM stu1
WHERE DAY(出生日期) = 13
AND MONTH(出生日期) = MONTH(CURDATE())
AND YEAR(出生日期) = YEAR(CURDATE());
```
这段SQL代码的作用是:
1. 选择“stu1”表中的学号、姓名和出生日期三列。
2. 使用`WHERE`子句来过滤结果。
3. `DAY(出生日期) = 13`用来筛选出生日期为每月13号的学生。
4. `MONTH(出生日期) = MONTH(CURDATE())`确保选出的学生是当前月份出生的。
5. `YEAR(出生日期) = YEAR(CURDATE())`确保选出的学生是当前年份出生的。
确保在运行此查询时,数据库中的日期格式应与SQL函数兼容,并且“出生日期”列的数据类型应该是日期类型。
相关问题
使用MySql建立数据库stu,在库中建立表student,表中包含如下信息:学号,姓名,年龄,成绩。初始时为空表。要求编写一个Java程序DBdemo对表student做如下操作: 1)插入5条记录;各记录的学号,姓名,年龄,成绩分
别执行这个命令,这只是一个示例,因为我没有权限在这里创建数据库和表格。
不过,我可以给你提供一个Java程序的示例,它可以连接到MySQL数据库,并执行插入5条记录到名为"student"的表中。
```java
import java.sql.*;
public class DBdemo {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
try {
// 连接到MySQL数据库
conn = DriverManager.getConnection("jdbc:mysql://localhost/stu", "username", "password");
// 准备SQL语句
String sql = "INSERT INTO student (id, name, age, score) VALUES (?, ?, ?, ?)";
ps = conn.prepareStatement(sql);
// 插入5条记录
for (int i = 1; i <= 5; i++) {
ps.setInt(1, i);
ps.setString(2, "Student" + i);
ps.setInt(3, 20 + i);
ps.setDouble(4, 80 + i);
ps.executeUpdate();
}
System.out.println("插入5条记录成功");
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接和语句对象
try {
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在上面的示例程序中,我们使用了JDBC API来连接到MySQL数据库,并使用PreparedStatement对象执行插入操作。在循环中,我们设置了每个记录的学号、姓名、年龄和成绩,并执行了插入操作。最后,我们关闭了连接和语句对象。
请注意,你需要将程序中的"username"和"password"替换为你自己的MySQL用户名和密码,并将"localhost"替换为你的MySQL服务器地址。
用sql语句实现以下代码:输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。 2. 使用TeachSystem数据库中的student表、course表、SC表。 (1)创建一个存储过程stu_grade,查询学号为S01的学生的姓名、课程名称、成绩。 (2)调用存储过程stu_grade。 3. 使用TeachSystem数据库中的student表、course表、SC表。 (1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。 (2)调用存储过程stu_name。 (3)删除存储过程stu_name。 4. 使用TeachSystem数据库中的SC表。 (1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。 (2)执行存储过程stu_g_r,输入学号S02。 (3)显示S02号学生的选课门数。
创建存储过程stu_info:
```
CREATE PROCEDURE stu_info
@name VARCHAR(50)
AS
BEGIN
SELECT s.name, c.course_name, sc.grade
FROM student s
JOIN SC sc ON s.s_id = sc.s_id
JOIN course c ON c.c_id = sc.c_id
WHERE s.name = @name
END
```
创建存储过程stu_grade:
```
CREATE PROCEDURE stu_grade
AS
BEGIN
SELECT s.name, c.course_name, sc.grade
FROM student s
JOIN SC sc ON s.s_id = sc.s_id
JOIN course c ON c.c_id = sc.c_id
WHERE s.s_id = 'S01'
END
```
调用存储过程stu_grade:
```
EXECUTE stu_grade
```
创建存储过程stu_name:
```
CREATE PROCEDURE stu_name
@name VARCHAR(50)
AS
BEGIN
SELECT MAX(sc.grade) AS max_grade, MIN(sc.grade) AS min_grade, AVG(sc.grade) AS avg_grade
FROM student s
JOIN SC sc ON s.s_id = sc.s_id
WHERE s.name = @name
END
```
调用存储过程stu_name:
```
EXECUTE stu_name '张三'
```
删除存储过程stu_name:
```
DROP PROCEDURE stu_name
```
创建存储过程stu_g_r:
```
CREATE PROCEDURE stu_g_r
@s_id VARCHAR(50),
@count INT OUTPUT
AS
BEGIN
SELECT @count = COUNT(*)
FROM SC
WHERE s_id = @s_id
END
```
执行存储过程stu_g_r,输入学号S02:
```
DECLARE @count INT
EXECUTE stu_g_r 'S02', @count OUTPUT
SELECT @count
```
阅读全文