實驗樓sql進階之簡化數據操作提升性能(window)

背景


成績管理系統中,當有同學的分數被修改時,需要通過觸發器將成績表中的這條更新記錄存到新的表 modifymark 中。同時需要創建一個存儲過程用來顯示數學課的全部學生的成績,並按分數降序排列。另外,現需要爲數據庫新增一個用戶,併爲他分配在數據庫 gradesystem 下所有表的 select 權限。

有四個表

  • 學生表(student):學生 sid 、學生姓名sname和性別gender

  • 課程表(course):課程 cid 和課程名cname

  • 成績表(mark):成績 id 、學生 id 、課程 id 和分數score
  • 成績更新表(modifymark):成績 id (m_mid)、學生 id (m_sid)、課程 id(m_cid) 、分數(m_score)和更新時間(m_time)。

目標

  • 1.MySQL 服務處於運行狀態

    這裏寫圖片描述

  • 2.下載運行 createdb2.sql 文件,完成數據庫的建立
    這裏寫圖片描述

    這裏寫圖片描述

  • 3.創建觸發器 trigger_modify 實現當 mark 表有分數被修改時,將更新後的整條數據插入到 modifymark 表中。測試將 Tom 的化學成績在原來的基礎上加3分,查看 modifymark 中是否插入了數據
    tips:
    1是update不是set或者insert
    2獲取現在的時間使用now()

    這裏寫圖片描述
    3測試,更新表中數據,m_mid因爲在建表的時候,採用的自增,所以創建構造器的不用複製,現在每插入一條數據,表格中屬性m_mid會自增.
    這裏寫圖片描述
    這裏寫圖片描述

  • 4.創建存儲過程 math_proc 將數學課的全部學生的成績按降序排列顯示。包括課程名(cname) math、學生姓名(sname)以及分數(score)
    這裏寫圖片描述

  • 5.創建用戶 testuser,密碼爲 123456,併爲其分配在數據庫 gradesystem 下所有表的 select 權限
    -這裏寫圖片描述

  • 6測試5
    1登陸

  • 這裏寫圖片描述
    2測試SELECT
    這裏寫圖片描述
    3測試其他
    這裏寫圖片描述