<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                <table> <tbody> <tr> <td width = 140px align = center><b>課題<br>名稱</b></td> <td >第6章 事務與存儲過程</td> <td> <div style = "vertical-align:top;text-align:center">計劃<br>學時</div></td> <td ><div style = "vertical-align:top;text-align:center">8 課時</div></td> </tr> <tr> <td width = 140px align = center><b>內容<br>分析</b></td> <td colspan=3>&nbsp;&nbsp;在數據庫開發過程中,經常會為了完成某一功能而編寫一組SQL語句。為了確保每一組SQL語句所做操作的完整性和重用性,MySQL中引入了事務和存儲過程,本章將針對事務與存儲過程進行詳細地講解。</td> </tr> <tr> <td width = 140px align = center ><b>教學目標<br>基本要求</b></td> <td colspan = 3> 1、了解事務的概念,會開啟、提交和回滾事務<br> 2、掌握事務的四種隔離級別<br> 3、學會創建存儲過程<br> 4、掌握調用、查看、修改和刪除存儲過程 </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> 1、事務的隔離級別<br> 2、變量的使用<br> 3、定義條件和處理程序<br> 4、光標的使用<br> 5、流程控制的使用 </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> <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>&nbsp;&nbsp;在現實生活中,我們經常會進行轉賬操作,轉賬可以分為兩部分來完成,轉入和轉出,只有這兩個部分都完成才認為轉賬成功,在數據庫中,這個過程是使用兩條語句來完成的,如果其中任意一條語句出現異常沒有執行,則會導致兩個賬戶的金額不同步,造成錯誤。如何防止上述情況的發生呢?為此MySQL中引入了事務,它可以使整個系統更加安全,保證在同一個事務中的操作具有同步性。</div> <div style= color:black>(2)明確學習目標</div> <div style = color:blue>&nbsp;&nbsp;1、要求學生了解什么事務以及事務的四個特性</div> <div style = color:blue>&nbsp;&nbsp;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>&nbsp;&nbsp;教師講解事務的概念,所謂的事務就是針對數據庫的一組操作,它可以由一條或多條SQL語句組成,同一個事務的操作具備同步的特點,如果其中<br> &nbsp;&nbsp; 教師講解事務管理中涉及到的事務開啟、提交和回滾操作,給出各自的SQL語句并解釋。為了簡單演示事務的三個操作,教師首先創建一個名為chapter06的數據庫,在庫中建立account表并插入相應數據,接著通過一個具體的案例演示先開啟一個事務,再通過UPDATE語句將a賬戶的100元錢轉給b賬戶,最后提交事務(可參見教材例6-1)。在講解完成之后,教師讓學生默寫出事務開啟、提交和回滾操作的SQL。<br> &nbsp;&nbsp;教師講解事務的四個特性,即原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability),并分別解釋各個特性的含義。 </div> <div style= color:black>(2)如何提交事務?</div> <div style = color:blue> &nbsp;&nbsp;教師講解提交事務相當于是事務中的用戶確認操作,當用戶確認提交后,事務中的操作才會執行成功,這個過程是手動提交的過程。為了說明事務的提交方式為手動提交,通過一個具體的案例來演示開啟事務不提交退出、開啟事務提交兩種情況,并比較兩種情況的執行結果。</div> <div style=color:black>(3)如何回滾事務?</div> <div style = color:blue>&nbsp;&nbsp;教師首先講解為什么要回滾事務,例如在操作一個事務時,如果發現當前事務中的操作是不合理的,此時只要還沒有提交事務,就可以通過回滾來取消當前事務。然后通過一個具體的案例演示事務的回滾操作,開啟一個事務,通過update語句將a賬戶的100元錢轉給b賬戶,但是不提交,而是執行ROLLBACK語句將事務回滾,查看回滾操作后的結果。</div> <div style = color:blue>&nbsp;&nbsp;</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>&nbsp;&nbsp;上節課講解了事務的概念以及事務的開啟、提交和回滾操作。本節課將講解事務的隔離級別,在MySQL中,事務有四種隔離級別,分別是READ UNCOMMITTED(讀未提交)、READ COMMITTED(讀提交)、REPEATABLE READ(可重復讀)、SERIALIZABLE(可串行化)。</div> <div style = color:black>(3)明確學習目標</div> <div style = color:blue> &nbsp;&nbsp;要求學生知道事務有哪4種隔離級別,掌握這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>&nbsp;&nbsp; 教師講解什么是臟讀,所謂臟讀就是指一個事務讀取了另外一個事務未提交的數據。<br> &nbsp;&nbsp;教師通過一個具體的案例演示臟讀問題的發生。首先開啟兩個命令行窗口分別模擬a賬戶和b賬戶,然后將B賬戶中事務的隔離級別設置為READ UNCOMMITTED(讀未提交),在事務中進行轉賬操作并提交,最后查看是否出現臟讀。作為比較,再將B賬戶中事務的隔離級別設置為read commited(讀提交),然后在事務中進行轉賬操作并提交,查看是否出現臟讀。 </div> <div style = color:black>(2)不可重復讀(NON-REPEATABLE READ)</div> <div style = color:blue>&nbsp;&nbsp; &nbsp;&nbsp; 教師講解什么是不可重復讀,所謂的不可重復讀是指事務中兩次查詢的結果不一致,原因是在查詢的過程中其他事務做了更新的操作。教師首先應給學生演示發生的不可重復讀現象,然后將事務的隔離級別改為REPEATABLE READ(可重復讀),最后驗證不可重復讀是否仍然出現。<br> </div> <div style = color:black>(3)幻讀(PHANTOM READ)</div> <div style = color:blue>&nbsp;&nbsp;教師講解什么是幻讀,所謂的幻讀又被稱為虛讀,是指在一個事務內兩次查詢中數據條數不一致,幻讀和不可重復讀有些類似,同樣是在兩次查詢過程中,不同的是,幻讀是由于其他事務做了插入記錄的操作,導致記錄數有所增加。教師首先應給學生演示發生的幻讀現象,然后將事務的隔離級別改為REPEATABLE READ,最后驗證幻讀是否仍然出現。 </div> <div style = color:black>(4)可串行化(SERIALIZABLE)</div> <div style = color:blue>&nbsp;&nbsp;教師講解什么是SERIALIZABLE,SERIALIZABLE是事務的最高隔離級別,它在每個讀的數據行上加上鎖,使之不可能相互沖突,因此會導致大量的超時現象。教師首先將事務的隔離級別改為SERIALIZABLE,然后給學生演示在該隔離級別下發生的可串行化現象,最后驗證幻讀是否仍然出現。 </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>&nbsp;&nbsp;存儲過程就是一條或多條SQL語句的集合,當對數據庫進行一系列復雜操作時,存儲過程可以將這些復雜操作封裝成一個代碼塊,以便重復使用,大大減少數據庫開發人員的工作量。本節課將針對如何創建存儲過程及創建存儲過程時需要用到的變量等進行詳細地講解。</div> <div style = color:black>(3)明確學習目標</div> <div style = color:blue>&nbsp;&nbsp;1、要求學生掌握如何創建存儲過程、變量的使用</div> <div style = color:blue>&nbsp;&nbsp;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>&nbsp;&nbsp; 教師首先講解創建存儲過程的語法,對語法格式進行分析,然后根據語法格式,通過一個具體的案例來演示如何創建存儲過程(可參見教材例6-2)。在案例演示前,教師需先做好準備工作,在chapter06數據庫中創建student表并插入相應的數據。最后對案例進行解釋,并對案例中DELIMITER語句進行詳細講解。 </div> <div style = color:black>(2)存儲過程中變量的使用</div> <div style = color:blue>&nbsp;&nbsp; &nbsp;&nbsp; 教師講解存儲過程中變量的作用范圍,在MySQL中,變量可以在子程序中聲明并使用,這些變量的作用范圍是在BEGIN…END程序中。<br> &nbsp;&nbsp;教師首先講解存儲過程中定義變量的語法格式,并對語法格式中涉及的內容進行講解。然后根據定義變量的語法格式,編寫一段示例代碼。<br> &nbsp;&nbsp;教師首先講解存儲過程中為變量賦值的語法格式,并對語法格式中涉及的內容進行講解。然后根據定義變量的語法格式,編寫一段示例代碼。為變量賦值的方式,除了set之外,MySQL中還可以通過SELECT…INTO為一個或多個變量賦值,教師講解SELECT…INTO的語法格式,并通過一個案例演示它的使用(可參見教材例6-3)。 </div> <div style = color:black>(3)定義條件和處理程序</div> <div style = color:blue>&nbsp;&nbsp;教師講解在存儲過程中定義條件,首先講解定義條件的語法格式,對語法格式進行分析,然后通過一個具體的案例演示用兩種不同的方法來定義錯誤(可參見教材例6-4)。<br> &nbsp;&nbsp;教師講解在存儲過程中定義處理程序,首先講解定義處理程序的語法格式,對語法格式進行分析,然后通過一個具體的案例演示用兩種不同的方法來定義錯誤(可參見教材例6-5)。最后教師再通過一個定義條件和處理程序的綜合案例演示如何定義條件和處理程序(可參見教材例6-6)。 </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>&nbsp;&nbsp;上節課講解了創建存儲過程、變量的使用、定義條件和處理程序,本節課將講解光標和流程控制的使用。</div> <div style = color:black>(3)明確學習目標</div> <div style = color:blue>&nbsp;&nbsp; 1、要求學生掌握光標的使用</div> <div style = color:blue>&nbsp;&nbsp;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>&nbsp;&nbsp; 教師首先講解什么是光標,光標有什么作用。然后分別針對光標的聲明、光標的使用、光標的關閉進行詳細地講解。<br> &nbsp;&nbsp;講解光標的聲明時,首先提醒學生注意光標必須聲明在聲明變量、條件之后,聲明處理程序之前。然后講解光標的語法格式,對語法格式進行分析,最后根據語法格式編寫一段示例代碼,以便讓學生更容易掌握。<br> &nbsp;&nbsp; 講解光標的使用時,首先提醒學生使用光標之前首先要打開光標。然后講解光標的語法格式,對語法格式進行分析,最后根據語法格式編寫一段示例代碼,以便讓學生更容易掌握。 &nbsp;&nbsp;講解光標的關閉時,由于關閉的語法比較簡單也很容易理解,直接寫出語法格式“CLOSE cursor_name”,給學生簡單解釋其中的“cursor_name”表示光標名即可 </div> <div style = color:black>(2)流程控制的使用</div> <div style = color:blue>&nbsp;&nbsp;教師首先講解流程控制語句用于將多個SQL語句劃分或組合成符合業務邏輯的代碼塊。MySQL中的流程控制語句包括:IF語句、CASE語句、LOOP語句、WHILE語句、LEAVE語句、ITERATE語句、REPEAT語句和WHILE語句。然后分別針對這些語句進行一一講解,按照先講解語法格式,再通過示例代碼或案例演示的方式,在講解的過程中,教師還應該提醒學生注意每個知識點的重點內容。 </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 = 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>&nbsp;&nbsp;通過前面課時的學習,我們已經能夠定義一個完整的存儲過程了。使用存儲過程可以使程序執行效率更高、安全性更好,增強程序的可重用性和維護性。</div> <div style = color:black>(3)明確學習目標</div> <div style = color:blue>&nbsp;&nbsp; 1、要求學生掌握如何調用、修改和刪除存儲過程</div> <div style = color:blue>&nbsp;&nbsp;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>&nbsp;&nbsp; 教師首先講解調用存儲過程的語法格式,語法格式具體如下:<br> </div> ~~~ CALL sp_name([parameter[,…]]) ~~~ <div style = color:blue>&nbsp;&nbsp;然后對上述語法格式進行解釋說明,比如sp_name為存儲過程的名稱,parameter為存儲過程的參數,最后通過一個案例演示存儲過程的調用(可參見教材例6-12)。</div> <div style = color:black>(2)如何查看存儲過程?</div> <div style = color:blue>&nbsp;&nbsp; 查看存儲過程的方式有三種,具體如下: <li>通過SHOW STATUS語句查看存儲過程的狀態</li> <li>通過SHOW CREATE語句查看存儲過程的狀態</li> <li>從information_schema.Routines表中查看存儲過程的信息 在講解查看存儲過程的三種方式時,應該遵循首先講解其語法格式,對語法格式進行詳細地解釋說明,然后通過具體的案例演示的教學方式來講解,在最后教師還應該對每種查看方式的使用進行一個總結,并提醒學生在學習過程中需要注意的東西。 </div> <div style = color:blue>(3)如何修改存儲過程?</div> <div style = color:blue>&nbsp;&nbsp;教師首先講解修改存儲過程的語法格式,語法格式具體如下:</div> ~~~ ALTER {PROCEDURE|FUNCTION} sp_name[characteristic…] ~~~ <div style = color:blue>&nbsp;&nbsp;然后對上述語法格式進行解釋說明,比如sp_name表示存儲過程或函數的名稱;characteristic表示要修改存儲過程的哪個部分,其中characteristic的取值只需要學生了解,最后通過一個案例演示如何修改存儲過程(可參見教材例6-15)。</div> <div style = color:blue>(4)如何刪除存儲過程?</div> <div style = color:blue>&nbsp;&nbsp;教師首先講解刪除存儲過程的語法格式,語法格式具體如下:</div> ~~~ DROP{ PROCEDURE|FUNCTION }[IF EXISTS] sp_name ~~~ <div style = color:blue>&nbsp;&nbsp;然后對上述語法格式進行解釋說明,比如sp_name 為要移除的存儲過程的名稱。IF EXISTS表示如果程序不存在,它可以避免發生錯誤,產生一個警告。最后通過一個案例演示如何刪除存儲過程(可參見教材例6-16)。</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>&nbsp;&nbsp;要求學生熟悉在實際開發中,創建并使用存儲過程的完整過程</div> <div style = vertical-align:top;text-align:left><h5><b>二、進入重點知識點的講解</b></h5></div> <div style = color:black>(1)在實際開發中,存儲過程怎樣應用?</div> <div style = color:blue>&nbsp;&nbsp;教師首先應該做好準備工作,在chapter06數據庫中創建一個stu表,并向表中添加數據。然后創建一個存儲過程addcount,該存儲過程能夠獲取表stu中的記錄數和id的和。教師在編寫存儲過程addcount時,先提問學生編寫的思路,讓學生帶著思考來聽接下來的教師講解過程。最后教師逐行編寫創建addcount存儲過程的代碼,邊編寫邊解釋。<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 = color:blue>&nbsp;&nbsp;上機練習主要針對本章中需要重點掌握的知識點,以及在程序中容易出錯的內容進行練習,通過上機練習可以考察同學對知識點的掌握情況,對代碼的熟練程度。</div> <div style = vertical-align:top;text-align:left><h5><b>上機一:(考察知識點為光標的使用)</b></h5></div> <div style = color:black>請按照以下要求創寫出光標使用的語法格式</div> <div style = color:black>要求如下:</div> <div style = color:blue>1) 聲明光標<br> 2) 打開光標,使用光標<br> 3) 關閉光標 </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>&nbsp;&nbsp;上機練習主要針對本章中需要重點掌握的知識點,以及在程序中容易出錯的內容進行練習,通過上機練習可以考察同學對知識點的掌握情況,對代碼的熟練程度。</div> <div style = vertical-align:top;text-align:left><h5><b>上機一:(考察知識點為創建存儲過程和存儲過程中變量的使用)</b></h5></div> <div style = color:black>請按照以下要求編寫一個存儲過程。</div> <div style = color:black>要求如下:</div> <div style = color:blue>1) 創建一個名為proc_add存儲過程用于實現兩個數相加<br> 2) 存儲過程proc_add有兩個輸入參數,分別為a和b,均表示加數<br> 3) 定義一個變量c,用于接收兩數相加的結果<br> 4) 當調用該存儲過程時,能夠輸出c的值 </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> ? ? ? ? ? ? ? ? ? -
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看