sql借助student course sc表删除计算机系全体学生的选课记录
时间: 2023-09-13 18:06:15 浏览: 336
可以使用以下 SQL 语句来删除计算机系全体学生的选课记录:
```
DELETE FROM sc WHERE student_id IN (SELECT id FROM student WHERE department = '计算机系');
```
其中,`sc` 表为学生选课表,包含学生 ID 和课程 ID;`student` 表为学生信息表,包含学生 ID 和所在系别。以上 SQL 语句中,使用 `IN` 子句结合一个子查询来查询所有计算机系学生的 ID,然后删除 `sc` 表中这些学生的选课记录。
相关问题
请给我以下题目的sql语言代码1.用SQL 语句创建一个学生表起名为 student1 内含字段: (sno,sname, sex, sage, sdept)类型及约束条件自己设定。 2.修改 STUDENT1 表结构将 SDEPT 定为 VARCHAR (20) (注意,请用 ALERT TABLE 表名 ALERT 列名 类型(原书上的modify 不能 用) 3. 将一个新同学的记录(学号:95020;姓名:陈冬;性别:男:年龄:18 所在系:IS)插入到 STUDENT1 表中。 4. 插入一条选课记录(’95020°,’1’)到SC 表中 5.将STUDENT 表中的记录全部插入到STUDENT1 表中 6.将STUDENT1 表中没有选课的学生学号插入到选课表中 7. 对STUDENT1 表将学生95001 的年龄改为22岁 8. 将 STUDENT1 表中所有学生的年龄增加 1岁 9.将选课表中计算机系全体学生成绩置零 删除 STUDENT1 表中学号为 95020 的学生记录(注意删除时要将所有含有 95020 记录的表中的信息均删除。 9.删除 STUDENT1 表中计算机系所有学生的记录 10.删除 STUDENT 表中的所有学生记录 11.删除 STUDENT 表
1. 创建学生表
```
CREATE TABLE student1 (
sno CHAR(8) NOT NULL PRIMARY KEY,
sname VARCHAR(20) NOT NULL,
sex CHAR(2) NOT NULL CHECK (sex IN ('男', '女')),
sage SMALLINT NOT NULL,
sdept VARCHAR(20) NOT NULL
);
```
2. 修改表结构
```
ALTER TABLE student1 ALTER COLUMN sdept VARCHAR(20);
```
3. 插入新同学记录
```
INSERT INTO student1 (sno, sname, sex, sage, sdept)
VALUES ('95020', '陈冬', '男', 18, 'IS');
```
4. 插入选课记录
```
INSERT INTO sc (sno, cno)
VALUES ('95020', '1');
```
5. 插入所有学生记录
```
INSERT INTO student1 (sno, sname, sex, sage, sdept)
SELECT sno, sname, sex, sage, sdept FROM student;
```
6. 插入未选课学生记录
```
INSERT INTO sc (sno, cno)
SELECT sno, '0' FROM student1
WHERE sno NOT IN (SELECT sno FROM sc);
```
7. 修改学生年龄
```
UPDATE student1 SET sage = 22 WHERE sno = '95001';
```
8. 年龄增加1岁
```
UPDATE student1 SET sage = sage + 1;
```
9. 计算机系学生成绩置零
```
UPDATE sc SET score = 0 WHERE cno IN (SELECT cno FROM course WHERE cname = '计算机');
```
10. 删除学号为95020的学生记录
```
DELETE FROM sc WHERE sno = '95020';
DELETE FROM student1 WHERE sno = '95020';
DELETE FROM student WHERE sno = '95020';
```
11. 删除计算机系学生记录
```
DELETE FROM sc WHERE sno IN (SELECT sno FROM student1 WHERE sdept = '计算机');
DELETE FROM student1 WHERE sdept = '计算机';
DELETE FROM student WHERE sdept = '计算机';
```
12. 删除所有学生记录
```
DELETE FROM sc;
DELETE FROM student1;
DELETE FROM student;
```
基于school数据库中的student, course, sc表,在SQL数据库中创建满足下述要求的触发器:对SC表进行修改时,不允许修改考试成绩不及格的学生选课记录。
好的,针对你的要求,我们可以使用以下的代码来创建一个触发器:
```
CREATE TRIGGER trg_no_failing_grade
BEFORE UPDATE ON sc
FOR EACH ROW
BEGIN
DECLARE v_grade INT;
SELECT grade INTO v_grade FROM sc WHERE sno = NEW.sno AND cno = NEW.cno;
IF v_grade < 60 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot update record: student has a failing grade';
END IF;
END;
```
这个触发器会在每次对sc表进行更新时被触发。它会查询新的更新记录的学生和课程号,然后检查该学生的成绩是否低于60分。如果是,它会使用SQLSTATE '45000'来抛出一个异常,提示不能更新该记录。
请注意,这个触发器只能在MySQL 5.5.3及以上版本中使用,因为它使用了SIGNAL语句。如果你使用的是旧版本的MySQL,你需要使用其他的方法来抛出异常。
阅读全文