- 本系列MySQL 基础教程通过“问题-代码”的方式介绍各类方法,每篇设置2个MySQL综合问题,并给出解决方案。
问题1
41 给定一个用于存放学生选课信息的数据库XK, 由学生信息表student、课程信息表course和选课信息表ordering构成。其中, 表studenti己录学生的学号、姓名、性别、年龄等信息; 表course记录课程的课程号、课程名称、授课教室 等信息; 表ordering描述学生的选课信息, 并记录学生所选课程的成绩。
- 使用UPDATE命令, 将表student中字段stu_id为 2 的学生年龄更新为 “20”。
2.使用 SELECT语句查诣学生信息表中所有男生 (取值为 ’ M ′ \mathrm{M}^{\prime} M′ ') 的姓名, 且按年龄的升序排序, 最后把此SELECT语句 存入考生文件大大下的si12.txt文件中。
3.使用 SELECT语句查询课程成绩不及格的学生姓名, 并此SELECT语句存入考生文件夹下的sj13.txt文件中。
4.建立一个名为 stu_user的用户, 主机名为 localhost, 并为其授予关于表student的SELECT、INSERT权限。 - 使用INSERT语句向表ordering中添加如下一条信息: 学其为 1 的学生选修了课程号为 5 的课程, 因该课程尚末结束, 故目前没有成绩。
问题1代码
#【1】
use XK;
show create table student;
update student set stu_age=20 where stu_id=2;
#【2】
select name from student where sex="M" order by stu_age ASC;
#【3】
select name from student, ordering where ordering.no=student.in and grade<60;
#【4】
create user 'stu_user'@'localhost'; //有没有都可以
grant select, insert on student to 'stu_user'@'localhost' with grant ioption;
#【5】
insert into ordering(,) values(1, 5, 0)
问题2
-
在数据库XK中创建一个名称为trigger_delete_student的触发器, 其实现当从表student中删除学生信息时, 可自 动删除该学生的选课信息。
-
在数据库XK中创建一个名称为sp_update_room的存储过程, 其功能是为表course中指定的一个课程号course_i安排一 个新的授课教室。
问题2代码
#【1】
USE XK;
CREATE trigger trigger_delete_student after DELETE //之后删除
ON ordering FOR EACH ROW
DELETE FROM student WHERE stu_no=OLD.stu_id;
#【2】
USE XK;
DELIMITERS $$
CREATE procedure sp_update_room(IN cid INT, IN rno CHAR(20))
BEGIN
UPDATE course SET room=rno WHERE course_id=cid;
END $$