三张表,把成绩表中张三的计算机课程成绩改为90分
时间: 2024-02-22 16:55:54 浏览: 80
假设这三张表分别为:学生表(student)、课程表(course)、成绩表(score)。
你可以使用以下 SQL 语句来将成绩表中张三的计算机课程成绩改为90分:
```
UPDATE score SET score = 90
WHERE student_id = (SELECT id FROM student WHERE name = '张三')
AND course_id = (SELECT id FROM course WHERE name = '计算机');
```
注意,这里假设学生名字和课程名称都是唯一的,如果不是唯一的,则需要使用其他条件来定位到具体的学生和课程。
相关问题
SQL1、创建学生信息表,包括学号、姓名、出生日期、性别、籍贯、入学成绩、专业、院系信息。 2、创建课程信息表,包括课程号、课程名、课程类型、课程学分、课程学时、先修课程。 3、创建学生成绩表,包括学号、课程号、成绩字段。 4、为以上三张表添加数据。
1. 创建学生信息表的SQL语句如下:
```sql
CREATE TABLE student_info (
student_id INT PRIMARY KEY,
name VARCHAR(50),
birth_date DATE,
gender CHAR(1),
origin VARCHAR(50),
admission_score DECIMAL(10, 2),
major VARCHAR(50),
department VARCHAR(50)
);
```
2. 创建课程信息表的SQL语句如下:
```sql
CREATE TABLE course_info (
course_id INT PRIMARY KEY,
course_name VARCHAR(100),
course_type VARCHAR(50),
course_credits DECIMAL(3, 1),
course_hours INT,
prerequisite_course_id INT,
FOREIGN KEY (prerequisite_course_id) REFERENCES course_info(course_id)
);
```
注意:课程信息表中的`prerequisite_course_id`字段是一个外键,用于表示当前课程的先修课程。这里假设先修课程信息也存储在同一张表中,因此使用外键引用了表内的课程号。如果先修课程信息存储在另一张表中,则需要相应调整此字段。
3. 创建学生成绩表的SQL语句如下:
```sql
CREATE TABLE student_grades (
student_id INT,
course_id INT,
grade DECIMAL(5, 2),
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES student_info(student_id),
FOREIGN KEY (course_id) REFERENCES course_info(course_id)
);
```
4. 向表中添加数据的SQL语句示例(实际数据应根据具体情况进行添加):
```sql
-- 插入学生信息
INSERT INTO student_info (student_id, name, birth_date, gender, origin, admission_score, major, department) VALUES
(1, '张三', '2000-01-01', 'M', '北京', 85.5, '计算机科学与技术', '计算机学院'),
(2, '李四', '2001-02-02', 'F', '上海', 90.0, '软件工程', '软件学院');
-- 插入课程信息
INSERT INTO course_info (course_id, course_name, course_type, course_credits, course_hours, prerequisite_course_id) VALUES
(101, '高等数学', '必修', 4.0, 64, NULL),
(102, '线性代数', '必修', 3.0, 48, 101),
(103, '计算机组成原理', '必修', 4.0, 64, NULL);
-- 插入学生成绩
INSERT INTO student_grades (student_id, course_id, grade) VALUES
(1, 101, 88.0),
(1, 102, 92.5),
(2, 101, 76.0),
(2, 103, 95.0);
```
请根据实际需求调整上述示例数据。
3、从学生表和成绩表中查询出已经选课学生的正确选课结果。要求显示出学生的学号、姓名和成绩。 4、从学生表、成绩表、课程表中查询出已经选课学生的,课程名称,授课教师。 5、从学生表和成绩表中查询出为张三的学生的选课结果。要求显示出学生的学号、姓名和成绩。 6、从学生表和成绩表中查询出成绩>85的选课结果。要求显示出学生的学号、姓名和成绩 7、选出授课教师为张慧所带学生的信息。要求显示出学生的姓名和成绩。将3-7题利用半联接算法的连接过程
先给出三张表的结构:
学生表(Student):
| 学号 | 姓名 | 年龄 | 性别 |
|-----|------|------|------|
| 001 | 张三 | 20 | 男 |
| 002 | 李四 | 21 | 女 |
| 003 | 王五 | 19 | 男 |
成绩表(Score):
| 学号 | 课程编号 | 成绩 |
|------|----------|------|
| 001 | 001 | 85 |
| 001 | 002 | 90 |
| 002 | 001 | 70 |
| 002 | 002 | 80 |
| 003 | 002 | 95 |
课程表(Course):
| 课程编号 | 课程名称 | 授课教师 |
|----------|----------|----------|
| 001 | 数据结构 | 张慧 |
| 002 | 计算机网络 | 赵四 |
3、从学生表和成绩表中查询出已经选课学生的正确选课结果。要求显示出学生的学号、姓名和成绩。
```sql
SELECT Student.学号, Student.姓名, Score.成绩
FROM Student, Score
WHERE Student.学号 = Score.学号;
```
4、从学生表、成绩表、课程表中查询出已经选课学生的,课程名称,授课教师。
```sql
SELECT Student.学号, Student.姓名, Course.课程名称, Course.授课教师
FROM Student, Score, Course
WHERE Student.学号 = Score.学号 AND Score.课程编号 = Course.课程编号;
```
5、从学生表和成绩表中查询出为张三的学生的选课结果。要求显示出学生的学号、姓名和成绩。
```sql
SELECT Student.学号, Student.姓名, Score.成绩
FROM Student, Score
WHERE Student.学号 = Score.学号 AND Student.姓名 = '张三';
```
6、从学生表和成绩表中查询出成绩>85的选课结果。要求显示出学生的学号、姓名和成绩
```sql
SELECT Student.学号, Student.姓名, Score.成绩
FROM Student, Score
WHERE Student.学号 = Score.学号 AND Score.成绩 > 85;
```
7、选出授课教师为张慧所带学生的信息。要求显示出学生的姓名和成绩。
```sql
SELECT Student.姓名, Score.成绩
FROM Student, Score, Course
WHERE Student.学号 = Score.学号 AND Score.课程编号 = Course.课程编号 AND Course.授课教师 = '张慧';
```
将3-7题利用半联接算法的连接过程如下:
```sql
SELECT Student.学号, Student.姓名, Score.成绩, Course.课程名称, Course.授课教师
FROM Student
JOIN Score ON Student.学号 = Score.学号
JOIN Course ON Score.课程编号 = Course.课程编号
WHERE Student.姓名 = '张三' OR Score.成绩 > 85 OR Course.授课教师 = '张慧';
```
阅读全文