首先编写查询、然后使用合适的参数去封装为相应的函数 1.创建一个函数,根据学生姓名和课程名查询该生该课程的成绩。 2.创建一个函数,根据教师姓名查询该教师所教课程名、学生人数、平均成绩、最高成绩、最低成绩。 3.创建一个函数,统计各系各职称的教师的总人数、男女人数、平均年龄。
时间: 2024-03-23 16:36:37 浏览: 94
学生\教师\考试\课程 管理系统,封装封页查询功能,按需下载。
好的,我来为您解答。
针对您的问题,可以使用 SQL 语句实现查询功能,然后将查询语句封装为函数。
1. 根据学生姓名和课程名查询该生该课程的成绩
```sql
SELECT score FROM score_table WHERE student_name = 'xxx' AND course_name = 'yyy';
```
可以将上述查询语句封装为如下的函数:
```python
def get_score_by_name_and_course(student_name, course_name):
# 执行查询语句,获取结果
# 这里假设使用了 pymysql 库来连接 MySQL 数据库
cursor.execute("SELECT score FROM score_table WHERE student_name = %s AND course_name = %s", (student_name, course_name))
result = cursor.fetchone()
# 返回查询结果
return result[0] if result else None
```
2. 根据教师姓名查询该教师所教课程名、学生人数、平均成绩、最高成绩、最低成绩
```sql
SELECT course_name, COUNT(DISTINCT student_name), AVG(score), MAX(score), MIN(score) FROM score_table WHERE teacher_name = 'xxx' GROUP BY course_name;
```
可以将上述查询语句封装为如下的函数:
```python
def get_course_info_by_teacher_name(teacher_name):
# 执行查询语句,获取结果
# 这里假设使用了 pymysql 库来连接 MySQL 数据库
cursor.execute("SELECT course_name, COUNT(DISTINCT student_name), AVG(score), MAX(score), MIN(score) FROM score_table WHERE teacher_name = %s GROUP BY course_name", (teacher_name,))
result = cursor.fetchall()
# 返回查询结果
return result
```
3. 统计各系各职称的教师的总人数、男女人数、平均年龄
```sql
SELECT department, title, COUNT(*), SUM(CASE WHEN gender = '男' THEN 1 ELSE 0 END), SUM(CASE WHEN gender = '女' THEN 1 ELSE 0 END), AVG(age) FROM teacher_table GROUP BY department, title;
```
可以将上述查询语句封装为如下的函数:
```python
def get_teacher_info_by_department_and_title():
# 执行查询语句,获取结果
# 这里假设使用了 pymysql 库来连接 MySQL 数据库
cursor.execute("SELECT department, title, COUNT(*), SUM(CASE WHEN gender = '男' THEN 1 ELSE 0 END), SUM(CASE WHEN gender = '女' THEN 1 ELSE 0 END), AVG(age) FROM teacher_table GROUP BY department, title")
result = cursor.fetchall()
# 返回查询结果
return result
```
以上是三个函数的示例代码,其中涉及到的表和字段名称需要根据实际情况进行修改。同时,需要注意防止 SQL 注入等安全问题,可以使用参数化查询等方式进行防范。
阅读全文