1. 创建网络课程数据库和六个表:
CREATE DATABASE 网络教学平台;
USE 网络教学平台;
CREATE TABLE 章节表 (
章节ID INT PRIMARY KEY,
章节名称 VARCHAR(255),
试题数量 INT
);
CREATE TABLE 题库表 (
试题ID INT PRIMARY KEY,
试题内容 TEXT,
标准答案 TEXT,
题型 VARCHAR(255),
难度 VARCHAR(255),
章节ID INT,
FOREIGN KEY (章节ID) REFERENCES 章节表(章节ID)
);
CREATE TABLE 班级表 (
班级ID INT PRIMARY KEY,
班级名称 VARCHAR(255),
班级人数 INT,
教师ID INT
);
CREATE TABLE 学生表 (
学生ID INT PRIMARY KEY,
学生帐号 VARCHAR(255),
学生姓名 VARCHAR(255),
口令 VARCHAR(255),
班级ID INT,
FOREIGN KEY (班级ID) REFERENCES 班级表(班级ID)
);
CREATE TABLE 试卷总表 (
试卷总表ID INT PRIMARY KEY,
学生ID INT,
开始时间 DATETIME,
结束时间 DATETIME,
状态 VARCHAR(255),
分数 INT,
FOREIGN KEY (学生ID) REFERENCES 学生表(学生ID)
);
CREATE TABLE 试卷明细表 (
试卷明细ID INT PRIMARY KEY,
试卷总表ID INT,
试题ID INT,
答案 TEXT,
得分 INT,
FOREIGN KEY (试卷总表ID) REFERENCES 试卷总表(试卷总表ID),
FOREIGN KEY (试题ID) REFERENCES 题库表(试题ID)
);
2. 创建触发器:
DELIMITER //
CREATE TRIGGER insert_学生_update_班级
AFTER INSERT ON 学生表
FOR EACH ROW
BEGIN
UPDATE 班级表
SET 班级人数 = 班级人数 + 1
WHERE 班级ID = NEW.班级ID;
END;
//
DELIMITER ;
```
3. 编写存储过程:
```sql
DELIMITER //
CREATE PROCEDURE insert_学生表(IN p_学生帐号 VARCHAR(255), IN p_学生姓名 VARCHAR(255), IN p_口令 VARCHAR(255), IN p_班级ID INT)
BEGIN
INSERT INTO 学生表 (学生帐号, 学生姓名, 口令, 班级ID)
VALUES (p_学生帐号, p_学生姓名, p_口令, p_班级ID);
END;
//
DELIMITER ;
4. 在学生表中依据学生姓名建立索引:
CREATE INDEX index_学生姓名 ON 学生表 (学生姓名);
5. 建立班级学生视图:
CREATE VIEW v_班级_学生 AS
SELECT c.班级名称, s.学生帐号, s.学生姓名, s.口令
FROM 班级表 c
JOIN 学生表 s ON c.班级ID = s.班级ID;
6. 编写存储过程:
```sql
DELIMITER //
CREATE PROCEDURE delete_试卷(IN p_试卷总表ID INT)
BEGIN
DELETE FROM 试卷明细表
WHERE 试卷总表ID = p_试卷总表ID;
END;
//
DELIMITER ;
第四题没有记录搜索不出来
```