sql语言写出:学生表(Student)中存放学生的记录,学生选修表 (SC) 中存放学生的修课及成绩情况。创建一个触发器ScDel_Cascade,当删除Student中的数据时,数据表SC中有关刚刚删除学生的修课成绩信息也能被级联删除掉。
时间: 2024-03-17 18:40:36 浏览: 31
可以使用如下的 SQL 语句来创建名为 ScDel_Cascade 的触发器:
```sql
CREATE TRIGGER ScDel_Cascade
AFTER DELETE ON Student
FOR EACH ROW
BEGIN
DELETE FROM SC WHERE Sno = OLD.Sno;
END;
```
其中,OLD.Sno 表示被删除的学生的学号,这个学号将会被用来删除 SC 表中与该学生相关的修课成绩信息。这个触发器将会在每次从 Student 表中删除一条记录时被触发,从而确保 SC 表中与该学生相关的数据也会被级联删除。
相关问题
sql中查询选过课的学生学号且选修表没有学生学号的代码
可以使用如下的 SQL 语句查询选过课的学生学号且选修表没有学生学号的代码:
```
SELECT DISTINCT cs.student_id
FROM course_selection cs
WHERE NOT EXISTS (
SELECT 1 FROM course_registration cr WHERE cr.student_id = cs.student_id
);
```
其中,`course_selection` 是选课记录表,`course_registration` 是选修表,`student_id` 是学生学号字段。
上述 SQL 语句中,通过子查询 `NOT EXISTS` 来判断某个学生是否在选修表中出现。如果不存在,则说明该学生选过课但是没有在选修表中注册,符合查询条件。最终查询结果中每个学生只出现一次,可以使用 `DISTINCT` 关键字去重。
用sql语言创建学生表 课程表 学生选修表
好的,以下是创建这三个表的 SQL 语句:
1. 学生表
```
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
gender VARCHAR(10),
birthday DATE,
address VARCHAR(100)
);
```
2. 课程表
```
CREATE TABLE course (
id INT PRIMARY KEY,
name VARCHAR(50),
teacher VARCHAR(50),
credit INT,
time VARCHAR(50),
classroom VARCHAR(50)
);
```
3. 学生选修表
```
CREATE TABLE select_course (
id INT PRIMARY KEY,
student_id INT,
course_id INT,
score INT,
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
);
```
这三个表中,学生表包含学生的基本信息,课程表包含课程的基本信息,学生选修表则记录了学生选修了哪些课程以及成绩等信息。其中,学生选修表中的 student_id 和 course_id 分别是学生表和课程表中的主键,用于建立表与表之间的关联。