MySQL蓝桥实验平台挑战二,「MySQL 基础课程 」 挑战参考答案

部分同学在完成「MySQL 基础课程」挑战的过程中,常会遇到一些相似的问题。我们将 3 个挑战题目的参考答案整理出来,供大家参考。各题目的解法不唯一,你也可以将已经通过的不同解题方法分享出来。

挑战实验一 搭建一个简易的成绩管理系统的数据库

$ sudo service mysql start

$ mysql -u root

mysql> CREATE DATABASE gradesystem;

mysql> use gradesystem

mysql> CREATE TABLE student(

-> sid int NOT NULL AUTO_INCREMENT,

-> sname varchar(20) NOT NULL,

-> gender varchar(10) NOT NULL,

-> PRIMARY KEY(sid)

-> );

mysql> CREATE TABLE course(

-> cid int NOT NULL AUTO_INCREMENT,

-> cname varchar(20) NOT NULL,

-> PRIMARY KEY(cid)

-> );

mysql> CREATE TABLE mark(

-> mid int NOT NULL AUTO_INCREMENT,

-> sid int NOT NULL,

-> cid int NOT NULL,

-> score int NOT NULL,

-> PRIMARY KEY(mid),

-> FOREIGN KEY(sid) REFERENCES student(sid),

-> FOREIGN KEY(cid) REFERENCES course(cid)

-> );

mysql> INSERT INTO student VALUES(1,'Tom','male'),(2,'Jack','male'),(3,'Rose','female');

mysql> INSERT INTO course VALUES(1,'math'),(2,'physics'),(3,'chemistry');

mysql> INSERT INTO mark VALUES(1,1,1,80),(2,2,1,85),(3,3,1,90),(4,1,2,60),(5,2,2,90),(6,3,2,75),(7,1,3,95),(8,2,3,75),(9,3,3,85);

挑战实验二 成绩管理系统的数据操作

$ sudo service mysql start

$ mysql -u root

mysql> source /home/shiyanlou/createdb.sql

mysql> SELECT s.sid,s.sname,s.gender FROM student s,( SELECT m.sid,m.cid,m.score FROM mark m,course c WHERE m.cid = c.cid AND c.cname='physics' ORDER BY m.score DESC LIMIT 1) t WHERE s.sid = t.sid INTO OUTFILE '/tmp/physics.txt';

mysql> UPDATE mark m,student s,course c SET m.score = m.score+3 WHERE m.sid = s.sid AND s.sname = 'Tom' AND m.cid = c.cid AND c.cname = 'chemistry';

挑战实验三 简化数据操作提升性能

$ sudo service mysql start

$ mysql -u root

mysql> source /home/shiyanlou/createdb2.sql

mysql> CREATE TRIGGER trigger_modify

-> AFTER UPDATE ON mark

-> FOR EACH ROW

-> INSERT INTO modifymark(m_sid,m_cid,m_score,m_time) VALUES(old.sid,old.cid,new.score,current_timestamp());

mysql> UPDATE mark m,student s,course c SET m.score = m.score+3 WHERE m.sid = s.sid AND s.sname = 'Tom' AND m.cid = c.cid AND c.cname = 'chemistry';

mysql> delimiter //

mysql> CREATE PROCEDURE math_proc()

-> BEGIN

-> SELECT c.cname,s.sname,m.score FROM mark m,course c,student s WHERE m.cid = c.cid AND c.cname = 'math' AND m.sid = s.sid ORDER BY m.score;

-> END

-> //

mysql> delimiter ;

mysql> GRANT select ON *.* TO 'testuser'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;

注意:本帖仅供分享优质答案(代码精简规范,测试通过)供其他学员参考,请勿在本帖下方提问,提问请到课程问答区域提问。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值