实验楼mysql挑战2_挑战:简化数据操作提升性能

载入数据

下载

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

查看数据库结构

c2e82b6a21bb27b80a32b9cc40f352dd.png

学生表(student):学生 id 、学生姓名和性别

课程表(course):课程 id 和课程名

成绩表(mark):成绩 id 、学生 id 、课程 id 和分数

成绩更新表(modifymark):成绩 id (m_mid)、学生 id (m_sid)、课程 id(m_cid) 、分数(m_score)和更新时间(m_time),表结构与 mark 表大致类似。

d9013d1447250465a94494d306de8138.png

要求

创建触发器 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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值