已知选课管理系统Xkglxt包含如下数据表: 1)学生表: 学生id, 学号, 姓名, 专业, 年级, 姓名拼音缩写 2)课程表: 课程id, 课程名称, 学分 3)选课表: 选课id, 学生id, 课程id, 成绩 请完成如下操作的SQL语句,表名
时间: 2023-10-07 12:04:21 浏览: 41
1. 查询所有学生的姓名、专业和年级信息:
```
SELECT 姓名, 专业, 年级 FROM 学生表;
```
2. 查询所有课程的名称和学分信息:
```
SELECT 课程名称, 学分 FROM 课程表;
```
3. 查询所有学生选修的课程及其成绩信息:
```
SELECT 学生表.姓名, 课程表.课程名称, 选课表.成绩
FROM 学生表, 课程表, 选课表
WHERE 学生表.学生id = 选课表.学生id AND 课程表.课程id = 选课表.课程id;
```
4. 查询某个学生选修的所有课程及其成绩信息:
```
SELECT 学生表.姓名, 课程表.课程名称, 选课表.成绩
FROM 学生表, 课程表, 选课表
WHERE 学生表.学号 = '学生学号' AND 学生表.学生id = 选课表.学生id AND 课程表.课程id = 选课表.课程id;
```
其中,'学生学号'需要替换为具体的学生学号。
5. 查询某门课程的所有学生及其成绩信息:
```
SELECT 学生表.姓名, 选课表.成绩
FROM 学生表, 选课表
WHERE 选课表.课程id = '课程id' AND 学生表.学生id = 选课表.学生id;
```
其中,'课程id'需要替换为具体的课程id。
相关问题
已知选课管理系统Xkglxt包含如下数据表: 1)学生表: 学生id, 学号, 姓名, 专业, 年级, 姓名拼音缩写 2)课程表: 课程id, 课程名称, 学分 3)选课表: 选课id, 学生id, 课程id, 成绩 请完成如下操作的SQL语句,表名和列名必须和上面的一致: 1、创建以上三个表的SQL语句; 2、创建一个存储过程(名字自定),实现选课表的插入,需要判断当前课程id和学生id
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和成绩插入到选课表中,返回选课成功。
已知选课管理系统Xkglxt包含如下数据表: 1)学生表: 学生id, 学号, 姓名, 专业, 年级, 姓名拼音缩写 2)课程表: 课程id, 课程名称, 学分 3)选课表: 选课id, 学生id, 课程id, 成绩 请完成如下操作的SQL语句,表名和列名必须和上面的一致: 1、创建以上三个表的SQL语句; 2、创建一个存储过程(名字自定),实现选课表的插入,需要判断当前课程id和学生id是否存在。
1、创建表的SQL语句如下:
-- 学生表
CREATE TABLE 学生表 (
学生id INT PRIMARY KEY AUTO_INCREMENT,
学号 VARCHAR(20) NOT NULL,
姓名 VARCHAR(20) NOT NULL,
专业 VARCHAR(20) NOT NULL,
年级 VARCHAR(4) NOT NULL,
姓名拼音缩写 VARCHAR(20) NOT NULL
);
-- 课程表
CREATE TABLE 课程表 (
课程id INT PRIMARY KEY AUTO_INCREMENT,
课程名称 VARCHAR(20) NOT NULL,
学分 FLOAT NOT NULL
);
-- 选课表
CREATE TABLE 选课表 (
选课id INT PRIMARY KEY AUTO_INCREMENT,
学生id INT NOT NULL,
课程id INT NOT NULL,
成绩 FLOAT,
CONSTRAINT FOREIGN KEY (学生id) REFERENCES 学生表(学生id),
CONSTRAINT FOREIGN KEY (课程id) REFERENCES 课程表(课程id)
);
2、创建存储过程的SQL语句如下:
DELIMITER //
CREATE PROCEDURE insert_course(
IN pid INT,
IN sid INT,
IN sc FLOAT
)
BEGIN
DECLARE count_1 INT;
DECLARE count_2 INT;
SELECT COUNT(*) INTO count_1 FROM 学生表 WHERE 学生id = sid;
SELECT COUNT(*) INTO count_2 FROM 课程表 WHERE 课程id = pid;
IF count_1 = 0 THEN
SELECT "学生不存在" AS MESSAGE;
ELSEIF count_2 = 0 THEN
SELECT "课程不存在" AS MESSAGE;
ELSE
INSERT INTO 选课表 (学生id, 课程id, 成绩) VALUES (sid, pid, sc);
SELECT "选课成功" AS MESSAGE;
END IF;
END//
DELIMITER ;
说明:此存储过程的功能是向选课表中插入数据,但在插入之前需要进行学生id和课程id的验证,以确保学生和课程都是存在的。如果存在,则插入数据,否则返回错误信息。