我是靠谱客的博主 糊涂黄蜂,最近开发中收集的这篇文章主要介绍实验楼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;

最后

以上就是糊涂黄蜂为你收集整理的实验楼mysql挑战2_挑战:简化数据操作提升性能的全部内容,希望文章能够帮你解决实验楼mysql挑战2_挑战:简化数据操作提升性能所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部