编程在 teaching 数据库中创建一个名称为 v_final 的视图,包含学生学号、姓名、课程号、课程名和期末成绩,按学号升序排序,相同学号的记录按课程号升序排序。然后通过 v_final视图查询所有学生的学号、姓名和期末成绩
时间: 2024-02-28 07:54:25 浏览: 77
好的,以下是创建视图和查询的 SQL 语句:
创建视图:
```sql
CREATE VIEW v_final AS
SELECT s.id AS 学号, s.name AS 姓名, c.id AS 课程号, c.name AS 课程名, t.score AS 期末成绩
FROM score t
JOIN student s ON t.student_id = s.id
JOIN course c ON t.course_id = c.id
ORDER BY 学号 ASC, 课程号 ASC;
```
查询视图:
```sql
SELECT 学号, 姓名, 期末成绩
FROM v_final;
```
希望这能解决你的问题。
相关问题
在teaching数据库中,创建一个存储过程,查询指定学院学分未达到165的学生姓名和学号。
好的,以下是创建该存储过程的SQL代码:
```
CREATE PROCEDURE sp_get_students_not_reach_credit(IN dept_name VARCHAR(50))
BEGIN
SELECT std_name, std_id
FROM students
WHERE dept_name = dept_name AND credit < 165;
END
```
其中,`dept_name` 是输入参数,用于指定学院名称。该存储过程会查询 `students` 表中符合条件的学生姓名和学号,然后返回结果集。
使用方法:
1. 在 teaching 数据库中执行以上 SQL 代码创建存储过程;
2. 调用存储过程,传入学院名称参数,例如:
```
CALL sp_get_students_not_reach_credit('计算机科学与技术');
```
注意,该存储过程仅适用于 `students` 表,如果你的数据库结构不同,需要相应地进行调整。
利用T-SQL语句在teaching数据库中创建v_age,查询年龄在20周岁及其以上的学生的学号、姓名、性别、出生日期和班级编号。
在teaching数据库中,你可以使用以下T-SQL语句来创建一个名为v_age的视图,该视图将显示年龄在20周岁及以上的学生信息:
```sql
CREATE VIEW v_age AS
SELECT s.student_id, s.name, s.gender, s.birth_date, b.class_number
FROM student s
JOIN class c ON s.class_id = c.class_id
WHERE DATEDIFF(year, s.birth_date, GETDATE()) >= 20;
```
这段代码首先通过JOIN连接了student表和class表,然后筛选出出生日期(birth_date)与当前日期相差20年以上的记录,也就是年龄在20周岁及以上的学生。最后,只选择了学号(student_id),姓名(name),性别(gender),出生日期(birth_date)和班级编号(class_number)这五个字段。
现在,你可以通过以下SQL查询来获取这些信息:
```sql
SELECT * FROM v_age;
```
阅读全文