已知选课管理系统Xkglxt包含如下数据表: 1)学生表: 学生id, 学号, 姓名, 专业, 年级, 姓名拼音缩写 2)课程表: 课程id, 课程名称, 学分 3)选课表: 选课id, 学生id, 课程id, 成绩 请完成如下操作的SQL语句,表名和列名必须和上面的一致: 1、创建以上三个表的SQL语句; 2、创建一个存储过程(名字自定),实现选课表的插入,需要判断当前课程id和学生id
时间: 2023-06-06 12:05:28 浏览: 97
1、创建以上三个表的SQL语句:
CREATE TABLE student (
student_id INT PRIMARY KEY,
student_number VARCHAR(10) NOT NULL,
student_name VARCHAR(50) NOT NULL,
major VARCHAR(50) NOT NULL,
grade INT NOT NULL,
name_pinyin VARCHAR(100) NOT NULL
);
CREATE TABLE course (
course_id INT PRIMARY KEY,
course_name VARCHAR(50) NOT NULL,
credit INT NOT NULL
);
CREATE TABLE select_course (
select_id INT PRIMARY KEY,
student_id INT NOT NULL,
course_id INT NOT NULL,
grade INT,
FOREIGN KEY (student_id) REFERENCES student(student_id),
FOREIGN KEY (course_id) REFERENCES course(course_id)
);
2、创建一个存储过程:
DELIMITER $$
CREATE PROCEDURE insert_select_course (
IN in_student_id INT,
IN in_course_id INT,
IN in_grade INT
)
BEGIN
DECLARE total INT;
SELECT COUNT(*) INTO total FROM select_course WHERE student_id = in_student_id AND course_id = in_course_id;
IF total > 0 THEN
SELECT "该学生已选此门课程";
ELSE
INSERT INTO select_course (student_id, course_id, grade) VALUES (in_student_id, in_course_id, in_grade);
SELECT "选课成功";
END IF;
END $$
DELIMITER ;
该存储过程名为 insert_select_course,接受三个参数:学生id、课程id和成绩。首先会检查选课表中是否已经存在该学生选这门课程的记录,如果存在则返回该学生已选此门课程,否则将学生id、课程id和成绩插入到选课表中,返回选课成功。
阅读全文