视图stu_score依赖于源表student、course和score三张表,包括studentno、sname、phone、cname、final五个字段,通过视图stu_score修改基本表student中的学号为19112100072的电话号码为‘15011112222’
时间: 2024-11-19 13:37:41 浏览: 37
视图`stu_score`依赖于`student`, `course`, 和 `score` 三个基础表,用于整合学生的姓名、学号、联系方式等信息以及成绩。如果想通过这个视图修改`student`表中特定学生的信息,比如将学号为19112100072的学生电话改为'15011112222',虽然视图本身不具备直接更新基础表的能力,但是可以通过以下步骤:
1. 首先确定在视图`stu_score`中,是否有包含学生学号(studentno)和电话(phone)的记录,并且学号确实对应到你想修改的学生。
2. 然后在`student`表中找到对应的记录,一般情况下你需要先通过其他字段(如`sname`或`studentno`)查询到正确的行。
3. 使用SQL的UPDATE命令,结合JOIN操作来更新`student`表的数据,例如:
```sql
UPDATE student AS s
SET s.phone = '15011112222'
FROM stu_score AS sc
WHERE sc.studentno = '19112100072'
AND s.studentno = sc.studentno;
```
这里假设`studentno`是主键,如果没有冲突,这将会成功更新`student`表的电话号码。
注意,由于视图只是一个虚拟表,不保存数据,所以这个操作实际上是在`student`表上进行的,而不是在视图`stu_score`上。
相关问题
DELIMITER $$ CREATE PROCEDURE set_stu_score ( IN stu_id VARCHAR(20), IN course_id VARCHAR(20), IN score DECIMAL(5,2) ) BEGIN UPDATE choose SET score = score WHERE student_id = stu_id AND course_id = course_id; END $$ DELIMITER ; -- 执行存储过程 CALL set_stu_score('201810101101', '1001', 90);
您的代码几乎正确,但是有一个小错误:在UPDATE语句中,score = score并没有改变原有的score值,需要将它改成score = @score。另外,存储过程中的table名字是choose,而不是student_course,如果您的数据库中不存在choose表,需要将表名改成您的表名。
以下是经过修改后的代码:
```sql
DELIMITER $$
CREATE PROCEDURE set_stu_score (
IN stu_id VARCHAR(20),
IN course_id VARCHAR(20),
IN score DECIMAL(5,2)
)
BEGIN
UPDATE choose
SET score = @score
WHERE student_id = stu_id AND course_id = course_id;
END $$
DELIMITER ;
-- 执行存储过程
CALL set_stu_score('201810101101', '1001', 90);
```
注意,我们在存储过程中使用了参数@score来更新成绩,参数名字与传入的参数score不一样,这是因为参数名字和列名字相同会导致歧义。同时,我们在调用存储过程时,需要使用CALL命令。如果您的存储过程执行成功,会返回一个"Query OK"的提示信息。
在课本stuinfo示例数据库的基础上,创建视图v_stu_grade,三张表分别为course score student,列出“网络131”班学生的学号sNo、姓名sName、班级deptName、课程编号cNo、课程名称cName、成绩grade。
在基于stuinfo示例数据库的情况下,要创建视图`v_stu_grade`,你需要首先确保你有`student`, `course`, 和 `score` 这三个表。假设`student`表有`sNo`(学号)、`sName`(姓名)和`deptName`(部门名),`course`表有`cNo`(课程编号)、`cName`(课程名称),而`score`表关联了学生和课程的成绩,包含`sNo`, `cNo`, 和 `grade`字段。
下面是创建视图的SQL查询命令:
```sql
CREATE VIEW v_stu_grade AS
SELECT s.sNo, s.sName, s.deptName, c.cNo, c.cName, sc.grade
FROM student s
JOIN score sc ON s.sNo = sc.sNo
JOIN course c ON sc.cNo = c.cNo
WHERE c.cName = '网络131';
```
这个视图将显示"网络131"班的学生信息,包括学号、姓名、所在部门、课程编号、课程名称以及他们的成绩。如果要查看这个视图的数据,只需对`v_stu_grade`执行查询即可。
阅读全文