第一篇:Visual Foxpro數(shù)據(jù)庫教學(xué)方法探討
Visual Foxpro數(shù)據(jù)庫教學(xué)方法探討
VFP數(shù)據(jù)庫應(yīng)用基礎(chǔ)課程是中等職業(yè)學(xué)校計算機專業(yè)的一門重要基礎(chǔ)課程??梢允箤W(xué)生掌握一種較先進的數(shù)據(jù)庫應(yīng)用知識,進一步學(xué)會對數(shù)據(jù)庫的操作能力和用一種數(shù)據(jù)庫語言進行程序設(shè)計的方法,培養(yǎng)學(xué)生具有利用軟件開發(fā)環(huán)境解決實際問題的能力,為進一步學(xué)習(xí)其它計算機知識及今后使用或開發(fā)計算機應(yīng)用程序奠定基礎(chǔ)。
VFP教學(xué)從開始到結(jié)束都是都在講解同一個問題——如何把各種日常管理信息用計算機未進行管理。而這種形式的課程是學(xué)生以前從沒有接觸過的,他們還是帶著過去的學(xué)習(xí)方式來學(xué)習(xí)VFP數(shù)據(jù)庫程序設(shè)計的內(nèi)容,結(jié)果是每節(jié)課的學(xué)習(xí)目標不明確,在頭腦中很難建立起“系統(tǒng)開發(fā)”的整體概念。致使學(xué)生很難掌握數(shù)據(jù)庫領(lǐng)域內(nèi)的實踐動手能力、分析問題解決問題的能力和崗位職業(yè)技能。
作者在承擔(dān)VFP課程的教學(xué)任務(wù)時,對該課程進行了認真的分析上述問題產(chǎn)生的原因,主要問題還是由于教師在教學(xué)過程設(shè)計上存在一定的問題,在組織教學(xué)過程中沒能給學(xué)生建立起一個完整的學(xué)習(xí)目標框架。
如何能讓學(xué)生只有帶著明確的學(xué)習(xí)目標來完成每一節(jié)課的學(xué)習(xí),這是教師首先應(yīng)該考慮的問題。經(jīng)過認真的分析,作者認為VFP教學(xué)中采取以“案例式”為主的課堂教學(xué)方式,選取學(xué)生熟悉的內(nèi)容作為課堂以實驗用的實例——“學(xué)生成績管理系統(tǒng)”和,進一步提高學(xué)生的學(xué)習(xí)興趣,降低學(xué)習(xí)難度,從而提高課堂教學(xué)質(zhì)量,收到良好的教學(xué)效果。
所謂案例教學(xué)法,就是以對案例的分析解決為主線,通過對案例中的問題進行分析,激發(fā)學(xué)生的求知欲,調(diào)動學(xué)生的積極性,使學(xué)生自覺主動地學(xué)習(xí)案例,掌握原理和方法,實行科學(xué)的教育思想觀念的一種教學(xué)方式。它是一種互動式的教學(xué)方法,可以實現(xiàn)啟發(fā)式教學(xué),能夠極大地促進學(xué)生的學(xué)習(xí)興趣,實現(xiàn)真正的教學(xué)相長。它更是實現(xiàn)理論聯(lián)系實際的現(xiàn)實可行的途徑。通過案例分析,學(xué)生可以獲得蘊涵其中的那些已形成的教育原理、教學(xué)方法等知識,同時可以提高和發(fā)展學(xué)生的創(chuàng)造能力以及解決實際問題能力。更重要的是,通過案例教學(xué)獲得的知識是內(nèi)化了的知識,是“做中學(xué)”,獲得自己理解了的能駕馭的知識,不再像傳統(tǒng)教學(xué)下獲得的抽象的、過度概括化的生硬知識,它能立即被用到類似教學(xué)實踐情境中去解決處理類似的疑難教學(xué)問題。
在還沒有開始講解課程內(nèi)容之前,教師自己創(chuàng)作一個完整的管理系統(tǒng)實例,開始上課時,由教師對系統(tǒng)提出功能需求。等實例演示結(jié)束,教師明確指出,剛剛演示的系統(tǒng),就是VFP將要完成的學(xué)習(xí)任務(wù)。它要完成的是一個完整的信息管理系統(tǒng)。通過對實例的實際操作后,學(xué)生們會對使用“ VFP數(shù)據(jù)庫程序設(shè)計”開發(fā)的信息管理系統(tǒng)產(chǎn)生感性認識,同時也會對VFP課程產(chǎn)生學(xué)習(xí)的興趣。將演示的系統(tǒng)逐一進行分解,讓學(xué)生看清楚整個系統(tǒng)是由哪幾部分組成。最后對分析的結(jié)果進行歸納總結(jié),便可得出結(jié)論:一方面是基礎(chǔ)數(shù)據(jù)的存儲,一方面是對基礎(chǔ)數(shù)據(jù)的操作。此時,教師便可以進行正確的引導(dǎo),闡明VFP課程學(xué)習(xí)需要從始至終未完成一個小型管理系統(tǒng)的制作。
在VFP課堂教學(xué)過程中,以一個學(xué)生較熟悉的系統(tǒng)“學(xué)生成績管理系統(tǒng)”為例貫穿在整個教學(xué)實施過程中作為教學(xué)實例;適當(dāng)結(jié)合其他教學(xué)方法來完成每一節(jié)課的教學(xué)。既把實例中整個“學(xué)生成績管理系統(tǒng)”的分解結(jié)果,應(yīng)用到每一節(jié)課的教學(xué)中之。在講解新課之前,首先給學(xué)生演示本節(jié)課將要制作的實例,讓對學(xué)習(xí)的內(nèi)容有一個直觀的感性認識,然后引入新課內(nèi)容。
實際上,一個數(shù)據(jù)庫管理系統(tǒng)設(shè)計與實現(xiàn)的過程就是不斷分解任務(wù)的過程。例如,在學(xué)生管理系統(tǒng)中,教師可以引導(dǎo)學(xué)生通過聯(lián)系實際不斷地提出這樣的問題:班級成績管理需要管理學(xué)生的成績,包括成績的錄入、成績的修改、成績的查詢、成績的備份、成績的刪除等功能;另外,班級的人數(shù)有變化時也得體現(xiàn),比如有學(xué)生退學(xué)了或進了新的同學(xué)等,因此還必須有學(xué)生人數(shù)的增加、查詢、修改以及刪除等功能;在使用過程中有時需要打印表格的需求,所以還得有打印的功能;如果該系統(tǒng)規(guī)定專人負責(zé),還需要規(guī)定用戶名和登錄密碼,體現(xiàn)保密性等等。經(jīng)過這樣的分析,可以出來一個基本功能框架。
所有的基本內(nèi)容講解之后,留出足夠的時間,由教師帶領(lǐng)學(xué)生一起,按照系統(tǒng)開發(fā)的標準步驟,來完成一個“職工信息管理系統(tǒng)”的開發(fā),讓學(xué)生清晰地學(xué)會系統(tǒng)開發(fā)的完整過程。
通過這樣一種“學(xué)習(xí)—實踐—提高”的過程,讓學(xué)生理解數(shù)據(jù)庫的基本概念、理論和技術(shù),同時也掌握了一個簡單的數(shù)據(jù)庫應(yīng)用系統(tǒng)從分析、設(shè)計到實現(xiàn)的完整開發(fā)過程,真正做到學(xué)以致用。在VFP教學(xué)中采用實例教學(xué),創(chuàng)設(shè)情景,激發(fā)動機,以實例開發(fā)作為教學(xué)的切入點,馬上引出問題,馬上讓學(xué)生研究問題與分析問題,最終解決問題。這樣做,打破了傳統(tǒng)教學(xué)概念、命令、程序一條線的教學(xué)安排,能夠提高學(xué)生的學(xué)習(xí)興趣,進而調(diào)動起他們主動學(xué)習(xí)新知識、探索新方法的積極性,也加深了他們對相關(guān)知識點的理解,為今后更加深入的學(xué)習(xí)打下良好基礎(chǔ),使學(xué)生對整個課程的學(xué)習(xí)進入良心循環(huán)的軌道。
本教案以學(xué)生較熟悉的“學(xué)生選課系統(tǒng)”為貫穿始終的教學(xué)實例,以關(guān)系數(shù)據(jù)庫理論為指導(dǎo),通過循序漸進的講解、演示和實驗,讓學(xué)生理解數(shù)據(jù)庫的基本概念、理論和技術(shù),掌握一個簡單的數(shù)據(jù)庫應(yīng)用系統(tǒng)從分析、設(shè)計到實現(xiàn)的完整開發(fā)過程,從而實現(xiàn)理論與實踐的結(jié)合。
以上是作者在VFP課程實際教學(xué)中實施改革的具體做法,收到了一定的成效,總體上學(xué)生的學(xué)習(xí)質(zhì)量有了明顯的提高,部分學(xué)生已能夠獨立完成小型應(yīng)用系統(tǒng)的開發(fā)。在今后的教學(xué)中,作者還會繼續(xù)努力,針對不同層次的學(xué)生,還需要做更進一步的探索。
參考文獻:
第二篇:SQL Server 數(shù)據(jù)庫教學(xué)方法實踐淺析
SQL Server 數(shù)據(jù)庫教學(xué)方法實踐淺析
href=“#”> [摘 要]SQL Server數(shù)據(jù)庫課程是計算機專業(yè)的基礎(chǔ)課程,其教學(xué)難度大。若采用原先的教學(xué)辦法,學(xué)生不能有效接受,教師教時也很困難。所以,我們需要采用新的項目組教學(xué)方法來教授學(xué)生,以期達到預(yù)定的教學(xué)效果。 [關(guān)鍵詞]SQL Server;項目組;實踐 [中圖分類號]G642 [文獻標識碼]A [文章編號]1005-6432(2010)31-0163-01 教學(xué)方法設(shè)計原則 1.1 理論與項目的實踐有效地結(jié)合起來 數(shù)據(jù)庫的理論較為嚴謹,學(xué)生學(xué)習(xí)起來的難度很大,而且其用語很專業(yè),讓學(xué)生感到生澀難懂,教師的教學(xué)效果也不甚理想。為使學(xué)生在日后的工作中可以自己完成相關(guān)的項目系統(tǒng)分析和設(shè)計工作,并可以融會貫通,使學(xué)生在學(xué)校所學(xué)的理論知識與數(shù)據(jù)庫的理論知識相結(jié)合是構(gòu)建這一教學(xué)目的的基礎(chǔ)。讓理論的學(xué)習(xí)在項目實施的過程逐步推進,可以讓學(xué)生更有質(zhì)感,對相關(guān)的概念與理論也能夠有效地結(jié)合起來,記憶的效果會很好。不但可以讓學(xué)生對數(shù)據(jù)庫的學(xué)習(xí)效果更加的理想,而且對于學(xué)生今后在工作中能夠理論聯(lián)系實際也有較大益處。例如我們在講解某個數(shù)據(jù)庫的具體管理時,就在這當(dāng)中加入一些數(shù)據(jù)庫的基本知識,這樣學(xué)生掌握得也會較為牢靠。 1.2 在課程內(nèi)加入可視化編程語言的內(nèi)容 在數(shù)據(jù)庫的開發(fā)當(dāng)中,編程語言一般作為系統(tǒng)的前臺,但同時也是一個連接數(shù)據(jù)庫時無法回避的問題。以前的教學(xué)內(nèi)容設(shè)計的不盡合理,數(shù)據(jù)庫與編程語言的內(nèi)容沒有很好地聯(lián)系起來,而是相互割裂與分離的。我們嘗試將這二者放在一起學(xué)習(xí),并在同一個項目中同時學(xué)習(xí)這二者的內(nèi)容。例如我們在SQL Server課中所采用的學(xué)生管理項目。我們可以讓學(xué)生在學(xué)習(xí)可視化編程語言中試著利用自己所學(xué)的可視化編程語言來為學(xué)生管理項目設(shè)計符合自己要求的前臺界面,并能與后臺的數(shù)據(jù)庫建立起有效的鏈接。通過這樣的教學(xué)過程,學(xué)生對二者之間內(nèi)容的掌握可以較為熟稔,學(xué)生學(xué)習(xí)的積極性也會被充分的調(diào)動起來。 1.3 以團隊形式進行項目開發(fā) 學(xué)生在初步掌握了SQL Server之后,我們可以考慮讓學(xué)生以3~5人為一個小組作為研發(fā)的團隊,相互開展工作配合,讓他們自己來研發(fā)數(shù)據(jù)庫的應(yīng)用。這樣對于學(xué)生之間的相互配合、團結(jié)協(xié)作能力的提升有一定的促進作用,而且學(xué)生能夠自己去查詢相關(guān)的資料來研究,對他們的學(xué)習(xí)精神也是一種促進。在規(guī)定的時間到來后,各小組將研發(fā)成果上交。這樣較為規(guī)范、嚴謹?shù)难邪l(fā)程序?qū)τ趯W(xué)生日后的工作習(xí)慣的養(yǎng)成也是一個良好的開端。 1.4 確定科學(xué)的核定標準 以往我們考試大部分采用書面的形式。在實施項目教學(xué)以后發(fā)現(xiàn)如果還是采用書面考試的形式則不能有效地反映出教學(xué)的漏洞,所以讓學(xué)生上交自己的研發(fā)作品作為考試的內(nèi)容。只要學(xué)生能夠解決問題即可,但必須是自己獨立完成的。這樣,學(xué)生的實際操作能力可以有效地培養(yǎng)出來。數(shù)種教學(xué)方法的合并使用 2.1 項目教學(xué)法 以項目為主體,讓教學(xué)圍繞這個項目而展開。先教授一定的理論知識作為今后學(xué)習(xí)的基礎(chǔ),隨后通過對理論的講解并結(jié)合該項目的具體實際給出正確的結(jié)論與方案。學(xué)生在練習(xí)的初期會充滿新鮮感,通過我們的耐心講解學(xué)生方能滿足要求并開發(fā)出系統(tǒng)。這樣就可以做到在知曉理論的基礎(chǔ)上去重新理解這個理論并延續(xù)這個理論。 2.2 團隊合作學(xué)習(xí)的方法 項目的開發(fā)并不是依靠一個人單槍匹馬就能夠完成的,而是需要一個團隊來通力合作完成。我們在教學(xué)的過程中,要注重學(xué)生的創(chuàng)新與團隊合作精神的培養(yǎng)。在教授SQL Server數(shù)據(jù)庫管理系統(tǒng)中,我們讓學(xué)生組成一個個團隊,并以團隊的形式來學(xué)習(xí)和開發(fā)管理系統(tǒng)。這樣,學(xué)生在學(xué)習(xí)的過程中不但可以養(yǎng)成相互配合的工作習(xí)慣還可以印證自己的所學(xué)。每個項目組要有一個組長,主要是組織組內(nèi)的成員探討問題。團隊中的每一個成員都要完成自己所負責(zé)的工作內(nèi)容。在此期間,我們需要主動地去引導(dǎo)學(xué)生完成工作。對于學(xué)生當(dāng)中出現(xiàn)的各種情況,我們需要及時地跟進解決。我們可以幫助學(xué)生創(chuàng)建符合本項目組的學(xué)習(xí)計劃。對學(xué)生的學(xué)習(xí)情況和項目開發(fā)的實際情況有效地掌握。這樣對于我們教學(xué)目標的實現(xiàn)是極為有力的。 參考文獻: [1]王珊.面向21世紀數(shù)據(jù)庫課程教學(xué)改革[J].中國大學(xué)教學(xué),2006(4).[2]龔沛曾.大學(xué)計算機基礎(chǔ)課程體系建設(shè)與教學(xué)改革實踐[R].西安:2005首屆大學(xué)計算機基礎(chǔ)課程報告論壇,2005-??11-??15. [摘要]本文結(jié)合多媒體手段、課程特點和創(chuàng)新理念,分析了數(shù)據(jù)庫知識領(lǐng)域的教學(xué)手段、特點和重要性,并提出了加大實踐環(huán)節(jié)、使用創(chuàng)新理念和情景模式的教學(xué)方法,以進行詳細探討。 [關(guān)鍵詞]數(shù)據(jù)庫 多媒體 教學(xué)方法 創(chuàng)新理念 一、引言 數(shù)據(jù)庫系統(tǒng)原理是一門應(yīng)用性很強的課程,既有理論也有實踐。作為信息系統(tǒng)的核心和基礎(chǔ)得到越來越廣泛的應(yīng)用。學(xué)好這門知識,對未來發(fā)展有著極其重要的作用,但傳統(tǒng)的灌輸式、填鴨式的教學(xué)方法只注重基本概念和語法知識的講解,忽視學(xué)以致用的原則,讓學(xué)生感到內(nèi)容雜亂,知識零碎,難以形成體系,既不知道有何作用,更不知道如何去應(yīng)用,以致失去學(xué)習(xí)的興趣,如何使數(shù)據(jù)庫的基礎(chǔ)知識、基本技能與現(xiàn)代數(shù)據(jù)庫技術(shù)相結(jié)合,并真正使學(xué)生運用所學(xué)的數(shù)據(jù)庫理論知識和技術(shù)來解決實際問題,以達到學(xué)以致用、提高教學(xué)質(zhì)量的目的,就成了該課程教學(xué)的重要任務(wù)和教學(xué)目標。 二、教學(xué)方法的創(chuàng)進 1.運用多媒體輔助教學(xué) 計算機和網(wǎng)絡(luò)技術(shù)的發(fā)展,為編程語言類課程的教學(xué)提供了良好的操作平臺,以計算機技術(shù)為核心的現(xiàn)代化教學(xué)手段被廣泛運用在課堂教學(xué)中。多媒體教學(xué)通過對學(xué)習(xí)資源的開發(fā),優(yōu)化了教學(xué)過程,最大限度地減少教學(xué)時間的無效耗損,增加課堂教學(xué)內(nèi)容的信息量和知識的密度以及能力訓(xùn)練的頻度。為此,我們根據(jù)教材內(nèi)容和教學(xué)要求精心編制了教學(xué)課件,并應(yīng)用于教學(xué)。需要注意的是,在多媒體教學(xué)中,教學(xué)主體并沒有改變。因此,要始終把握好學(xué)生在教學(xué)過程中的主體地位,并發(fā)揮教師的主導(dǎo)作用,而不能以課件為主。此外,由于多媒體教學(xué)具有信息量大、呈現(xiàn)快速、表現(xiàn)直觀、操作簡便等特點,這就容易導(dǎo)致師生依賴熒屏展現(xiàn),從而忽視了教學(xué)的策略、方法,忽視了教學(xué)的難點與重點,忽視了學(xué)生的感受與反應(yīng)以及同他們的情感交流。這樣,就不容易使學(xué)生真正掌握課堂教學(xué)的內(nèi)容。 實踐證明,要利用多媒體輔助教學(xué)并達到最佳的教學(xué)效果,首先就必須樹立現(xiàn)代化的教育觀,做到以學(xué)生為主體、為中心,并培養(yǎng)他們獨立獲取知識、發(fā)現(xiàn)創(chuàng)新知識的能力,把創(chuàng)新能力的培養(yǎng)放在重要的地位。此外,還要利用指導(dǎo)法教學(xué)、“啟發(fā)”式教學(xué)來體現(xiàn)“以教師為主導(dǎo),以學(xué)生為主體”的教學(xué)原則,從而使教師真正成為學(xué)習(xí)的組織者和引導(dǎo)者。 2.理論與任務(wù)相結(jié)合教與學(xué)本身就是一個互動的過程,因此,教師應(yīng)經(jīng)常了解學(xué)生在學(xué)習(xí)中碰到的困難,并及時反饋到教學(xué)中。此外,還應(yīng)配以適量的練習(xí),使學(xué)生舉一反三,這樣,就能增加他們學(xué)好數(shù)據(jù)庫這門課的信心,并激發(fā)學(xué)習(xí)的興趣。比如,在實踐教學(xué)環(huán)節(jié)中實施仿真項目,加大技能培養(yǎng)力度,把仿真項目貫穿于平時的實驗課和課程設(shè)計中,要求學(xué)生3—4人左右一組完成一個比較完整的數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計與開發(fā),所設(shè)計的系統(tǒng)由任課教師、實驗指導(dǎo)教師和各組選出的組長進行檢查、提問,并分別打分,從而激發(fā)各組學(xué)生之間的競爭意識和團隊意識,促進學(xué)生將理論學(xué)習(xí)與能力培養(yǎng)緊密結(jié)合。 3.重視實踐環(huán)節(jié) 數(shù)據(jù)庫課程除了可以在理論教學(xué)中借助實際的數(shù)據(jù)庫實例進行解釋外,還必須通過實驗的手段來實現(xiàn)。從教學(xué)角度來講,理論知識要經(jīng)過實踐檢驗后,才能使學(xué)生真正理解和掌握。在實踐教學(xué)中,應(yīng)培養(yǎng)學(xué)生自主學(xué)習(xí)和創(chuàng)新精神,提高學(xué)生分析問題,解決問題的能力,提高學(xué)生工程設(shè)計的能力,使學(xué)生系統(tǒng)掌握一種工程設(shè)計的方法,為后續(xù)課程的學(xué)習(xí)打下了良好基礎(chǔ)。通常采用布置一個大實驗,分步完成的做法,使學(xué)生對前部分的知識通過實驗綜合掌握,對下一步可以通過預(yù)習(xí)等方式了解知識,課堂上老師再把工程設(shè)計的方法教給學(xué)生,重點要分析如何進行需求分析、概念結(jié)構(gòu)設(shè)計和邏輯結(jié)構(gòu)設(shè)計。在本門實驗課程完成時,不僅使學(xué)生掌握了一門知識,也使學(xué)生完成了一個綜合設(shè)計,更使學(xué)生系統(tǒng)掌握了一種工程設(shè)計的方法。這種教學(xué)方式,使學(xué)生對知識的掌握實現(xiàn)了二次飛躍,在進行單元實驗時,學(xué)生通過設(shè)計軟件把所學(xué)的理論知識描述一下,這是第一次飛躍,在進行下一步乃至完成大實驗的時候,學(xué)生要把前續(xù)實驗的有關(guān)知識進行綜合,實現(xiàn)第二次飛躍。 4.采用互動模式 傳統(tǒng)“滿堂灌”式的教學(xué)方法,容易造成課堂氣氛沉悶,效果不佳。大學(xué)生思維活躍,采用互動式可以提高學(xué)生的積極性,活躍他們的思維,達到良好效果。互動式我們是采用兩個方面,一個方面是學(xué)生可以隨時自由提問,對于帶普遍性的問題和有典型意義的問題,教師課堂隨時回答講解,但對于個別學(xué)生存在的問題、沒有普遍性的,課后單獨回答,以免影響教學(xué)進度。另一方面是課前老師精心設(shè)置問題,設(shè)置的問題要針對容易出錯的知識點,使學(xué)生思考后,有茅塞頓開的感悟,否則互動只能使課堂有說有笑,難得到達應(yīng)有的效果。 5.改革考試方式 在考試方法上,打破傳統(tǒng)的期末單獨筆試的考試方法,制定合理的考核方案,采用開卷、閉卷、實際操作式等多種考試方法,增加平時考核次數(shù)和期末上機測試環(huán)節(jié),從只考理論知識,到注重過程考核和綜合能力測試,促進學(xué)生知識的積累,避免學(xué)生考前突擊和死記硬背現(xiàn)象。如在數(shù)據(jù)庫原理的考核上,除了原理部分采用常規(guī)的考試外,還可對學(xué)生的實驗環(huán)節(jié)、課程設(shè)計環(huán)節(jié)進行考核。比如采用常規(guī)理論考試占50%,實驗成績占25%,課程設(shè)計成績占25%。采用這種形式考核學(xué)生的知識掌握程度和實踐能力,能引導(dǎo)和督促學(xué)生平時多動手,多鍛煉,同時也可提高學(xué)生的綜合素質(zhì)。 三、結(jié)束語 隨著信息技術(shù)的發(fā)展和教學(xué)理念、方法的轉(zhuǎn)變,對于數(shù)據(jù)庫知識領(lǐng)域的教學(xué)方法和模式已遠遠不限于以上內(nèi)容。教師除了要做到因人而異、因材施教外,還要博覽群書、拓寬視野、擴大交流、并充分利用網(wǎng)絡(luò)信息手段,以努力尋求新的切入點,從而使理論教學(xué)和實際應(yīng)用更好、更緊密地結(jié)合起來,并培養(yǎng)出更多適應(yīng)信息化社會的實用型和復(fù)合型人才。 參考文獻: [1]李華.數(shù)據(jù)庫教學(xué)淺析.計算機教育,2007.32-34.[2]董鋼.非計算機專業(yè)數(shù)據(jù)庫課程改革.中國期刊網(wǎng),2009-6-23. 實驗一 PowerDesigner 的 CDM 應(yīng)用 1:實驗?zāi)康?/p> 使用PowerDesinger進行數(shù)據(jù)庫概念模型設(shè)計,掌握CDM中的實體、實體屬性、實體與實體之間聯(lián)系的操作方法。2:實驗內(nèi)容 建立一個“實驗一練習(xí)”命名的Conceptual Data Model(CDM)文件,其中應(yīng)包括的實體、實體的屬性及實體之間的聯(lián)系。3:實驗結(jié)果 4.實驗心得 初次接觸數(shù)據(jù)庫原理實驗,相對來說還是比較陌生,但老師講解還相對比較清楚,并且實驗報告寫的十分清楚,只是遇到多建立了一個實體而無法刪除的問題,通過同學(xué)的幫助也解決了,相對來說第一次實驗還是比較順利的。 實驗二 PowerDesigner 的 PDM 應(yīng)用 1.實驗?zāi)康?/p> 用PowerDesinger的工具將CDM生成PDM過程,熟悉PDM工作區(qū),為生成數(shù)據(jù)庫中的物理的表打下基礎(chǔ)。完成這個實驗后,應(yīng)該能夠了解從CDM到PDM的轉(zhuǎn)換過程,熟悉PowerDesinger的PDM工作區(qū),使用工具選項板進行PDM對象設(shè)計。 2.實驗內(nèi)容 從CDM生成PDM,設(shè)計結(jié)束后,利用PowerDesigner的“生成數(shù)據(jù)庫”功能,產(chǎn)生數(shù)據(jù)庫中各數(shù)據(jù)對象的定義,再運行MySQL的命令行客戶端軟件,打開test數(shù)據(jù)庫,運行crebas.sql,同時進行中英文的轉(zhuǎn)換,最后運行show tables命令查看表。 3.實驗結(jié)果 4.實驗心得 經(jīng)過本次實驗,學(xué)會了用PowerDesinger的工具將CDM生成PDM過程,并且利用crebas.sql進行中英文的轉(zhuǎn)換,最后利用show tables命令查看表,受益匪淺。 實驗 三Navicat for MySQL的使用和SQL語言數(shù)據(jù)定義語言DDL 1.實驗?zāi)康?/p> 了解Navicat for MySQL的啟動,熟悉如何在Navicat for MySQL下配置數(shù)據(jù)庫聯(lián)接。了解DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,學(xué)會在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動 2.實驗內(nèi)容 1.啟動Navicat for MySQL。 2.在MySQL–新建連接中完成連接參數(shù)配置,并完成連接測試和保存連接參數(shù)。3.查看mysql數(shù)據(jù)庫的help_category表的定義、表中數(shù)據(jù)與索引、完整性約束等。4.查看mysql數(shù)據(jù)庫的其它數(shù)據(jù)庫對象,如視圖、索引、存儲過程、函數(shù)、觸發(fā)器。5.在Navicat for MySQL中打開查詢,新建查詢,運行簡單的SQL語句,如select * from help_keyword where help_keyword_id<=3;觀察下結(jié)果。3.實驗結(jié)果 4.實驗心得 使用navicat for MySQL連接數(shù)據(jù)庫的時候,不能正常連接到數(shù)據(jù)庫,出現(xiàn)“access denied for user’root@’localhost”的錯誤提示,經(jīng)過查找發(fā)現(xiàn)是MySQL沒有正確安裝,重裝之后就可以正常的訪問數(shù)據(jù)庫,在本次實驗中也學(xué)會了Navicat for MySQL的基礎(chǔ)的查詢使用以及簡單的SQL語句的運行。 實驗 四 SQL語言數(shù)據(jù)定義語言DDL 1:實驗?zāi)康?/p> 本次實驗了解SQL語言中DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,掌握在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動。掌握使用SQL語句增加或刪除約束,加深對完整性概念的理解,達到靈活應(yīng)用的目的。掌握使用SQL語句定義和刪除同義詞。2:實驗原理 在 Navicat for MySQL 中使用 CREATE 命令完成對表、索引、視圖、同義詞 的創(chuàng)建,使用 DROP 命令完成對表、索引、視圖、同義詞的刪除,使用 ALTER 命 令對表結(jié)構(gòu)進行修改及完整性約束的增加、刪除。 3:實驗代碼及結(jié)果 相應(yīng)SQL語句為: CREATE TABLE NewTable(studentid varchar(10)NOT NULL , name varchar(20)NOT NULL , sex varchar(2)NOT NULL , age integer NOT NULL , Fee decimal(10,2)NULL , address varchar(50)NULL , memo varchar(300)NULL , PRIMARY KEY(studentid)); 截圖如下: 3.用Create Table語句建表CourseAa,相應(yīng)的SQL語句為: CREATE TABLE CourseAa(Aa1 Varchar(20), Aa2 INTEGER, Aa3 decimal(10)); 截圖如下: 5.用Create Table語句建表ChooseBb 相應(yīng)的SQL語句如下: CREATE TABLE ChooseBb(Bb1 VARCHAR(30), Bb2 INTEGER, Bb3 DECIMAL(6)); 6.用Drop Table語句刪除表CourseAa,相應(yīng)的SQL語句如下: Drop table CourdeAa; 7.用Alter Table語句更新表ChooseBb,添加一個屬性名Bb4,類型Varchar,長度20,完整性約束設(shè)為非空值,缺省值設(shè)為字符“系統(tǒng)測試值”,相應(yīng)的SQL語句如下: ALTER TABLE choosebb ADD Bb4 VARCHAR(30)NOT NULL; 8.用Alter Table語句更新表ChooseBb,添加一個屬性名Bb5,類型Varchar, 長度10,完整性約束設(shè)為主碼。完成后,表ChooseBb的設(shè)計如下所示。相應(yīng)的SQL語句如下: ALTER TABLE choosebb ADD Bb5 VARCHAR(30)PRIMARY KEY; 9.用Create View語句建立一個視圖View_Choosebb,生成的視圖屬性名(View_bb1,View_bb2,view_bb3), 其中View_bb1對應(yīng)于基表ChooseBb的Bb1、View_bb2對應(yīng)于基表ChooseBb的Bb4、view_bb3對應(yīng)于基表ChooseBb的Bb5。完成后,視圖View_Choosebb的設(shè)計如下所示。 相應(yīng)的SQL語句如下: CREATE VIEW View_Choosebb AS SELECT Bb4 AS View_bb1,View_bb2 FROM chooseBb;CREATE VIEW View_Choosebb AS SELECT Bb5 AS View_bb3 FROM chooseBb;10.用Drop View語句刪除視圖View_Choosebb。相應(yīng)的SQL語句如下: DROP VIEW View_choosebb;11.用Create Index語句對表ChooseBb的Bb2屬性建立一個升序索引,索引名Index_bb2。用Create Index語句對表ChooseBb的Bb4屬性建立一個降序索引,索引名Index_bb4。相應(yīng)的SQL語句如下: CREATE INDEX Index_bb2 ON ChooseBb(Bb4 DESC);12.用Drop Index語句刪除索引Index_bb2。相應(yīng)的SQL語句如下: DROP INDEX Index_bb2 ON ChooseBb; 4:實驗中遇到的問題及心得體會 1、用Drop Table語句刪除表CourseAa的時候,在SQL瀏覽框中輸入語句并運行,發(fā)現(xiàn)左邊項目欄中還是有CourseAa表的存在,但是確打不開CourseAa表,弄了很長時間,也不知道是什么情況,最后嘗試刷新頁面之后,發(fā)現(xiàn)語句運行正確,CourseAa表成功刪除。 2、由于理論課時查詢語言之學(xué)到了表的查詢,到后面實驗中涉及視圖的建立及查詢,也不清楚是怎么回事,而且由于對查詢語句的不熟悉,實驗過程中進行緩慢,視圖的部分是課下看書慢慢寫的,沒有截圖。 通過這次實驗,初步了解了SQL語言中DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,掌握在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動。掌握使用SQL語句增加或刪除約束。因為實驗過程中對這些語句的不熟悉耽誤課很長時間,還需課下多下工夫多看、多寫。 實驗五 SQL語言數(shù)據(jù)操縱語言DML 1:實驗?zāi)康?/p> SQL 語言的數(shù)據(jù)操縱功能通過 DML(數(shù)據(jù)維護語言)實現(xiàn)。DML 包括數(shù)據(jù)查詢 和數(shù)據(jù)更新兩種數(shù)據(jù)操縱語句。其中,數(shù)據(jù)查詢指對數(shù)據(jù)庫中的數(shù)據(jù)查詢、統(tǒng)計、分組、排序等操作;數(shù)據(jù)更新指數(shù)據(jù)的插入、更新和刪除等數(shù)據(jù)維護操作。 本次實驗了解 DML 語言的 INSERT、UPDATE、DELETE 等數(shù)據(jù)維護語言,掌握 在 Navicat for MySQL 中用 DML 語言的 INSERT、UPDATE、DELETE 對表進行數(shù)據(jù) 插入、更新和刪除。 2實驗內(nèi)容 在 Navicat for MySQL 中使用 INSERT 語句向表中插入數(shù)據(jù)。使用 UPDATE 語句更新(修改)表中已有數(shù)據(jù)。使用 DELETE 語句刪除表中數(shù)據(jù)。 3:實驗代碼及結(jié)果 1、用Create Table語句建立test表,其語句和截圖如下所示; CREATE TABLE `NewTable`(`Name` varchar(20)NOT NULL , `Age` integer NULL , `Score` numeric(10,2)NOT NULL , `Address` varchar(60)NULL); 2、繼續(xù)用Create Table語句建立test_temp表,其語句同1。 3、用INSERT語句對表test_temp,插入如實驗報告中的三條記錄,其插入語句和截圖如下: INSERT INTO test_temp VALUES('鄭七',21,'490.50','重郵宿舍11-2-1');INSERT INTO test_temp VALUES('張八',20,'560.00','南福苑3-3-3');INSERT INTO test_temp VALUES('王九',10,'515.00','學(xué)生新區(qū)19-7-1'); 4、用INSERT INTO…SELECT…FROM語句,將test_temp表中的數(shù)據(jù),插入到test中,其語句及其截圖如下: INSERT INTO test SELECT * FROM test_temp; 5、用UPDATE語句將test表中年齡小于20的數(shù)據(jù),將其成績更新為原來的成績加5分,其語句和截圖如下: UPDATE test SET Score=Score+5 WHERE Age<=20; 6用UPDATE語句將test表中居住在南福苑所有的學(xué)生年齡減少1歲,其語句和截圖如下:、UPDATE test SET Age=Age-1 WHERE Address Like '南福苑%'; 7、用DELETE語句將test表中年齡大于等于21 并且成績大于等于500的學(xué)生數(shù)據(jù)刪除,其語句和截圖如下: DELETE FROM test WHERE Score<=500 AND Age>=21; 8、用DELETE語句將test表中成績小于550并且居住在重郵宿舍的學(xué)生數(shù)據(jù)刪除,其語句和截圖如下: DELETE FROM test WHERE Score<=550 AND Address LIke'重郵宿舍%'; 4實驗心得 這次實驗從實驗原理還是實驗操作來說還是相對簡單的,但越是對簡單的是就越容易犯迷糊,這次件表命名給了我很多啟示,以后對細節(jié)還是要十分注意的。 實驗六 SQL語言數(shù)據(jù)查詢語言DQL 1:實驗?zāi)康?/p> 本次實驗了解 SQL 語言的 SELECT 語句對數(shù)據(jù)的查詢,學(xué)會在 Navicat for MySQL 中用 SELECT 語句對表中的數(shù)據(jù)進行簡單查詢、連接查詢、嵌套查詢和組 合查詢。2:實驗原理 在 Navicat for MySQL 中使用 SELECT 語句從表中查詢數(shù)據(jù)、統(tǒng)計數(shù)據(jù)及對 數(shù)據(jù)進行分組和排序等操作。3:實驗代碼及結(jié)果 1.用 Create Table 建立 Student 表: 2.用 Create Table 建立 Course 表: 3.用 Create Table 建立 Choose 表: 4.用 INSERT 語句向 Student 表中插入 3 個元組: 5.用 INSERT 語句向 Course 表中插入 3 個元組: 6.用 INSERT 語句向 Choose 表中插入 7 個元組: 7.用 SELECT 語句,查詢計算機學(xué)院學(xué)生的學(xué)號和姓名。 8.用 SELECT 語句的 between?and?表示查詢條件,查詢年齡在 20~23 歲的學(xué) 生信息。 9.用 SELECT 語句的 COUNT()聚集函數(shù),統(tǒng)計 Student 表中學(xué)生總?cè)藬?shù)。 10.分別用 SELECT 語句的 max()、min()、sum()、avg()四個聚集函數(shù),計算 Choose 表中 C1 課程的最高分、最低分、總分、平均分。max(): Min(): Sum(); avg(): 11.用 SELECT 語句對空值(NULL)的判斷條件,查詢 Course 表中先修課稱編號為 空值的課程編號和課程名稱。 12.用 SELECT 語句的連接查詢,查詢學(xué)生的學(xué)號、姓名、選修的課程名及成績。 13.用 SELECT 的存在量詞 EXISTS,查詢與“張三”在同一個學(xué)院學(xué)習(xí)的學(xué)生信 息。 14.用 SELECT 語句的嵌套查詢,查詢選修 C1 課程的成績低于“張三”的學(xué)生的 學(xué)號和成績。 15.用 SELECT 語句的組合查詢(UNION),查詢選修了 C1 課程或者選修了 C3 課程 的學(xué)生學(xué)號。 16.用 SELECT 語句的組合查詢(UNION)與 DISTINCT 短語,查詢選修了 C1 課程或 者選修了 C3 課程的學(xué)生學(xué)號,并取消重復(fù)的數(shù)據(jù)。 4.實驗心得 本次實驗室相對于前幾次來說比較困難的一次,因為語句剛學(xué)過,下去也沒有及時去練習(xí),對于很多還是比較困難,在本次實驗中通過練習(xí),讓我了解 SQL 語言的 SELECT 語句對數(shù)據(jù)的查詢,學(xué)會在 Navicat forMySQL 中用 SELECT 語句對表中的數(shù)據(jù)進行簡單查詢、連接查詢、嵌套查詢和組合查詢。課下時間也會多多練習(xí)SQl語句。 實驗七 MYSQL應(yīng)用開發(fā)環(huán)境的建立 1:實驗?zāi)康?/p> 通過在Windows平臺下,搭建Apache Httpd Web服務(wù)器,PHP腳本支持,訪問MySQL數(shù)據(jù)庫等,學(xué)習(xí)了解MySQL應(yīng)用開發(fā)環(huán)境的建立過程。本次實驗通過安裝Apache HTTD Server 2.2、PHP 5.3.28,配置httpd.conf和PHP.ini文件,完成MySQL的PHP應(yīng)用開發(fā)環(huán)境的建立。2:實驗內(nèi)容 1、按照實驗指導(dǎo)安裝Apache http Server。成功后,截圖如下: 2、配置Apache服務(wù)器支持PHP文件解析,截圖如下: 3、實驗測試成功,截圖如下: 3:遇到的問題及解決 配置PHP擴展支持MySQL數(shù)據(jù)庫。用記事本打開php5.3.28之下的php.ini文件,把;extension=php_mysql.dll去掉。只是去掉了extension=php_mysql.dll,而,而沒有其前面的分號去掉就保存了文件。 4:實驗心得 通過在 Windows平臺下,搭建 Apache Httpd Web 服務(wù)器,PHP 腳本支持,訪問 MySQL 數(shù)據(jù)庫等,我學(xué)習(xí)了解 了MySQL 應(yīng)用開發(fā)環(huán)境的建立過程。學(xué)會了安裝 Apache HTTD Server 2.2、PHP 5.3.28,配置 httpd.conf和 PHP.ini 文件,完成 MySQL 的 PHP 應(yīng)用開發(fā)環(huán)境的建立。 實驗八 MySQL的存儲過程 1:實驗?zāi)康?/p> 存儲過程分為兩類:1.系統(tǒng)提供的存儲過程;2.用戶自定義存儲過程。 存儲過程具有的優(yōu)點:1.存儲過程允許標準組件式編程;2.存儲過程能夠?qū)?現(xiàn)較快的執(zhí)行速度;3.存儲過程能夠減少網(wǎng)絡(luò)流量;4.存儲過程可被作為一種安 全機制來充分利用。存儲過程是可復(fù)用的組件!想象一下如果你改變了主機的語 言,這對存儲過程不會產(chǎn)生影響,因為它是數(shù)據(jù)庫邏輯而不是應(yīng)用程序。存儲過 程是可以移植的! 本次實驗了解 MySQL 存儲過程的創(chuàng)建、修改和刪除的方法和步驟,掌握在 Navicat for MySQL中對存儲過程的進行創(chuàng)建、修改和刪除,掌握在MySQL Command Line Client 中調(diào)用帶參數(shù)和不帶參數(shù)的存儲過程。 2:實驗內(nèi)容 1、MySQL Command Line Client中創(chuàng)建存儲過程,按照實驗指導(dǎo)書創(chuàng)建第一、第二個存儲過程及其調(diào)用。 2、調(diào)用第三、第四個傳出參數(shù)的存儲過程: 3、創(chuàng)建存儲過程third_p(),顯示表cqupt中的數(shù)據(jù),并對其進行調(diào)用測試。 4、創(chuàng)建存儲過程simpleproc2(),對傳入?yún)?shù)進行乘以10的處理,變量定義@x,并對其進行調(diào)用測試。5.用Drop Procedure語句刪除存儲過程first_p。 3:實驗結(jié)果 4:心得體會 通過此次實驗,學(xué)會了在MySQL Command Line Client中創(chuàng)建存儲過程及其調(diào)用,并傳遞參數(shù)對其進行調(diào)用測試.實驗九MySQL的觸發(fā)器和SQL語言數(shù)據(jù)控制語言DCL 1:實驗?zāi)康?/p> 觸發(fā)器是特定事件出現(xiàn)的時候,自動執(zhí)行的代碼塊,類似于存儲過程。觸發(fā)器與存儲過程的區(qū)別在于:存儲過程是由用戶或應(yīng)用程序顯式調(diào)用的,而觸發(fā)器是不能被直接調(diào)用的,由DBMS自動執(zhí)行。觸發(fā)器具有這些功能: 1、允許/限制對表的修改; 2、自動生成派生列,比如自增字段; 3、強制數(shù)據(jù)一致性; 4、提供審計和日志記錄; 5、防止無效的事務(wù)處理; 6、啟用復(fù)雜的業(yè)務(wù)邏輯。 本次實驗了解MySQL觸發(fā)器的創(chuàng)建、修改和刪除的方法和步驟,掌握在Navicat for MySQL中對觸發(fā)器的進行創(chuàng)建、修改和刪除,掌握觸發(fā)器觸發(fā)測試的方法。2:實驗內(nèi)容 1、創(chuàng)建觸發(fā)器audit_student,該觸發(fā)器對修改student表的時間、用戶名記錄到日志表中。 2.執(zhí)行 五、教學(xué)過程中 (三)實驗內(nèi)容的第二部分改造簡單觸發(fā)器,增加觸發(fā)類型判斷功能,驗證觸發(fā)器的改造和改造后的觸發(fā)器觸發(fā)測試。3.自行編寫student表的觸發(fā)器aduit_student_update,在對student表進行更新操作前觸發(fā),觸發(fā)時,向student_log表寫入觸發(fā)用戶、觸發(fā)時間和觸發(fā)類型。并對該新建進行觸發(fā)測試。 4.自行編寫student表的觸發(fā)器aduit_student_delete,在對student表進行刪除操作后觸發(fā),觸發(fā)時,向student_log表寫入觸發(fā)用戶、觸發(fā)時間和觸發(fā)類型。并對該新建進行觸發(fā)測試。 3:實驗結(jié)果 ①輸入如下語句,建立實驗表student,如圖所示: create table student(SNO varchar(10),SNAME varchar(30),Sage Int); ②輸入如下語句,建立日志表student_log,并查看日志表是否為空,如圖所示: create table student_log(who varchar(30),whattimeTIMESTAMP); select * from student_log; ③輸入如下語句,在student表上語句觸發(fā)器,如圖所示: use test; Create trigger audit_student Beforeinsert On student For each row Begin Insert into student_log(Who,whattime)Values(current_user,current_timestamp);End; 建立④輸入如下語句對觸發(fā)器進行INSERT觸發(fā)測試,如圖所示: 對student表做一個INSERT操作: Insert into student values('1992150033','吳思遠',40); 輸入如下語句查看表student_log,檢查觸發(fā)器工作結(jié)果,表student_log中數(shù)據(jù)如圖所示: select * from student_log; ①輸入如下語句,修改日志表結(jié)構(gòu),增加一個屬性存放觸發(fā)語句類型。如圖所示: alter table student_log add(action varchar(20)); ②修改觸發(fā)器,記錄觸發(fā)語句類型。選中student表,單擊右鍵,選擇設(shè)計表,點擊觸發(fā)器選項卡,在定義中對INSERT進行編輯,如圖所示: select * from student_log 4:實驗心得 本次實驗讓我了解 MySQL 觸發(fā)器的創(chuàng)建、修改和刪除的方法和步驟,掌握在 Navicat for MySQL 中對觸發(fā)器進行創(chuàng)建、修改和刪除的步驟,掌握了觸發(fā)器觸發(fā)測試的方法。 實驗十SQL的數(shù)據(jù)控制通過DCL(數(shù)據(jù)控制語言)實現(xiàn) 1:實驗?zāi)康?/p> DCL 通過對數(shù)據(jù)庫用戶的授 權(quán)和權(quán)限回收命令來實現(xiàn)有關(guān)數(shù)據(jù)的存取控制,以保證數(shù)據(jù)庫的安全性 本次實驗了解 DCL 語言的 GRANT 和 REVOKE 語句對數(shù)據(jù)庫存取權(quán)限的控制,學(xué)會在Navicat for MySQL中用GRANT、REVOKE語句對數(shù)據(jù)庫存取權(quán)限進行設(shè)定。 2:實驗內(nèi)容 1.登錄mysql,創(chuàng)建用戶jason,密碼為abc123,并授權(quán)該用戶完整訪問數(shù)據(jù)庫test。即執(zhí)行如下DCL語句:GRANT ALL ON test.* TO jason@“%”IDENTIFIED BY “abc123”;2.啟動另外一個Navicat for MySQL,在MySQL –新建連接中完成jason連接參數(shù)配置 3.對user表進行授予權(quán)限操作,并用select insert 進行測試 4.對user表進行收回權(quán)限操作,用select insert語句進行測試 3:實驗結(jié)果 GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;GRANT SELECT on mysql.host to jason; 2、將數(shù)據(jù)庫 mysql 中表 host 的查詢權(quán)限從用戶 jason 回收 3.創(chuàng)建用戶jason,密碼為abc123,并授權(quán)該用戶完整訪問數(shù)據(jù)庫test。GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”; 4.啟動另外一個Navicat for MySQL,在MySQL –新建連接中完成jason連接參數(shù)配置。為了能查詢到相應(yīng)的數(shù)據(jù),我們必須進行授權(quán)操作。語句如下: Grant select on mysql.user to jason; 授權(quán)后,現(xiàn)在切換到Navicat for MySQL,執(zhí)行之前窗口中的查詢語句: 5、接下來,切換到MySQL的命令行客戶端,創(chuàng)建一個簡單的表,切換到Navicat for MySQL,新建一個查詢: insert into mysql.dcltest(id,name)values(1,'張三豐'); 6、切換到MySQL的命令行客戶端,執(zhí)行如下授權(quán)語句,進行INSERT權(quán)限的授予: Grant insert on mysql.user to jason; 輸入如下查詢語句: Select * from mysql.dcltest; 權(quán)限授予后,root(數(shù)據(jù)庫超級用戶)可以進行權(quán)限的回收。 7、切換到Navicat for MySQL,新建一個查詢,執(zhí)行如下插入語句: insert into mysql.dcltest(id,name)values(2,'掃地僧');執(zhí)行如下權(quán)限回收語句: Revoke insert on mysql.dcltest from jason; 新建一個查詢,執(zhí)行如下查詢語句: select * from mysql.dcltest; Revoke select on mysql.dcltest from jason; 4:實驗心得 通過本次實驗,我了解DCL語言的GRANT和REVOKE語句對數(shù)據(jù)庫存取權(quán)限的控制,學(xué)會在Navicat for MySQL中用GRANT、REVOKE語句對數(shù)據(jù)庫存取權(quán)限進行設(shè)定。 實驗十一MySQL的事務(wù)與鎖 1:實驗?zāi)康?/p> 事務(wù)(Transaction)是MySQL數(shù)據(jù)庫系統(tǒng)中的一個邏輯工作單元,是完成一組數(shù)據(jù)庫操作的程序執(zhí)行單元;鎖(Lock)是MySQL數(shù)據(jù)庫系統(tǒng)中并發(fā)控制的常用方法.本次實驗了解MySQL事務(wù)的設(shè)置、提交和回退的方法和步驟,掌握MySQL Command Line Client中如何進行相關(guān)操作。了解MySQL的表鎖定與鎖定解除,掌握MySQL Command Line Client中如何進行相關(guān)操作。2:實驗內(nèi)容 啟動MySQL的命令行客戶端,輸入密碼mysql(小寫);執(zhí)行 五、教學(xué)過程中 (三)實驗內(nèi)容的1部分,學(xué)習(xí)和驗證MySQL的事務(wù);在實驗步驟2的基礎(chǔ)上,在數(shù)據(jù)bankrecord的表record中,添加一個元組id為3的張六,初始余額2萬;自己寫事務(wù)完成如下操作:李四向張六轉(zhuǎn)賬5千,然后取消該轉(zhuǎn)賬;王五向李四轉(zhuǎn)賬1萬5,然后確認轉(zhuǎn)賬;執(zhí)行 五、教學(xué)過程中 (三)實驗內(nèi)容的2部分,學(xué)習(xí)和驗證MySQL的鎖;在步驟4的基礎(chǔ)上,在數(shù)據(jù)庫bookrecord的表sellrecord中,添加一個元組id為2000的書籍Oracle數(shù)據(jù)庫實用教程庫,存為2本;在當(dāng)前MySQL命令行客戶端里面模擬李四購書,另外啟動一個MySQL命令行客戶端,模擬王五購書;要求使用寫鎖先鎖定后,再修改,因為庫存有兩本,所以李四和王五都能買到,庫存為0,并且兩人的名字都出現(xiàn)在buyername 3:實驗結(jié)果 create database bankrecord character set utf8 collate utf8_general_ci;use bankrecord; create table record(id int,name varchar(20),jine decimal(8,2)); set names gbk; insert into record values(1, '李四',20000);insert into record values(2, '王五',20000);start transaction; update record set jine=jine-10000 where name='李四';select * from record;rollback; select * from record; 1、查看數(shù)據(jù)庫自動提交模式是否打開: 2,按照實驗指導(dǎo)先建立數(shù)據(jù)庫、表和向表中插入初始賬戶記錄: 3、完成開始事務(wù),從李四賬戶轉(zhuǎn)出 1 萬元,向王五賬戶中轉(zhuǎn)入 1 萬元,提交確認轉(zhuǎn)賬: 4、安實驗指導(dǎo)執(zhí)行語句先建立數(shù)據(jù)庫、表和向表中插入初始書籍記錄: 5、在數(shù)據(jù)庫 bankrecord 的表 record 中,添加一個元組id 為 3 的張六,初始余額 2 萬,李四向張六轉(zhuǎn)賬 5 千,然后取消該轉(zhuǎn)賬;王五向李四轉(zhuǎn)賬 1 萬 5,然后確認轉(zhuǎn)賬(語句在圖中顯示): 6、在數(shù)據(jù)庫 bookrecord 的表 sellrecord 中,添加一個元組id 為 2000 的書籍 Oracle 數(shù)據(jù)庫實用教程庫,存為 2 本(相關(guān)語句在圖中顯示): 7、在當(dāng)前 MySQL 命令行客戶端里面模擬李四購書,另外啟動一個 MySQL 命令行客戶 端,模擬王五購書(語句在圖中顯示)。 4:實驗心得 本次實驗了解 MySQL 事務(wù)的設(shè)置、提交和回退的方法和步驟,掌握 MySQL Command Line Client 中如何進行相關(guān)操作。了解 MySQL 的表鎖定與鎖定解除,掌握 MySQL Command Line Client 中如何進行相關(guān)操作。 實驗十二MySQL的常用函數(shù)MySQL 1:實驗?zāi)康?/p> 本次實驗了解 MySQL 常用字符串、日期和時間函數(shù)等的使用,掌握 MySQL Command Line Client 中如何進行相關(guān)操作。常用函數(shù)包括常用字符串、日期和時間函數(shù)等各類函數(shù)。2:實驗內(nèi)容 啟動 MySQL 的命令行客戶端,輸入密碼 mysql(小寫);執(zhí)行 五、教學(xué)過程中 (三)實驗內(nèi)容的 1 部分,學(xué)習(xí)和驗證 MySQL 的字符串函數(shù);在實驗步驟 2 的基礎(chǔ)上,學(xué)習(xí)如下兩個函數(shù)并完成題目:定位和位置函數(shù) LOCATE(substr,str),返回字符串 str 中子字符串 substr 的第一次出現(xiàn)位置,如果 str 中不包含 substr,返回 0。 請使用LOCATE函數(shù)計算needle在haystackneedlehaystack第一次出現(xiàn)的位置;子字符串函數(shù) SUBSTRING(str,pos,len),從字符串 str 返回一個長度同 len 字符相同的子字符串,起始于位置 pos;請使用 SUBSTRING 函數(shù)計算 backspace,從第 2 個字符起,長度為 5 的子字符串;字符串函數(shù)的解答腳本和結(jié)果請保存,老師會檢查;執(zhí)行 五、教學(xué)過程中 (三)實驗內(nèi)容的 2 部分,學(xué)習(xí)和驗證 MySQL 的日期和時間函數(shù);在步驟 4 的基礎(chǔ)上,學(xué)習(xí)如下一個函數(shù)并完成題目:周函數(shù) WEEK(date),返回 date 時間包含的星期數(shù);請使用 WEEK 函數(shù)計算當(dāng)前日期包含的星期數(shù)。3:實驗結(jié)果 4:實驗心得 通過本次實驗掌握了MySQL 常用函數(shù)包括常用字符串、日期和時間函數(shù)等各類函數(shù),并且學(xué)會了MySQL Command Line Client 中如何進行相關(guān)操作。 實驗7 索引和數(shù)據(jù)完整性的使用 1、目的與要求 (1)掌握索引的使用方法; (2)掌握數(shù)據(jù)完整性的實現(xiàn)方法; 2、實驗準備 (1)了解索引的作用與分類;(2)掌握索引的創(chuàng)建方法; (3)理解數(shù)據(jù)的完整性的概念與分類;(4)掌握各種數(shù)據(jù)完整性的實現(xiàn)方法。 3、實驗內(nèi)容 (1)建立索引 ①使用CREATE INDEX語句創(chuàng)建索引。 對YGGL數(shù)據(jù)庫的Employees表中的DepartmentID列建立索引。在查詢分析器中輸入如下程序并執(zhí)行: USE YGGL GO CREATE INDEX depart_ind ON Employees(DepartmentID)GO 在Employees表的Name列和Address列上建立復(fù)合索引。CREATE INDEX Ad_ind ON Employees(Name,Address)對Departments表上的DepartmentName列建立唯一非聚集索引。CREATE UNIQUE INEDX Dep_ind ON Departments(DepartmentName)【思考與練習(xí)】 a.索引創(chuàng)建完后在對象資源管理器中查看表中的索引。b.了解索引的分類情況 c.使用CREATE INDEX語句能創(chuàng)建主題嗎? d.在什么情況下可以看到建立索引的好處? ②使用界面方式創(chuàng)建索引。 使用界面方式在Employees表的PhoneNumber列上創(chuàng)建索引。 啟動SQL Server Management Studio,在對象資源管理器中展開數(shù)據(jù)庫YGGL,展開表Employees,右擊“索引,選擇“新建索引”選項。在新建索引的窗口中填寫索引的名稱和類型,單擊“添加”按鈕,在列表框中選擇要創(chuàng)建的索引的列,選擇完單擊“確定”按鈕即完成創(chuàng)建工作?!舅伎寂c練習(xí)】 a.使用界面方式創(chuàng)建一個復(fù)合索引。 b.在Employees表的表設(shè)計窗口選擇Address列,右擊選擇“索引/鍵”菜單項,在新窗口中的Address列創(chuàng)建一個唯一的索引。 c.創(chuàng)建一個數(shù)據(jù)量很大的新表,查看使用索引和不使用索引的區(qū)別。 (2)重建索引。 重建表Employees中的所有索引。USE YGGL GO ALTER INDEX ALL ON Employ REBUILD 【思考與練習(xí)】重建表Employees中EmployeeID列上的索引。 (3)刪除索引。 使用DROP INDEX語句刪除表Employees上的索引Depart_ind,計劃使用如下SQL語句: DROP INDEX Depart_ind ON Employees 【思考與練習(xí)】 a.使用QROP INDEX一次刪除Employees表上的多個索引 b使用界面方式刪除Department表上的索引。 (4)數(shù)據(jù)完整性。 ①創(chuàng)建一個表Employees5,只含EmployeesID,Name,Sex和Education列。將Name,設(shè)為主鍵,作為列Name的約束。對EmployeesID列進行UNIQUE約束,并作為表的約束。 CREATE TABLE Employees5(EmployeesID char(6)NOT NULL PRIMARY KEY, Sex tinyint Education char(4), CONSTRAINT UK_id UNIQUE(EmployeesID)) ②刪除上例中創(chuàng)建的UNIQUE約束。ALTER TABLE Employees5 DROPCONSTRAINT UK_id GO 【思考與練習(xí)】 a.使用T-SQL命令創(chuàng)建一個新表,使用一個復(fù)合列作為主鍵,作為表的約束,并為其命名。b.使用語句為表ALTER TABLEEmployees5添加一個新列Address,并為該列定義UNIQUE約束,并了解如何使用圖形向?qū)Х绞絼h除主鍵和UNIOQUE約束。 ③創(chuàng)建新表student,只考慮“號碼”和“性別”兩列,性別只能包含男或女。CREATE TABLE student(號碼char(6)NOT NULL 性別char(2)Employees CHECK(性別 IN(“男”,“女”)) 【思考與練習(xí)】 向該表插入數(shù)據(jù),“性別”列插入“男”和“女”以外的字符,查看會發(fā)生什么情況。 ④創(chuàng)建新表Salary2,結(jié)構(gòu)與Salary相同,但Salary2表不可以O(shè)utCome列大于Income列。 CREATE TABLE Salary2(EmployeesID char(6)NOT NULL Income Float NOT NULL, OUTCOME FLOAT NOT NULL, CHECK(INCOME>=OUTCOME))【思考與練習(xí)】 a.向表中插入數(shù)據(jù),查看OUTCOME值比INCOME值大是會有什么情況。b.創(chuàng)建一個表Employees6,只考慮“學(xué)號”和“出生日期”兩列,出生日期必須晚于1980年1月1日。 ⑤對YGGL數(shù)據(jù)庫中的Employees表進行修改,為其增加“DepartmentID”字段的CHECK約束。 use YGGL go alter table Employees add constraint depart check(DepartmentID>=1 and DepartmentID<=5)【思考與練習(xí)】測試CHECK約束的有效性。 ⑥創(chuàng)建一個規(guī)則對象,用以限制輸入到該規(guī)則所綁定的列中的值只能是該規(guī)則中列出的值。 create rule list_rule as @list in('財務(wù)部','研發(fā)部','人力資源部','銷售部')go exec sp_bindrule 'list_rule','Departments.DepartmentName' go 【思考與練習(xí)】創(chuàng)建一個規(guī)則對象,限制在0~20之間。然后把他綁定知道Employees表的WorkYear字段上。 刪除上述建立的規(guī)則對象。 ⑦創(chuàng)建一個表Salary3,要求所有Salary3表上EmployeeID列的值都要出現(xiàn)在Salary表中,利用參照完整性約束實現(xiàn),要求當(dāng)刪除或修改Salary表上的EmployeeID列時,Salary3表中的EmployeeID值也會隨之變化 create table Salary3(EmployeeID char(6)not null primary key, InCome float not null, OutCome float(8)not null, foreign key(EmployeeID)references Salary(EmployeeID)on update cascade on delete cascade) 4、實驗結(jié)果 (1)建立索引 ①【思考與練習(xí)】 a.索引創(chuàng)建完后在對象資源管理器中查看表中的索引。 b.了解索引的分類情況 答:索引分為兩類:分別是聚集索引和非聚集索引,其中有唯一索引和復(fù)合索引。每一個表中只可以有一個聚集索引,但可以有多個非聚集索引。c.使用CREATE INDEX語句能創(chuàng)建主題嗎? 不可以 d.在什么情況下可以看到建立索引的好處? 當(dāng)要在龐大的數(shù)據(jù)庫中尋找自己想要的數(shù)據(jù)的時候,建立索引是很有好處的,優(yōu)點如下: 第一:通過創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性。 第二:可以大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因。第三:可以加速表和表之間的連接,特別是在實現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。 第四:在使用分組和排序子句進行數(shù)據(jù)檢索時,同樣可以顯著減少查詢中分組和排序的時間。第五,通過使用索引,可以在查詢的過程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能。 ②【思考與練習(xí)】 a.使用界面方式創(chuàng)建一個復(fù)合索引。 b.在Employees表的表設(shè)計窗口選擇Address列,右擊選擇“索引/鍵”菜單項,在新窗口中的Address列創(chuàng)建一個唯一的索引。 c.創(chuàng)建一個數(shù)據(jù)量很大的新表,查看使用索引和不使用索引的區(qū)別。 (2)重建索引。 【思考與練習(xí)】重建表Employees中EmployeeID列上的索引。USE YGGL GO create index employid_ind ON Employees(EmployeeID)GO ALTER INDEX employid_ind ON Employees REBUILD GO (3)刪除索引。 【思考與練習(xí)】 a.使用QROP INDEX一次刪除Employees表上的多個索引 USE YGGL GO DROP INDEX Employees.depart_ind,Employees.Employ_ind GO b使用界面方式刪除Department表上的索引。 (4)數(shù)據(jù)完整性。 ②【思考與練習(xí)】 a.使用T-SQL命令創(chuàng)建一個新表,使用一個復(fù)合列作為主鍵,作為表的約束,并為其命名。 USE YGGL GO CREATE TABLE Employ(EmployeeID char(8)NOT NULL, Name char(10)NOT NULL, Sex bit NOT NULL, Education char(5), CONSTRAINT UK_id PRIMARY KEY(EmployeeID,Name,Sex)) b.使用語句為表ALTER TABLEEmployees5添加一個新列Address,并為該列定義UNIQUE 約束。 USE YGGL GO ALTER TABLE Employees5 ADD Address varchar(40)NULL CONSTRAINT USK_id UNIQUE GO C.使用界面方式為一個新表定義主鍵和UNIQUE約束,并了解如何使用圖形向?qū)Х绞絼h除主鍵和UNIQUE約束。 ③【思考與練習(xí)】 向該表插入數(shù)據(jù),“性別”列插入“男”和“女”以外的字符,查看會發(fā)生什么情況。 ④【思考與練習(xí)】 a.向表中插入數(shù)據(jù),查看OUTCOME值比INCOME值大是會有什么情況。 INSERT 語句與CHECK 約束“CK__Salary2__1A14E395”沖突。該沖突發(fā)生于數(shù)據(jù)庫“YGGL”,表“dbo.Salary2”。 語句已終止。 b.創(chuàng)建一個表Employees6,只考慮“學(xué)號”和“出生日期”兩列,出生日期必須晚于1980年1月1日。USE YGGL GO CREATE TABLE Employees6(學(xué)號 char(6)NOT NULL,出生日期 varchar(20)NOT NULL CHECK(出生日期>'1980-1-1')) ⑤【思考與練習(xí)】測試CHECK約束的有效性。 insert into Employees6 values('001','1980-1-0') INSERT 語句與CHECK 約束“CK__Employees6__出生日期__1BFD2C07”沖突。該沖突發(fā)生于數(shù)據(jù)庫“YGGL”,表 “dbo.Employees6”, column '出生日期'。語句已終止。結(jié)果是:上面的記錄添加不進去.表現(xiàn)出了check的有效性.⑥【思考與練習(xí)】創(chuàng)建一個規(guī)則對象,限制在0~20之間。然后把他綁定知道Employees表的WorkYear字段上。USE YGGL GO CREATE RULE Emp_rule AS @Emp like'[0-20]' GO EXEC sp_bindrule 'Emp_rule','Employees.WorkYear' GO 刪除上述建立的規(guī)則對象。USE YGGL GO EXEC sp_unbindrule 'Employees.WorkYear' DROP RULE Emp_rule GO ⑦a.創(chuàng)建完Salary3表后,初始化該標的數(shù)據(jù)與salary表相同。刪除salary表中一行數(shù)據(jù),在查看salary3表的內(nèi)容,看看會發(fā)生什么情況。 B.使用ALTER TABLE語句向salary表中的EmployeeID列上添加一個外鍵,要求EmployeeIs表中要刪除或修改與EmployeeID值有關(guān)的行時,檢查Salary表中有沒有與該EployeeID值相關(guān)的記錄,如果存在則拒絕更新Emloyees表。C.在對象資源管理器中建立Departments、Employees和Salary三個表之間的參照關(guān)系。第三篇:數(shù)據(jù)庫課程教學(xué)方法探索論文
第四篇:數(shù)據(jù)庫實驗報告
第五篇:數(shù)據(jù)庫實驗報告