<table>
<tbody>
<tr>
<td width = 140px align = center><b>課題<br>名稱</b></td>
<td >第8章 數據庫的高級操作</td>
<td> <div style = "vertical-align:top;text-align:center">計劃<br>學時</div></td>
<td ><div style = "vertical-align:top;text-align:center">7 課時</div></td>
</tr>
<tr>
<td width = 140px align = center><b>內容<br>分析</b></td>
<td colspan=3> 通過前幾章的學習,大家對數據庫的概念以及數據庫的基本操作有了一定的了解,在數據庫中還有一些高級的操作,如數據的備份、還原,用戶管理、權限管理、事務管理等,本章將針對這些知識進行詳細地講解。</td>
</tr>
<tr>
<td width = 140px align = center ><b>教學目標<br>基本要求</b></td>
<td colspan = 3>
1、學會對數據庫中的數據進行備份和還原操作<br>
2、學會在數據庫中創建、刪除用戶<br>
3、學會對數據庫中的權限進行授予、查看和收回
</td>
</tr>
<tr>
<td width = 140px align = center><b>教學重點</b></td>
<td colspan = 3>
1、數據的備份和還原<br>
2、普通用戶的創建、刪除和修改用戶密碼<br>
3、如何為用戶授予權限
</td>
</tr>
<tr>
<td width = 140px align = center><b>難點及措施</b></td>
<td colspan = 3>
數據的備份、用戶的創建、修改用戶密碼、授予權限
</td>
<tr>
<td width = 140px align = center><b>教學方式</b></td>
<td colspan = 3>
講師課堂教學要以PPT講授為主,并結合多媒體進行教學
</td>
</tr>
<tr>
<td width = 140px align = center><b>教學過程</b></td>
<td colspan = 3>
<!======================201706291530=======================>
<div style = "vertical-align:top;text-align:center"><h4><b>第一課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(數據的備份與還原)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、創設情境,講解數據的備份與還原</b></h5></div>
<div style= color:black>(1)老師提出需求,引出數據備份和數據還原</div>
<div style = color:blue> 在操作數據庫時,難免會發生一些意外造成數據丟失。例如,突然停電、管理員的操作失誤都可能導致數據的丟失,那么為了確保數據的安全,需要定期對數據庫進行備份,這樣,當遇到數據庫中數據丟失或者出錯的狀況時,就可以將備份的數據進行還原,從而最大限度地降低損失。</div>
<div style= color:black>(2)明確學習目標</div>
<div style = color:blue>
1、要求學生掌握如何使用mysqldump命令備份單個數據庫、多個數據庫以及備份所有數據庫。<br>
2、要求學生掌握還原數據的方式。
</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進行重點知識的講解</b></h5></div>
<div style= color:black>(1)如何使用mysqldump命令備份數據庫?</div>
<div style = color:blue> 教師首先進行舉例,例如在日常生活中,我們經常需要為自己家的門,多配幾把鑰匙,為自己的愛車準備一個備胎,其實這些行為其實都是在做備份,在數據庫的維護過程中,數據也經常需要備份,以便在系統遭到破壞或其它情況下重新加以利用, MySQL提供了一個mysqldump命令,用于實現數據的備份,mysqldump命令可以備份單個數據庫、多個數據庫和所有數據庫,具體如下:<br>
<li>備份單個數據庫</li>
教師首先講解備份單個數據庫的語法格式,并對語法中的每個參數所表示的意義進行詳細介紹,然后進行案例演示,首先創建一個數據庫chapter08,在數據庫中創建數據表student,并向表中插入3條數據,然后在C盤創建一個名為backup的文件夾,再重新開啟一個DOS命令行窗口(不用登陸到MySQL數據庫),使用mysqldump命令備份chapter08數據庫,如:mysqldump -uroot -pitcast chapter08>C:/backup/chapter08_20140305.sql,此語句執行成功后,在backup文件夾中生成一個名為chapter08_20140305.sql的備份文件,至此數據的備份方式演示完畢。最后教師打開備份的文件并對文件中的一些字段信息進行解釋說明。(可參見教材 例8-1)
<li>備份多個數據庫</li>
教師對該備份方式的語法進行簡單介紹即可。
<li>備份所有數據庫</li>
教師對該備份方式的語法進行簡單介紹即可。
由于三種備份數據的方式比較類似,所以教師只需對備份單個數據庫的步驟進行詳細講解即可,備份多個數據庫和備份所有數據庫的方式學生可根據語法提示課下自行練習。
<br>
</div>
<div style= color:black>(3)如何對數據進行還原?</div>
<div style = color:blue> 教師帶著學生一同查看備份的文件,會發現備份文件實際就是由多個CREATE、INSERT和DROP語句組成,那么我們如果想恢復備份文件中的數據該如何做呢?讓學生進行思考。教師根據以下兩種還原數據的方式進行講解。
<li>使用mysql命令還原數據</li>
教師對使用mysql命令還原數據的語法格式進行講解,然后講解由于數據庫中的庫是不能被還原的,因此在還原數據之前我們必須創建數據庫,并以還原chapter08_20140305.sql文件為例,分步驟講解還原數據的方式:<br>
1、 首先使用DROP語句刪除數據庫chapter08。<br>
2、 新建數據庫chapter08。<br>
3、 另外開啟一個DOS窗口。<br>
4、 使用mysql語句還原C:/backup目錄下的chapter08_20140305.sql文件,還原語句如下:<br>
~~~
mysql -uroot -pitcast chapter08 <C:/backup/chapter08_20140305.sql
~~~
5、為了驗證數據還原成功,使用SELECT語句查看chapter08中的數據。(可參見教材對應知識點)<br>
<li>使用source命令還原數據</li>
教師對比使用mysql命令還原數據的方式講解,使用source命令還原數據需要登陸到MySQL數據庫,還原步驟如下所示:<br>
1、 首先使用DROP語句刪除數據庫chapter08。<br>
2、 新建數據庫chapter08。<br>
3、 USE chapter08。<br>
4、 使用source語句還原C:/backup目錄下的chapter08_20140305.sql文件,還原語句如下:<br>
source C:/backup/chapter08_20140305.sql<br>
5、為了驗證數據還原成功,使用SELECT語句查看chapter08中的數據。至此,還原數據的兩種方式介紹完畢。
</div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,隨堂練習,布置作業</b></h5></div>
<div style=color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style=color:black>(2)讓學生課下完成動手體驗,練習三種備份數據的方式和如何還原數據。</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第二課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(用戶管理—user表、創建普通用戶)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、回顧上節課內容,繼續講解用戶管理</b></h5></div>
<div style = color:black>(1)對上節課留的作業進行答疑。</div>
<div style = color:black>(2)回顧總結上節課的內容,引出本節課主題 </div>
<div style = color:blue> 每個軟件都會對用戶信息進行管理,MySQL也不例外,在安裝MySQL時,會自動安裝一個名為mysql的數據庫,該數據庫中的表都是權限表,其中user表是最重要的一個權限表,本節將針對user表的作用以及如何創建普通用戶進行詳細講解。 </div>
<div style = color:black>(3)明確學習目標</div>
<div style = color:blue>
1、使學生熟悉user表中字段的分類以及各字段的作用<br>
2、使學生掌握創建普通用戶的三種方式。
</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進入重點知識點的講解 </b></h5></div>
<div style = color:black>(1)user表的作用是什么?</div>
<div style = color:blue> 教師首先提出問題,在我們安裝MySQL數據庫時,我們的權限是root用戶,那么這個權限是在哪個表中設置的呢?然后教師對mysql數據庫以及該庫中的權限表進行簡單介紹,由于user表是最重要的權限表,所以教師要對user表的作用以及表中的字段進行詳細闡述,并通過繪表的方式向學生介紹user表中的一些常用字段(可參見教材 表6-1),最后根據字段的4類用途詳細介紹各字段的作用。(可參見教材對應知識點)。
</div>
<div style = color:black>(2)如何創建普通用戶?</div>
<div style = color:blue>
教師提出問題,由于數據庫中的眾多數據對,而一個root用戶是無法管理這些數據的,那么我們是否還需要創建一些普通用戶來管理這些數據呢?學生進行思考,然后教師進行講解創建普通用戶有三種方式,具體如下:
<li> 使用GRANT語句創建用戶 </li>
教師首先講解GRANT語句的特點,讓學生知道GRANT語句是創建用戶最常用的方法,然后講解GRANT語句創建用戶的語法格式,最后教師向學生演示,創建一個新用戶的過程。例如創建一個用戶名為user1、密碼為123,并授予該用戶對chapter08.student表有查詢權限,其創建語句如下所示:
~~~
GRANT SELECT ON chapter08.student TO 'user1'@'localhost' IDENTIFIED BY '123';
~~~
創建完成后,通過查詢語句查看user表中用戶user1是否創建成功。(可參見教材對應知識點)
<li>使用CREATE USER語句創建用戶</li>
教師首先講解CREATE USER語句的特點,然后講解CREATE USER語句創建用戶的語法格式,最后教師向學生演示使用CREATE USER語句創建用戶的過程,例如創建一個用戶名為user2、密碼為123的用戶,創建語句如下:<br>
~~~
CREATE USER 'user2'@'localhost' IDENTIFIED BY '123';
~~~
<li> 使用INSERT語句創建用戶</li>
通過前兩個創建用戶的方式,我們知道,無論是CREATE USER語句還是GRANT語句,在創建用戶時,實際上都是在user表中添加一條新的記錄,因此,也可以使用INSERT語句直接在該表中添加一個用戶。然后教師向學生演示使用INSERT語句創建用戶的過程,例如創建一個用戶名為user3、密碼為123的用戶,創建語句如下:
~~~
INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject)
VALUES('localhost','user3',PASSWORD('123'),'','','');
~~~
創建完成后,通過查詢語句查看user表中用戶user3是否創建成功。(可參見教材對應知識點)
<br>
</div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,布置作業</b></h5></div>
<div style = color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style = color:black>(2)讓學生課下完成動手體驗,練習創建普通用戶的三種方式。</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第三課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(用戶管理—刪除普通用戶、修改用戶密碼)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、回顧上節課內容,繼續講解刪除普通用戶和修改用戶密碼</b></h5></div>
<div style = color:black>(1)對上節課留的作業進行答疑。</div>
<div style = color:black>(2)明確學習目標 </div>
<div style = color:blue> 1、使學生掌握刪除普通用戶的兩種方式<br>
2、使學生掌握root用戶修改密碼的三種方式<br>
3、使學生熟悉root用戶修改普通用戶密碼的三種方式<br>
4、使學生了解普通用戶修改自己密碼的方式
</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進入重點知識點的講解</b></h5></div>
<div style = color:black>(1)如何刪除普通用戶?</div>
<div style = color:blue>
由于在MySQL中我們通常會創建多個普通用戶來管理數據庫,當我們想收回所授予的用戶權限時,就可以將這個用戶刪除,刪除用戶有兩種方式,具體如下:
<li>使用DROP USER語句刪除用戶</li>
教師首先講解DROP USER語句的語法格式,然后教師結合案例向學生演示,如何通過DROP USER語句刪除用戶user1,SQL語句如下:
~~~
DROP USER 'user1'@'localhost';
~~~
最后通過SELECT語句查看用戶是否被刪除(可參見教材對應知識點),需要注意的是,使用DROP USER語句刪除用戶,必須擁有DROP USER的權限。
<li>使用DELETE語句刪除用戶</li>
DELETE語句不僅可以刪除普通表中的數據,還可以刪除user表中的數據,教師向學生講解使用DELETE語句刪除用戶的語法格式,然后結合案例向學生演示如何通過DELETE語句刪除用戶user2,SQL語句如下:
~~~
DELETE FROM mysql.user WHERE Host='localhost' AND User='user2';
~~~
最后通過SELECT語句查看用戶是否被刪除(可參見教材對應知識點),需要注意的是,使用DELETE語句刪除用戶,必須擁有DELETE的權限,而且執行完命令后需要使用“FLUSH PRIVILEGES;”語句重新加載用戶權限
<!-20170629->
</div>
<div style = color:black>(2)如何修改root用戶密碼?</div>
<div style = color:blue>
教師提出問題,數據庫中無論是root用戶還是普通用戶,都有自己的密碼,可是如果密碼丟失了,我們該如何處理呢?學生思考,然后教師進行講解,因為root用戶具有最高的權限,root用戶可以修改自己的密碼,修改root用戶密碼有三種方式,具體如下:<br>
<li>使用mysqladmin命令修改root用戶密碼 </li>
教師首先講解使用mysqladmin命令修改root用戶密碼的語法,然后教師演示在C:\Documents and Settings\Administrator>目錄下使用mysqladmin命令將root用戶的密碼修改為mypwd1的全部過程。(可參見教材對應知識點)
<li>使用UPDATE語句修改root用戶密碼</li>
由于所有的用戶信息都存放在mysql.user表中,因此,只要root用戶登錄到MySQL服務器,使用UPDATE語句就可以直接修改自己的密碼。然后教師講解使用UPDATE語句修改密碼的語法格式,最后教師向學生演示使用
<li>使用SET語句修改root用戶的密碼</li>
root用戶登錄到MySQL服務器后,還可以通過SET語句修改root用戶的密碼。然后教師講解使用SET語句修改密碼的語法格式,并著重介紹S PASSWORD()函數的使用方法, 最后教師向學生演示使用SET語句將root用戶密碼修改為mypwd3的全過程(可參見教材對應知識點)。
</div>
<div style = color:black>(3)如何通過root用戶修改普通用戶的密碼?</div>
<div style = color:blue> 教師進行提問,如果普通用戶的密碼丟失了,我們應該如何修改呢?讓學生進行討論,教師可以給予提醒,由于root用戶具有最高的權限,它是否能修改普通用戶的密碼呢,然后教師進行講解,root用戶的確可以修改普通用戶的密碼,由于root用戶和普通用戶修改密碼的方式比較類似,教師只需要簡單介紹一下root用戶修改普通用戶密碼的語法即可,學生可課下自行練習。root用戶修改普通用戶密碼的三種方式,具體如下:
<li>使用GRANT語句修改密碼</li>
<li>使用UPDATE語句修改密碼</li>
<li>使用SET語句修改密碼</li>
</div>
<div style = color:black>(4)普通用戶如何修改自己的密碼?</div>
<div style = color:blue> 教師首先提出問題,普通用戶是否可以自己修改自己的密碼呢?讓學生進行思考,教師講解,普通用戶也可以修改自己的密碼,并且這種方式可以避免每次修改密碼通知管理員,然后教師講解SET語句的基本語法格式。</div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,布置作業</b></h5></div>
<div style = color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style = color:black>(2)讓學生課下完成動手體驗,root用戶修改root用戶密碼的三種方式。</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第四課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(權限管理)</b></h5></div>
<div style = vertical-align:top;text-align:left><h5><b>一、回顧上節課內容,繼續講解MySQL的權限管理</b></h5></div>
<div style = color:black>(1)對上節課留的作業進行答疑。</div>
<div style = color:black>(2)回顧總結上節課的內容,引出本節課主題</div>
<div style = color:blue> 在MySQL數據庫中,為了保證數據的安全性,數據管理員需要為每個用戶賦予不同的權限,以滿足不同用戶的需求,本節將針對MySQL的權限管理進行詳細地講解。<br>
</div>
<div style = color:black>(3)明確學習目標</div>
<div style = color:blue> 1、使學生明確使用權限的目的。</div>
<div style = color:blue> 2、使學生掌握如何對用戶授予權限、查看權限以及收回權限。</div>
<div style = vertical-align:top;text-align:left><h5><b>二、進入重點知識點的講解</b></h5></div>
<div style = color:black>(1)為什么要使用權限?</div>
<div style = color:blue> 教師首先提出問題,數據庫中是不是哪個用戶都可以對數據進行任意的操作呢?請學生進行思考。然后教師進行解釋,為了保證數據的安全性,數據庫管理員需要為每個用戶賦予不同的權限,以滿足不同用戶的需求,最后教師向學生介紹MySQL中用于存儲權限信息的表,并通過列表的形式向學生展示user表中對應的列和權限范圍(可參見教材 表6-2)。
</div>
<div style = color:black>(2)如何對用戶授予權限?</div>
<div style = color:blue> 教師首先提出問題,在前面的章節中,我們為什么可以對數據進行增刪改查的操作呢?然后教師進行講解,之所以能對數據進行不同的操作,是因為我們擁有的權限所決定的,數據庫中不同的用戶擁有不同的權限,合理的授權可以保證數據庫的安全。教師講完用戶權限的作用后,再講解使用GRANT語句為用戶授權的語法格式,并詳細介紹語法格式中每個字段所表示的意義(可參見教材對應知識點),最后教師向學生演示如何使用GRANT語句創建一個用戶名為user4、密碼為123,且對數據庫有INSERT、SELECT、GRANT OPTION權限的用戶,創建成功后使用SELECT語句來查看user表中用戶的權限是否賦予成功。使學生學會如何為用戶授權,以及查看所授權用戶是否已經具有這個權限。(可參見教材對應知識點)
<div style = color:black>(3)如何查看某個用戶所具有的權限?</div>
<div style = color:blue> 教師首先提出問題,讓學生回答之前使用的查看user表中用戶權限的SQL語句的語法格式,教師針對此SQL語句進行說明,使用SELECT語句查詢權限信息,不僅需要指定用戶,還需要指定查詢的權限,這種方式顯然比較麻煩。然后教師向學生介紹,為了方便查詢用戶的權限信息,MySQL還提供了一個SHOW GRANTS語句,并對該語句的語法格式進行講解,最后教師通過查看root用戶權限和查看普通用戶權限的例子向學生演示SHOW GRANTS語句的用法。(可參見教材對應知識點)</div>
<div style = color:black>(4)如何收回權限?</div>
<div style = color:blue> 教師提出問題,當數據管理員發現某個用戶不應該具有DELETE權限時,該如何收回這個用戶的權限呢?然后教師進行講解,MySQ中收回權限使用REVOKE語句,收回權限有兩種情況,具體如下:
<li>收回具體權限</li>
教師首先講解,REVOKE語句的語法格式,然后教師通過收回user4用戶的INSERT權限,演示REVOKE語句的使用方式,演示完畢,通過SELECT語句查看用戶權限是否被收回。(可參見教材對應知識點)
<li>收回所有權限</li>
教師進行講解,如果用戶的權限比較多,我們需要使用 REVOKE語句提供的收回用戶所有權限的語句,然后教師對該語法格式進行講解,最后教師通過收回user4用戶的所有權限,演示該語句的使用方式,演示完畢,通過SELECT語句查看用戶權限信息的顯示情況。(可參見教材對應知識點)
</div>
</div>
<div style = vertical-align:top;text-align:left><h5><b>三、歸納總結,布置作業</b></h5></div>
<div style = color:black>(1)對課堂上講解的知識點進行總結,使用隨堂練習題鞏固本節課的知識點。</div>
<div style = color:black>(2)讓學生課下完成動手體驗,如何修改視圖以及更新視圖。</div>
====================================================================
<div style = "vertical-align:top;text-align:center"><h4><b>第五課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(上機練習)</b></h5></div>
<div style = color:blue> 上機練習主要針對本章中需要重點掌握的知識點,以及在程序中容易出錯的內容進行練習,通過上機練習可以考察學生對知識點的掌握情況,對代碼的熟練程度。</div>
<div style = vertical-align:top;text-align:left><h5><b>上機一:(考察知識點備份數據和還原數據)</b></h5></div>
<div style = color:black>請按照以下要求操作數據庫student</div>
<div style = color:black>要求如下:</div>
<div style = color:blue>1) 在chapter08數據庫中創建表student,設置id(int),name(varchar),age(int)三個字段,并插入3條數據。<br>
2) 將數據備份至C盤的backup文件夾下,文件名為chapter08_20150102.sql。<br>
3) 還原文件chapter08_20150102.sql中的數據。<br>
</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第六課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(上機練習)</b></h5></div>
<div style = color:blue> 上機練習主要針對本章中需要重點掌握的知識點,以及在程序中容易出錯的內容進行練習,通過上機練習可以考察同學對知識點的掌握情況,對代碼的熟練程度。</div>
<div style = vertical-align:top;text-align:left><h5><b>上機一:(考察知識點為創建普通用戶、刪除普通用戶和修改用戶密碼)</b></h5></div>
<div style = color:black>請按照以下要求操作用戶user1。</div>
<div style = color:black>要求如下:</div>
<div style = color:blue>1) 在chapter08數據庫中創建表student,設置id(int),name(varchar),age(int)三個字段,并插入3條數據。<br>
2) 使用GRANT USAGE語句將用戶user1的密碼修改為‘456'。<br>
3) 使用DROP USER語句刪除用戶user1。<br>
</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第五課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(上機練習)</b></h5></div>
<div style = color:blue> 上機練習主要針對本章中需要重點掌握的知識點,以及在程序中容易出錯的內容進行練習,通過上機練習可以考察學生對知識點的掌握情況,對代碼的熟練程度。</div>
<div style = vertical-align:top;text-align:left><h5><b>上機一:(考察知識點備份數據和還原數據)</b></h5></div>
<div style = color:black>請按照以下要求操作數據庫student</div>
<div style = color:black>要求如下:</div>
<div style = color:blue>1) 在chapter08數據庫中創建表student,設置id(int),name(varchar),age(int)三個字段,并插入3條數據。<br>
2) 將數據備份至C盤的backup文件夾下,文件名為chapter08_20150102.sql。<br>
3) 還原文件chapter08_20150102.sql中的數據。<br>
</div>
<div style = "vertical-align:top;text-align:center"><h4><b>第七課時</b></h4></div>
<div style = "vertical-align:top;text-align:center"><h5><b>(上機練習)</b></h5></div>
<div style = color:blue> 上機練習主要針對本章中需要重點掌握的知識點,以及在程序中容易出錯的內容進行練習,通過上機練習可以考察同學對知識點的掌握情況,對代碼的熟練程度。</div>
<div style = vertical-align:top;text-align:left><h5><b>上機一:(考察知識點為授予權限、查看權限、收回權限)</b></h5></div>
<div style = color:black>請按照以下要求操作用戶user2。</div>
<div style = color:black>要求如下:</div>
<div style = color:blue>1) 使用GRANT語句創建一個新用戶user2,其秘密為‘123’,并為user2用戶授權,使user2用戶對所有數據庫有INSERT、SELECT權限,并使用WITH GRANT OPTION子句。<br>
2) 使用SHOW GRANTS語句查看user2用戶的權限信息。<br>
3) 使用REVOKE ALL PRIVILEGES語句收回user2用戶的全部權限。<br>
</div>
</td>
</tr>
<tr>
<td width = 140px align = center><b>
思考題和習題</b>
</td>
<td colspan = 3>
</td>
</tr>
<tr>
<td width = 140px align = center><b>
教學后記
</b>
</td>
<td colspan = 3></td>
</tr>
</tbody>
</table>
? ? ? ?
? ? ?
? ? -