载入数据
下载
wget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sql
打开mysql服务
sudo service mysql start
登陆
mysql -u root -p #实验楼的root没有密码 可以直接mysql -u root
从文件载入
source createdb2.sql
查看数据库结构
学生表(student):学生 id 、学生姓名和性别
课程表(course):课程 id 和课程名
成绩表(mark):成绩 id 、学生 id 、课程 id 和分数
成绩更新表(modifymark):成绩 id (m_mid)、学生 id (m_sid)、课程 id(m_cid) 、分数(m_score)和更新时间(m_time),表结构与 mark 表大致类似。
要求
创建触发器 trigger_modify 实现当 mark 表有分数被修改时,将更新后的整条数据插入到 modifymark 表中。测试将 Tom 的化学成绩在原来的基础上加3分,查看 modifymark 中是否插入了数据
创建存储过程 math_proc 将数学课的全部学生的成绩按降序排列显示。包括课程名(cname) math、学生姓名(sname)以及分数(score)
创建用户 testuser,密码为 123456,并为其分配在数据库 gradesystem 下所有表的 select 权限
添加触发器
# this is a inline comment
delimiter / # change delimiter as /
create trigger trigger_modify before update on mark
for each row begin
set @tmie=now();
insert into modifymark(m_mid,m_sid,m_cid,m_score) values (new.mid,new.sid,new.cid,new.score,@time);
end/
更新
update mark set score=score+3
where sid=(select sid from student where sname="Tom")
and cid=(select cid from course where cname="chemistry");
创建存储过程
create procedure math_proc ()
begin
select cname, sname,score
from mark natural join student natural join course
where cid=(select cid from course where cname="math")
order by score desc;
end /
# 更一般的,通过传递参数决定课程
create procedure course_proc (coursename char(10))
begin select cname, sname,score
from mark natural join student natural join course
where cid=(select cid from course where cname=coursename)
order by score desc;
end /
delimiter ;
创建用户
create user 'testuser'@'localhost' identified by '123456';
授权
grant select on gradesystem.* to testuser;