使用T-SQL语句,删除所有的学生选课记录。 删除后,请重新插入SC表中的记录。
时间: 2024-03-23 17:39:50 浏览: 473
删除学生选课记录的 T-SQL 语句如下:
```
DELETE FROM SC;
```
该语句会将 SC 表中的所有记录删除。执行该语句之前,请确保 SC 表已经被创建。
重新插入 SC 表中的记录可以使用 INSERT INTO 语句,例如:
```
INSERT INTO SC VALUES ('1001', '001', 85);
INSERT INTO SC VALUES ('1001', '002', 90);
INSERT INTO SC VALUES ('1002', '001', 75);
INSERT INTO SC VALUES ('1002', '003', 88);
INSERT INTO SC VALUES ('1003', '002', 80);
INSERT INTO SC VALUES ('1003', '003', 82);
```
该语句会将学号为 '1001' 的学生选修了 '001' 和 '002' 两门课程,成绩分别为 85 和 90;学号为 '1002' 的学生选修了 '001' 和 '003' 两门课程,成绩分别为 75 和 88;学号为 '1003' 的学生选修了 '002' 和 '003' 两门课程,成绩分别为 80 和 82。您可以根据实际情况修改这些记录的值。
相关问题
使用T-SQL语句,删除选修了“C语言程序设计”的学生的选课记录。
您可以使用以下的 T-SQL 语句来删除选修了 “C语言程序设计” 的学生的选课记录:
```
DELETE FROM SC WHERE Cno = '001';
```
执行该语句之前,请确保 SC 表已经被创建,并且表中有 Sno, Cno, Grade 这三个字段。该语句会将选修了 “C语言程序设计” 的学生的选课记录从 SC 表中删除。
单学号: (1) 在学生表中增加一个“avgGrade”字段记录学生的平均成绩,并更新avgGrade属性的值; (2) 创建一个触发器,当输入学生选课成绩时,更新其平均成绩;并使用SQL语句往tb_sc表插入学生选课成绩记录,给出触发器触发后的相应结果。 双学号: (1) 在学生表中增加一个“TCredit”字段记录学生选课的总学分,并更新TCredit属性的值; (2) 创建一个触发器,当输入学生选课成绩时,如果成绩大于等于60分则将该课程的学分计入总学分;并使用SQL语句往tb_sc表插入学生选课成绩记录,给出触发器触发后的相应结果。
单学号:
1) 在学生表中增加一个“avgGrade”字段记录学生的平均成绩,并更新avgGrade属性的值:
```sql
ALTER TABLE tb_student ADD COLUMN avgGrade FLOAT;
UPDATE tb_student SET avgGrade = (SELECT AVG(score) FROM tb_sc WHERE tb_sc.sid = tb_student.sid);
```
2) 创建一个触发器,当输入学生选课成绩时,更新其平均成绩:
```sql
CREATE TRIGGER tr_tb_sc AFTER INSERT ON tb_sc
FOR EACH ROW
BEGIN
UPDATE tb_student SET avgGrade = (SELECT AVG(score) FROM tb_sc WHERE tb_sc.sid = NEW.sid) WHERE sid = NEW.sid;
END;
```
3) 往tb_sc表插入学生选课成绩记录:
```sql
INSERT INTO tb_sc (sid, cid, score) VALUES (1001, 1, 90);
-- 触发器会更新学生1001的平均成绩
SELECT * FROM tb_student WHERE sid = 1001;
```
输出结果为:
| sid | sname | sex | age | nation | avgGrade |
| --- | ----- | --- | --- | ------ | -------- |
| 1001 | 张三 | 男 | 20 | 汉族 | 90 |
双学号:
1) 在学生表中增加一个“TCredit”字段记录学生选课的总学分,并更新TCredit属性的值:
```sql
ALTER TABLE tb_student ADD COLUMN TCredit INT;
UPDATE tb_student SET TCredit = (SELECT SUM(credit) FROM tb_course WHERE cid IN (SELECT cid FROM tb_sc WHERE tb_sc.sid = tb_student.sid AND score >= 60));
```
2) 创建一个触发器,当输入学生选课成绩时,如果成绩大于等于60分则将该课程的学分计入总学分:
```sql
CREATE TRIGGER tr_tb_sc AFTER INSERT ON tb_sc
FOR EACH ROW
BEGIN
IF NEW.score >= 60 THEN
UPDATE tb_student SET TCredit = TCredit + (SELECT credit FROM tb_course WHERE cid = NEW.cid) WHERE sid = NEW.sid;
END IF;
END;
```
3) 往tb_sc表插入学生选课成绩记录:
```sql
INSERT INTO tb_sc (sid, cid, score) VALUES (1001, 1, 90);
-- 触发器会将该课程的学分计入学生1001的总学分
SELECT * FROM tb_student WHERE sid = 1001;
```
输出结果为:
| sid | sname | sex | age | nation | TCredit |
| --- | ----- | --- | --- | ------ | ------- |
| 1001 | 张三 | 男 | 20 | 汉族 | 4 |
阅读全文