版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫SQLServeSQLite教程課程教案課程名稱:數(shù)據(jù)庫SQLServeSQLite教程課程號:課程學(xué)分:2參考學(xué)時:32課程性質(zhì):專業(yè)必修課適用專業(yè):計算機(jī)類專業(yè)上課時間:授課教師:負(fù)責(zé)人:審核單位:年月日一、課程基本信息課程名稱數(shù)據(jù)庫SQLServeSQLite教程課程號課程性質(zhì)專業(yè)必修課開課部門課程負(fù)責(zé)人課程團(tuán)隊(duì)授課學(xué)期學(xué)分/學(xué)時2/32授課語言漢語先修課程數(shù)據(jù)庫SQLServeSQLite教程課程簡介從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。授課班級
二、課程授課教案第1章,共11章講課主題概論學(xué)時2學(xué)時教學(xué)目標(biāo)從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。教學(xué)重點(diǎn)、難點(diǎn)數(shù)據(jù)庫技術(shù)是信息系統(tǒng)的核心技術(shù)之一,主要研究和解決計算機(jī)信息處理過程中數(shù)據(jù)的組織和存儲問題。本章從數(shù)據(jù)庫技術(shù)的發(fā)展歷史、基本概念,數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu)、分類,數(shù)據(jù)庫技術(shù)的研究領(lǐng)域等內(nèi)容入手了解數(shù)據(jù)庫技術(shù),可為后續(xù)章節(jié)的學(xué)習(xí)奠定基礎(chǔ)。教學(xué)設(shè)計授課提綱及重難點(diǎn)分析教學(xué)方法及課程思政設(shè)計教學(xué)時間1.1數(shù)據(jù)庫技術(shù)的發(fā)展歷史數(shù)據(jù)庫系統(tǒng)的研究和開發(fā)從20世紀(jì)60年代中期開始到現(xiàn)在,取得了十分輝煌的成就,造就了C.W.Bachman、E.F.Codd和J.Gray三位圖靈獎得主,發(fā)展了以數(shù)據(jù)建模和數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,DBMS)為核心技術(shù)且內(nèi)容豐富的一門學(xué)科,帶動了數(shù)百億美元的軟件產(chǎn)業(yè)。在數(shù)據(jù)庫技術(shù)出現(xiàn)之前,人們普遍采用文件系統(tǒng)來管理數(shù)據(jù),隨著數(shù)據(jù)規(guī)模的不斷增長以及數(shù)據(jù)共享需求的提出,文件系統(tǒng)方式越來越難以適應(yīng)數(shù)據(jù)管理的要求。數(shù)據(jù)庫技術(shù)自誕生以來,形成了堅(jiān)實(shí)的理論基礎(chǔ)、成熟的商業(yè)產(chǎn)品和廣泛的應(yīng)用領(lǐng)域,經(jīng)歷了網(wǎng)狀數(shù)據(jù)庫、層次數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫、對象關(guān)系數(shù)據(jù)庫等發(fā)展階段。即使到了今天,DDBS、XML數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫、NewSQL數(shù)據(jù)庫等仍在不斷發(fā)展之中。1.1.1數(shù)據(jù)管理技術(shù)的發(fā)展歷程20世紀(jì)60年代,計算機(jī)開始廣泛地應(yīng)用于數(shù)據(jù)管理,對數(shù)據(jù)的共享提出了越來越高的要求。傳統(tǒng)的文件系統(tǒng)已經(jīng)不能滿足人們的需要,能夠統(tǒng)一管理和共享數(shù)據(jù)的數(shù)據(jù)庫管理技術(shù)得到了用戶的認(rèn)可。了解數(shù)據(jù)庫技術(shù)的發(fā)展歷程,首先應(yīng)對整個數(shù)據(jù)管理技術(shù)的發(fā)展歷程有所認(rèn)識。⒈人工管理階段人工管理階段主要集中在20世紀(jì)50年代以前。當(dāng)時計算機(jī)剛剛面世,人們把計算機(jī)當(dāng)作一種工具,用于科學(xué)計算,將程序和相關(guān)數(shù)據(jù)輸入計算機(jī),經(jīng)處理后輸出結(jié)果。人工管理階段的數(shù)據(jù)管理具有以下幾個特點(diǎn):(1)數(shù)據(jù)并不保存在計算機(jī)中。此時還沒有出現(xiàn)二級存儲的概念,數(shù)據(jù)都是純二進(jìn)制數(shù)據(jù),并且以打孔紙帶的形式表示。(2)應(yīng)用程序自己管理數(shù)據(jù)。應(yīng)用程序根據(jù)自己的需求準(zhǔn)備打孔紙帶形式的數(shù)據(jù),這些數(shù)據(jù)只能被自己使用。不同的應(yīng)用程序根據(jù)求解問題準(zhǔn)備各自需要的數(shù)據(jù)。(3)數(shù)據(jù)無法共享。數(shù)據(jù)由程序自行攜帶,一組數(shù)據(jù)對應(yīng)一個程序。(4)數(shù)據(jù)與應(yīng)用程序之間不具有獨(dú)立性。如果應(yīng)用程序發(fā)生修改,則原先的數(shù)據(jù)一般不能繼續(xù)使用。同理,如果數(shù)據(jù)修改了,則應(yīng)用程序一般也無法處理。(5)只有程序,沒有文件。此時還沒有文件存儲的概念。⒉文件系統(tǒng)階段20世紀(jì)50年代中期到60年代中期,出現(xiàn)了文件系統(tǒng)形式的數(shù)據(jù)管理技術(shù)。它主要是隨著磁盤、磁鼓等存儲設(shè)備的出現(xiàn)及操作系統(tǒng)技術(shù)的發(fā)展而提出的。文件系統(tǒng)階段數(shù)據(jù)管理的主要特點(diǎn)可歸納為以下幾點(diǎn):(1)數(shù)據(jù)以文件形式存在,由文件系統(tǒng)管理。(2)數(shù)據(jù)可以較長時間地保存在磁盤上。(3)數(shù)據(jù)共享性差、冗余大,必須建立不同的文件以滿足不同的應(yīng)用。例如,在一個教學(xué)信息管理系統(tǒng)中,教師數(shù)據(jù)同時被教學(xué)、財務(wù)、人事管理等應(yīng)用模塊使用,在文件系統(tǒng)階段只能將教師數(shù)據(jù)文件復(fù)制到這些不同的應(yīng)用中。這樣一方面帶來了數(shù)據(jù)的冗余存儲,另一方面如果某些教師數(shù)據(jù)發(fā)生了修改,則很容易導(dǎo)致數(shù)據(jù)的不一致。(4)數(shù)據(jù)與應(yīng)用程序之間具有一定的獨(dú)立性,但非常有限。應(yīng)用程序通過文件名即可訪問數(shù)據(jù),按記錄進(jìn)行存取,但文件結(jié)構(gòu)改變時必須修改程序。⒊數(shù)據(jù)庫管理階段20世紀(jì)60年代末開始,數(shù)據(jù)管理進(jìn)入數(shù)據(jù)庫管理階段。數(shù)據(jù)庫管理階段的數(shù)據(jù)管理的主要特點(diǎn)如下:(1)數(shù)據(jù)結(jié)構(gòu)化。DBMS采用了數(shù)據(jù)模型來組織數(shù)據(jù),不僅可以表示數(shù)據(jù),還可以表示數(shù)據(jù)間的聯(lián)系。(2)高共享、低冗余,且易于擴(kuò)充。數(shù)據(jù)不僅可以被多個應(yīng)用程序高度共享,而且可以保證數(shù)據(jù)之間的最小冗余。(3)數(shù)據(jù)獨(dú)立性高。數(shù)據(jù)具有物理獨(dú)立性和邏輯獨(dú)立性,對它的修改也不會影響到應(yīng)用程序的運(yùn)行。(4)數(shù)據(jù)由DBMS統(tǒng)一管理和控制,應(yīng)用系統(tǒng)中所有的數(shù)據(jù)都由DBMS負(fù)責(zé)存取。1.1.2數(shù)據(jù)庫技術(shù)的發(fā)展歷程數(shù)據(jù)庫技術(shù)從20世紀(jì)60年代末開始發(fā)展,在計算機(jī)應(yīng)用領(lǐng)域,數(shù)據(jù)處理逐漸占據(jù)了主導(dǎo)地位,應(yīng)用也越來越廣泛。30min1.2數(shù)據(jù)庫技術(shù)的基本概念應(yīng)用了數(shù)據(jù)庫技術(shù)的計算機(jī)系統(tǒng),稱為數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,DBS),其中涉及一些基本的概念,這些概念在現(xiàn)實(shí)應(yīng)用中很容易混淆,也是學(xué)習(xí)數(shù)據(jù)庫技術(shù)必須首先了解和區(qū)分的對象。1.2.1數(shù)據(jù)數(shù)據(jù)是數(shù)據(jù)庫中存儲和管理的基本對象。數(shù)據(jù)是事實(shí)或觀察的結(jié)果,是對客觀事物的邏輯歸納,是用于表示客觀事物的未經(jīng)加工的原始素材,可以是字符、文字、聲音、圖像、視頻等。通常對數(shù)據(jù)的定義是:數(shù)據(jù)(Data)是人們用來反映客觀世界而記錄下來的可以鑒別的物理符號。1.2.2數(shù)據(jù)庫與數(shù)據(jù)庫模式1.數(shù)據(jù)庫的概念和特點(diǎn)簡單地講,數(shù)據(jù)庫是一個存儲數(shù)據(jù)的倉庫。但是,這種定義肯定是不準(zhǔn)確的,因?yàn)閿?shù)據(jù)庫中的數(shù)據(jù)并不是隨意存放的,而是有一定的組織和類型特征。嚴(yán)格的數(shù)據(jù)庫定義為:數(shù)據(jù)庫(DataBase,DB)是長期存儲在計算機(jī)內(nèi),有組織的、可共享的大量數(shù)據(jù)的集合。這個定義指出了數(shù)據(jù)庫具有以下幾個特點(diǎn):(1)數(shù)據(jù)庫是數(shù)據(jù)的集合,因此數(shù)據(jù)庫只是一個符號的集合,本身是沒有語義的。(2)數(shù)據(jù)庫中的數(shù)據(jù)不是雜亂無章的,而是有組織的。確切地說,它是按一定的數(shù)據(jù)模型組織、描述和存儲的。(3)數(shù)據(jù)庫中存儲的數(shù)據(jù)通常是海量的。如果是少量的數(shù)據(jù),通常不需要使用數(shù)據(jù)庫技術(shù)來管理,借助文件系統(tǒng)就可以實(shí)現(xiàn)。實(shí)際上,存儲的數(shù)據(jù)量越大,越能體現(xiàn)數(shù)據(jù)庫技術(shù)相對于文件系統(tǒng)的優(yōu)勢。(4)數(shù)據(jù)庫通常是持久存儲的,即存儲在磁盤等持久存儲的介質(zhì)上。(5)數(shù)據(jù)庫一般是被多用戶共享的。換句話說,最早期的數(shù)據(jù)庫一臺電腦一個用戶,數(shù)據(jù)集只為單用戶服務(wù),而在多用戶共享的環(huán)境中,數(shù)據(jù)庫技術(shù)的優(yōu)點(diǎn)得到了充分發(fā)揮。目前,除了少數(shù)專用的數(shù)據(jù)庫產(chǎn)品外,絕大多數(shù)商用數(shù)據(jù)庫產(chǎn)品都是面向多用戶應(yīng)用的。(6)數(shù)據(jù)庫一般服務(wù)于某個特定的應(yīng)用,因此數(shù)據(jù)間聯(lián)系密切,具有最小冗余度和較高的獨(dú)立性。2.數(shù)據(jù)庫模式數(shù)據(jù)庫本身是沒有語義的,因此引入另一個概念即數(shù)據(jù)庫模式(DatabaseSchema)來表達(dá)數(shù)據(jù)庫的語義。最常見的數(shù)據(jù)庫模式定義為:數(shù)據(jù)庫模式是數(shù)據(jù)庫語義的表達(dá),它是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。1.2.3數(shù)據(jù)庫管理系統(tǒng)隨著數(shù)據(jù)庫技術(shù)的豐富和發(fā)展,數(shù)據(jù)庫管理系統(tǒng)的概念應(yīng)運(yùn)而生。其定義為:數(shù)據(jù)庫管理系統(tǒng)(DBMS)是一個用于創(chuàng)建、管理和維護(hù)數(shù)據(jù)庫的大型計算機(jī)軟件。數(shù)據(jù)庫管理系統(tǒng)從軟件的分類角度來說,屬于計算機(jī)系統(tǒng)軟件。系統(tǒng)軟件一般是管理計算機(jī)資源的軟件。通常情況下,數(shù)據(jù)庫管理系統(tǒng)運(yùn)行在操作系統(tǒng)之上,用于管理計算機(jī)中的數(shù)據(jù)資源。也就是說,當(dāng)涉及底層的磁盤操作時,數(shù)據(jù)庫管理系統(tǒng)通常利用操作系統(tǒng)提供的磁盤存取服務(wù)來實(shí)現(xiàn)底層數(shù)據(jù)存取。用戶還可以在數(shù)據(jù)庫管理系統(tǒng)之上創(chuàng)建直接服務(wù)于應(yīng)用的數(shù)據(jù)庫應(yīng)用系統(tǒng)(即數(shù)據(jù)庫應(yīng)用軟件),從而構(gòu)建基于數(shù)據(jù)庫技術(shù)的應(yīng)用軟件,滿足實(shí)際應(yīng)用的需求。1.2.4數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)是一個更加寬廣的概念,類似于計算機(jī)系統(tǒng)。其定義為:數(shù)據(jù)庫系統(tǒng)(DBS)是指在計算機(jī)系統(tǒng)中引入了數(shù)據(jù)庫后的系統(tǒng),即采用了數(shù)據(jù)庫技術(shù)的計算機(jī)系統(tǒng)。數(shù)據(jù)庫系統(tǒng)作為一個計算機(jī)系統(tǒng),包含了軟件、硬件、數(shù)據(jù)庫、數(shù)據(jù)庫管理人員、終端用戶等要素,電子政務(wù)系統(tǒng)、銀行信息系統(tǒng)等都可以稱為數(shù)據(jù)庫系統(tǒng)。在數(shù)據(jù)庫系統(tǒng)中,用戶可分為數(shù)據(jù)庫管理員和終端用戶兩類,其中數(shù)據(jù)庫管理員直接與DBMS打交道,終端用戶直接與應(yīng)用程序交互。一個系統(tǒng)可分為前臺和后臺,前臺是終端用戶,是應(yīng)用,后臺是管理、開發(fā)和維護(hù)。30min1.3數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu)1.3.1ANSI/SPARC體系結(jié)構(gòu)從軟件架構(gòu)上看,引入DBMS之后的系統(tǒng)中開始出現(xiàn)數(shù)據(jù)庫服務(wù)器。其數(shù)據(jù)庫體系結(jié)構(gòu)(或模式結(jié)構(gòu))目前廣泛采用的是ANSI/SPARC體系結(jié)構(gòu)的架構(gòu)。ANSI/SPARC體系結(jié)構(gòu)是1975年由美國國家標(biāo)準(zhǔn)協(xié)會的計算機(jī)與信息處理委員會中的標(biāo)準(zhǔn)計劃與需求委員會提出的數(shù)據(jù)庫模式結(jié)構(gòu)。它不僅可以用來解釋已有的商用DBMS的數(shù)據(jù)庫模式結(jié)構(gòu),也可以作為研發(fā)新型DBMS時的數(shù)據(jù)庫模式組織標(biāo)準(zhǔn)。目前,Oracle、MicrosoftSQLServer等商用DBMS都遵循和支持ANSI/SPARC體系結(jié)構(gòu)。ANSI/SPARC體系結(jié)構(gòu)的三級模式結(jié)構(gòu)為:(1)概念模式:定義了邏輯層的模式結(jié)構(gòu),表示整個數(shù)據(jù)庫的邏輯結(jié)構(gòu),如數(shù)據(jù)記錄由哪些數(shù)據(jù)項(xiàng)構(gòu)成,數(shù)據(jù)項(xiàng)的名稱、類型、取值范圍,數(shù)據(jù)之間的聯(lián)系、數(shù)據(jù)的完整性等。(2)外模式:也稱用戶模式(UserSchema)或子模式,它定義了視圖層(ViewLevel)的模式結(jié)構(gòu)。(3)內(nèi)模式:定義了物理層的模式結(jié)構(gòu),它描述了數(shù)據(jù)庫的物理存儲結(jié)構(gòu)和存儲方式。與概念模式類似,一個數(shù)據(jù)庫只有一個內(nèi)模式。1.3.2客戶機(jī)/服務(wù)器結(jié)構(gòu)和瀏覽器/服務(wù)器結(jié)構(gòu)從終端用戶的角度看,數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu)也可以說是數(shù)據(jù)庫應(yīng)用系統(tǒng)的體系結(jié)構(gòu)。目前,最常見的是客戶機(jī)/服務(wù)器結(jié)構(gòu)和瀏覽器/服務(wù)器結(jié)構(gòu)。1.客戶機(jī)/服務(wù)器結(jié)構(gòu)客戶機(jī)/服務(wù)器結(jié)構(gòu)(Client/ServerArchitecture,C/S結(jié)構(gòu))是20世紀(jì)90年代產(chǎn)生的一種數(shù)據(jù)庫應(yīng)用系統(tǒng)體系結(jié)構(gòu)??蛻魴C(jī)主要運(yùn)行應(yīng)用程序及一些前端的數(shù)據(jù)庫開發(fā)工具;服務(wù)器主要提供DBMS的功能。在Web技術(shù)出現(xiàn)之前,客戶機(jī)/服務(wù)器結(jié)構(gòu)是最流行的架構(gòu)。進(jìn)入21世紀(jì)后,隨著Web開發(fā)技術(shù)的發(fā)展,瀏覽器/服務(wù)器結(jié)構(gòu)開始流行,越來越多的Web開發(fā)平臺開始出現(xiàn)。2.瀏覽器/服務(wù)器結(jié)構(gòu)瀏覽器/服務(wù)器結(jié)構(gòu)(Browser/ServerArchitecture,B/S結(jié)構(gòu))可以看成是Web時代的客戶機(jī)/服務(wù)器結(jié)構(gòu)。與客戶機(jī)/服務(wù)器結(jié)構(gòu)比較,瀏覽器/服務(wù)器結(jié)構(gòu)具有以下主要優(yōu)點(diǎn):(1)統(tǒng)一的客戶機(jī)界面,維護(hù)和升級相對簡單。(2)基于Web技術(shù),支持互聯(lián)網(wǎng)應(yīng)用,服務(wù)器操作系統(tǒng)選擇更多。但是,B/S結(jié)構(gòu)也存在以下缺點(diǎn):(1)安全性問題,用戶訪問無地域限制。相比之下,由于C/S結(jié)構(gòu)只運(yùn)行在由局域網(wǎng)連接的系統(tǒng)內(nèi)部,通常是一個部門或一棟大樓,其用戶類型、訪問來源、訪問數(shù)量等都很容易控制,因此安全性要高很多。(2)開發(fā)工具的能力相對較弱,應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較重,存儲服務(wù)更加重要。30min1.4DBMS的功能DBMS作為系統(tǒng)軟件,承擔(dān)了計算機(jī)系統(tǒng)中數(shù)據(jù)資源管理的任務(wù),其最基本的功能是創(chuàng)建、管理和維護(hù)數(shù)據(jù)庫,此外還提供其他一些功能。DBMS的功能大致可歸納為以下幾點(diǎn)。1.數(shù)據(jù)庫定義DBMS提供DDL翻譯處理程序、保密定義處理程序、完整性約束定義處理程序等,接收相應(yīng)的定義,進(jìn)行語法、語義檢查,把它們翻譯為內(nèi)部格式。由于數(shù)據(jù)庫是由若干對象構(gòu)成的一個集合,因此DBMS需要提供對不同數(shù)據(jù)庫對象的創(chuàng)建、管理和維護(hù)能力,包括表、視圖、索引、約束、用戶等。2.數(shù)據(jù)庫操縱DBMS提供DML處理程序、終端查詢語言解釋程序、數(shù)據(jù)存取程序、數(shù)據(jù)更新程序等,對用戶數(shù)據(jù)操縱請求進(jìn)行語法、語義檢查,有數(shù)據(jù)存取更新則執(zhí)行存取更新操作。數(shù)據(jù)庫為前端應(yīng)用程序服務(wù)提供數(shù)據(jù)庫存取能力,主要是對基本表的操縱,包括增加、刪除、修改、查詢等。3.數(shù)據(jù)庫保護(hù)為了保證數(shù)據(jù)庫的安全,DBMS必須提供一定的數(shù)據(jù)庫保護(hù)功能。數(shù)據(jù)庫保護(hù)功能通常包括兩種方式:一是提供數(shù)據(jù)庫故障后的恢復(fù)功能;二是提供防止數(shù)據(jù)庫被破壞的技術(shù)。具體的數(shù)據(jù)庫保護(hù)功能包括數(shù)據(jù)庫恢復(fù)、并發(fā)控制、完整性控制、安全性控制等。4.數(shù)據(jù)庫的建立和維護(hù)DBMS提供文件讀寫與維護(hù)程序、存取路徑管理程序、緩沖區(qū)管理程序等,這些程序負(fù)責(zé)維護(hù)數(shù)據(jù)庫的數(shù)據(jù)和存取路徑。DBMS提供初始數(shù)據(jù)的轉(zhuǎn)換和裝入、數(shù)據(jù)備份、數(shù)據(jù)庫的重組織、性能監(jiān)控和分析等功能,這些功能對于保證DBMS的實(shí)用性是必不可少的。30min重難點(diǎn)知識的重述和鞏固15min數(shù)據(jù)庫SQLServeSQLite教程課程教案課程名稱:數(shù)據(jù)庫SQLServeSQLite教程課程號:課程學(xué)分:2參考學(xué)時:32課程性質(zhì):專業(yè)必修課適用專業(yè):計算機(jī)類專業(yè)上課時間:授課教師:負(fù)責(zé)人:審核單位:年月日一、課程基本信息課程名稱數(shù)據(jù)庫SQLServeSQLite教程課程號課程性質(zhì)專業(yè)必修課開課部門課程負(fù)責(zé)人課程團(tuán)隊(duì)授課學(xué)期學(xué)分/學(xué)時2/32授課語言漢語先修課程數(shù)據(jù)庫SQLServeSQLite教程課程簡介從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。授課班級
二、課程授課教案第2章,共11章講課主題關(guān)系數(shù)據(jù)模型與關(guān)系運(yùn)算學(xué)時2學(xué)時教學(xué)目標(biāo)從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。教學(xué)重點(diǎn)、難點(diǎn)數(shù)據(jù)模型是數(shù)據(jù)庫中數(shù)據(jù)的存儲方式,是數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ),它描述了數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作以及語義約束。數(shù)據(jù)模型一般分為概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型兩類,它們從不同的層次對現(xiàn)實(shí)世界中的數(shù)據(jù)特征進(jìn)行抽象,從而可以將現(xiàn)實(shí)世界數(shù)據(jù)表達(dá)并存儲到數(shù)據(jù)庫系統(tǒng)中。數(shù)據(jù)庫歷史上迄今為止最流行的數(shù)據(jù)模型是關(guān)系數(shù)據(jù)模型。深入了解和理解關(guān)系數(shù)據(jù)模型是掌握數(shù)據(jù)庫技術(shù)的前提。教學(xué)設(shè)計授課提綱及重難點(diǎn)分析教學(xué)方法及課程思政設(shè)計教學(xué)時間2.1數(shù)據(jù)模型概述模型(Model)是對現(xiàn)實(shí)世界特征的抽象。數(shù)據(jù)模型也是一種模型,只不過它關(guān)心的是現(xiàn)實(shí)世界的數(shù)據(jù)特征。2.1.1數(shù)據(jù)模型的定義數(shù)據(jù)模型(DataModel)是對現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象,如數(shù)據(jù)的組成、數(shù)據(jù)之間的聯(lián)系等?,F(xiàn)實(shí)世界中的實(shí)體不僅具有數(shù)據(jù)特征,還具有其他特征,如行為特征等。但對于數(shù)據(jù)模型而言,只關(guān)心實(shí)體的數(shù)據(jù)特征。例如,“商品”是現(xiàn)實(shí)世界中的一個實(shí)體,數(shù)據(jù)模型關(guān)心的是“商品”這個實(shí)體由哪些屬性來描述(如品名、規(guī)格、計量單位、價格、重量和產(chǎn)地等),它與其他實(shí)體之間有何聯(lián)系(如與“工廠”之間存在著制造關(guān)系等)等內(nèi)容。早期,一般把數(shù)據(jù)模型僅理解為數(shù)據(jù)結(jié)構(gòu),而現(xiàn)代則認(rèn)為數(shù)據(jù)模型不僅提供數(shù)據(jù)表示的手段,還提供數(shù)據(jù)操作的類型和方法。綜上所述,數(shù)據(jù)模型是描述現(xiàn)實(shí)世界實(shí)體、實(shí)體之間的聯(lián)系以及語義約束的模型。2.1.2數(shù)據(jù)模型的分類根據(jù)對現(xiàn)實(shí)世界數(shù)據(jù)抽象層次的不同,可將數(shù)據(jù)模型分為概念數(shù)據(jù)模型和結(jié)構(gòu)數(shù)據(jù)模型。概念數(shù)據(jù)模型又稱語義數(shù)據(jù)模型,強(qiáng)調(diào)從用戶的角度來描述現(xiàn)實(shí)世界的數(shù)據(jù)特征,著重于對實(shí)際數(shù)據(jù)需求的獲取和表達(dá),應(yīng)該簡單、清晰、易于用戶理解。結(jié)構(gòu)數(shù)據(jù)模型又稱邏輯數(shù)據(jù)模型,是用戶從數(shù)據(jù)庫看到的模型,強(qiáng)調(diào)從數(shù)據(jù)庫的角度來進(jìn)行數(shù)據(jù)建模,具體表現(xiàn)為網(wǎng)狀數(shù)據(jù)模型、層次數(shù)據(jù)模型等。數(shù)據(jù)庫的邏輯結(jié)構(gòu)包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束三個要素。結(jié)構(gòu)數(shù)據(jù)模型是DBMS的邏輯基礎(chǔ),任何一個DBMS都是基于某種特定的結(jié)構(gòu)數(shù)據(jù)模型的,既要面向用戶,又要面向系統(tǒng)。2.1.3E-R模型當(dāng)今數(shù)據(jù)時代,數(shù)據(jù)來源繁多,數(shù)據(jù)增長速度快,經(jīng)常面臨數(shù)據(jù)需求的變化,如何高效快捷地從繁雜的數(shù)據(jù)中獲取信息,涉及數(shù)據(jù)建模的問題。在數(shù)據(jù)庫領(lǐng)域已經(jīng)提出了多種概念數(shù)據(jù)模型建模的方法,其中最著名和最流行的是E-R模型。R模型(Entity-RelationshipModel,實(shí)體-聯(lián)系模型)是由美國路易斯安那州立大學(xué)的華裔教授PeterP.Chen于1976年提出的。E-R模型提供不受任何DBMS約束的面向用戶的表達(dá)方法,建模思想簡單,語義表達(dá)能力強(qiáng),一經(jīng)推出,立即受到了工業(yè)界的歡迎,在數(shù)據(jù)庫設(shè)計中被廣泛用作數(shù)據(jù)建模的工具。E-R模型的核心思想是將現(xiàn)實(shí)世界中的所有數(shù)據(jù)都表示為實(shí)體,然后在實(shí)體與實(shí)體之間建立相應(yīng)的聯(lián)系,并最終通過建立E-R圖來表示所有的數(shù)據(jù)語義。1.E-R模型的組成E-R模型的構(gòu)成要素,首先是實(shí)體和聯(lián)系。又因?yàn)閷?shí)體和聯(lián)系都有其相應(yīng)的屬性,所以E-R模型的組成包括三個要素:實(shí)體、聯(lián)系和屬性。2.E-R模型的符號E-R模型通過建立由實(shí)體、聯(lián)系和屬性構(gòu)成的E-R圖來描述現(xiàn)實(shí)世界的數(shù)據(jù)需求,因此E-R模型也稱為E-R圖。3.E-R模型的集成與優(yōu)化完成了各個底層子系統(tǒng)的E-R模型后,下一步將進(jìn)行E-R模型的集成和優(yōu)化。方法是,首先找出公共實(shí)體,然后基于公共實(shí)體進(jìn)行合并,最后消除合并過程中出現(xiàn)的各種沖突。35min2.2關(guān)系數(shù)據(jù)模型關(guān)系數(shù)據(jù)模型(RelationalDataModel,以下簡稱關(guān)系模型)于1970年由美國IBM公司的E.F.Codd提出,該模型奠定了關(guān)系數(shù)據(jù)理論的基礎(chǔ)。2.2.1關(guān)系模型的相關(guān)概念在關(guān)系模型中,所有實(shí)體都表示在一個二維表格結(jié)構(gòu)中,每一個實(shí)體表示為表格中的一行,稱為一個元組(Tuple)。元組的數(shù)目稱為關(guān)系的基數(shù)。元組本質(zhì)上是數(shù)據(jù),是一系列屬性值的集合。2.2.2關(guān)系的幾個性質(zhì)關(guān)系模型是以二維表格形式的關(guān)系為基本數(shù)據(jù)結(jié)構(gòu),并且必須滿足一定的規(guī)范,因此關(guān)系是規(guī)范化的二維表格,表現(xiàn)為以下幾個性質(zhì):(1)屬性值不可分解:每個屬性值都是單一值,不能是一個值集。通俗地講,就是不允許關(guān)系出現(xiàn)“表中表”。(2)元組不可重復(fù):任何關(guān)系中都不允許存在重復(fù)元組。(3)關(guān)系沒有行序:任何關(guān)系的元組之間沒有順序。(4)關(guān)系沒有列序:任何關(guān)系的屬性列之間沒有順序。2.2.3關(guān)系模型的完整性約束關(guān)系模型通過四類完整性約束來表達(dá)數(shù)據(jù)的語義約束,即實(shí)體完整性、參照完整性、域完整性和用戶自定義完整性。完整性約束(IntegralConstrait)也稱完整性規(guī)則(IntegralRule),是關(guān)系模式必須滿足的一些謂詞條件,體現(xiàn)為具體領(lǐng)域中的語義約束。依據(jù)完整性約束,關(guān)系模型可以表達(dá)豐富的語義約束條件。1.實(shí)體完整性實(shí)體完整性(EntityIntegrity)也稱行完整性,是指關(guān)系模式的任一關(guān)系的主屬性值(候選碼)不可為空。2.參照完整性參照完整性(ReferentialIntegerity)也稱引用完整性,定義在兩個關(guān)系模式之上,涉及外碼概念,用于保證相關(guān)表中數(shù)據(jù)的一致性。關(guān)系模式R的外碼(ForeignKey)是指它的一個屬性集FK滿足兩個條件:存在帶有候選碼CK的關(guān)系模式S;R的任一非空FK值都在S的CK中有一個相同的值。我們把S稱為被參照關(guān)系(ReferencedRelation),R稱為參照關(guān)系(ReferentialRelation)。3.域完整性實(shí)體完整性和參照完整性給出了針對主碼和外碼的語義約束,但實(shí)際應(yīng)用還常常要求對一些非碼屬性添加完整性約束,因此,在關(guān)系模型中引入了第三類完整性約束。4.用戶自定義完整性這是用戶根據(jù)實(shí)際應(yīng)用的需要而自行定義的數(shù)據(jù)完整性。所有完整性類別都支持用戶定義完整性,包括CreateTable中所有列級約束和表級約束、存儲過程及觸發(fā)器。例如,在訂單表中,發(fā)貨日期不能早于訂貨日期,因此,在使用Update或Insert操作創(chuàng)建觸發(fā)器時,定義發(fā)貨日期>訂貨日期,否則會出錯并回滾事務(wù)。35min2.3關(guān)系運(yùn)算關(guān)系運(yùn)算是關(guān)系模型數(shù)據(jù)操作的主要實(shí)現(xiàn)方式,分為兩類:一類是傳統(tǒng)的集合運(yùn)算(并、差、交、笛卡爾積),另一類是專門的關(guān)系運(yùn)算(選擇、投影、連接等)。任何關(guān)系運(yùn)算的結(jié)果仍然是一個關(guān)系,有些查詢需要幾個基本運(yùn)算的組合,要經(jīng)過若干步驟才能完成。關(guān)系運(yùn)算操作有兩種類型:一元操作和二元操作。一元操作是指只有一個運(yùn)算對象的操作,二元操作是指有兩個運(yùn)算對象的操作,如并、交、差等操作。用戶對關(guān)系運(yùn)算的操作需求,表現(xiàn)為關(guān)系表達(dá)式。1.集合運(yùn)算2.專門的關(guān)系運(yùn)算專門的關(guān)系運(yùn)算包括選擇、投影、連接和除法運(yùn)算。35min重難點(diǎn)知識的重述和鞏固15min數(shù)據(jù)庫SQLServeSQLite教程課程教案課程名稱:數(shù)據(jù)庫SQLServeSQLite教程課程號:課程學(xué)分:2參考學(xué)時:32課程性質(zhì):專業(yè)必修課適用專業(yè):計算機(jī)類專業(yè)上課時間:授課教師:負(fù)責(zé)人:審核單位:年月日一、課程基本信息課程名稱數(shù)據(jù)庫SQLServeSQLite教程課程號課程性質(zhì)專業(yè)必修課開課部門課程負(fù)責(zé)人課程團(tuán)隊(duì)授課學(xué)期學(xué)分/學(xué)時2/32授課語言漢語先修課程數(shù)據(jù)庫SQLServeSQLite教程課程簡介從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。授課班級
二、課程授課教案第3章,共11章講課主題數(shù)據(jù)庫基礎(chǔ)學(xué)時6學(xué)時教學(xué)目標(biāo)從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。教學(xué)重點(diǎn)、難點(diǎn)計算機(jī)信息管理技術(shù)和信息管理應(yīng)用系統(tǒng)的發(fā)展為數(shù)據(jù)庫理論和數(shù)據(jù)庫應(yīng)用系統(tǒng)的發(fā)展提供了強(qiáng)大的推動力。無論是基于C/S模式還是基于B/S模式,信息管理系統(tǒng)的開發(fā)都離不開數(shù)據(jù)庫系統(tǒng)。不論是加入許多新特性的VisualFoxpro數(shù)據(jù)庫,還是SQLServer、Oracles、MySQL、Sybase等數(shù)據(jù)庫,都在微型計算機(jī)上得到了推廣運(yùn)用,服務(wù)于人們的學(xué)習(xí)和工作。教學(xué)設(shè)計授課提綱及重難點(diǎn)分析教學(xué)方法及課程思政設(shè)計教學(xué)時間3.1SQLServer概述3.1.1SQLServer概述SQLServer是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它最初是由Microsoft、Sybase和AshtonTate三家公司共同開發(fā)的,于1988年推出了第一個OS/2版本,隨后推出了SQLServer7.0、SQLServer2000、SQLServer2008、SQLServer2015、SQLServer2019等版本。本書以SQLServer2008R2為例,介紹SQLServer。SQLServer2008R2是Microsoft公司2010年推出的SQLServer數(shù)據(jù)庫管理系統(tǒng),它可以將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)(如圖像和音樂)直接存儲到數(shù)據(jù)庫中,提供豐富的集成服務(wù),可以對數(shù)據(jù)進(jìn)行查詢、搜索、同步、報告和分析之類的操作。數(shù)據(jù)可以存儲在從數(shù)據(jù)中心最大的服務(wù)器一直到桌面計算機(jī)和移動設(shè)備的各種設(shè)備上。3.1.2SQLServer2008R2的安裝1.安裝需求SQLServer2008R2支持32位和64位操作系統(tǒng),這里主要介紹SQLServer2008R264位的安裝需求。1)硬件需求(1)處理器:PentiumⅢ兼容處理器或處理速度更快的處理器。CPU最低為1.0GHz,建議不小于2.0GHz。(2)內(nèi)存:最小512MB,建議不小于2GB。(3)硬盤:在安裝SQLServer2008R2時,需要系統(tǒng)驅(qū)動器提供至少2GB的可用磁盤空間用來存儲WindowsInstaller創(chuàng)建的安裝臨時文件。(4)顯示器:VGA或更高分辨率,SQLServer圖形工具要求1024×768像素或更高分辨率。2)軟件需求(1)框架支持:安裝SQLServer2008R2所需的軟件組件有SQLServerNativeClient(SQLServer本地客戶端);.NETFramework3.5SP1(.NET框架);SQLServer2008R2安裝程序支持文件。(2)軟件:MicrosoftWindowsInstaller4.5或更高版本。Microsoft數(shù)據(jù)訪問組件(MDAC)2.8SP1或更高版本。(3)操作系統(tǒng):Windows10操作系統(tǒng)。2.安裝步驟以Windows10為操作系統(tǒng)平臺,SQLServer2008R2學(xué)習(xí)版安裝文件已經(jīng)下載到D盤的sq文件夾,其安裝過程如下:(1)展開D:\sq文件夾,雙擊“setup”安裝應(yīng)用程序。(2)如果出現(xiàn)Microsoft.NETFramework安裝對話框,則勾選接受許可并安裝。(3)通過安裝程序支持規(guī)則檢查以后,進(jìn)入“許可條款”操作界面,勾選“我接受許可條款”。(4)在“功能選擇”界面單擊“全選”按鈕,單擊“下一步”,進(jìn)入“實(shí)例配置”界面。(5)在“實(shí)例配置”界面,用戶可以使用默認(rèn)實(shí)例名MSSQLSERVER,也可以選擇命名實(shí)例SQLExpress,實(shí)例根目錄為C:\ProgramFiles\MicrosoftSQLServer\。(6)在“服務(wù)器配置”界面,根據(jù)選擇的安裝功能指定SQLServer服務(wù)的登錄賬戶。(7)在“數(shù)據(jù)庫引擎配置”界面,可以設(shè)置SQLServer實(shí)例的身份驗(yàn)證模式為Windows身份驗(yàn)證模式或混合模式。(8)在“ReportingServices配置”界面,指定要創(chuàng)建的ReportingServices安裝的類型:安裝本機(jī)模式默認(rèn)配置、安裝SharePoint集成模式默認(rèn)配置、安裝但不配置報表服務(wù)器。(9)在“安裝進(jìn)度”界面,監(jiān)視安裝進(jìn)度。(10)安裝完成后,“完成”頁會提供指向安裝摘要日志文件以及其他重要說明的鏈接,提示已完成SQLServer安裝過程,單擊“關(guān)閉”按鈕。30min3.2SQLServerManagementStudio的使用SQLServerManagementStudio(簡稱SSMS)是一個訪問、配置和管理所有SQLServer組件(數(shù)據(jù)庫引擎、AnalysisServices、IntegrationServices、ReportingServices和XQuery等)的集成環(huán)境,提供用于配置、監(jiān)視和管理SQL實(shí)例的工具,使用SSMS部署、監(jiān)視和升級應(yīng)用程序使用的數(shù)據(jù)層組件,以及生成查詢和腳本,使各種技術(shù)水平的開發(fā)人員和管理員可以通過易用的圖形工具和豐富的腳本編輯器使用和管理SQLServer。3.2.1啟動SQLServer2008R2服務(wù)器在使用SQLServer2008R2數(shù)據(jù)庫管理系統(tǒng)之前,必須先啟動SQLServer服務(wù)。下面介紹兩種啟動SQLServer服務(wù)的方法。1.使用SQLServer配置管理器啟動服務(wù)SQLServer配置管理器是一種用于管理與SQLServer相關(guān)聯(lián)的服務(wù)、配置SQLServer使用的網(wǎng)絡(luò)協(xié)議以及從SQLServer客戶端計算機(jī)管理網(wǎng)絡(luò)連接配置的工具。2.使用Windows服務(wù)管理器啟動服務(wù)打開Windows服務(wù)管理:在桌面上選中“我的電腦”,右擊鼠標(biāo)彈出快捷菜單選擇“管理”打開“計算機(jī)管理”操作界面,單擊“服務(wù)和應(yīng)用程序”→雙擊“SQLServer配置管理器”→雙擊展開“SQLServer服務(wù)”→右擊“SQlServer(SQLEXPRESS)”→彈出快捷菜單,單擊“啟動”按鈕,即可啟動SQLServer服務(wù)。3.2.2啟動SQLServerManagementStudio單擊“開始”→“所有程序”→單擊展開“MicrosoftSQLServer2008R2”→單擊“SQLServerManagementStudio”。在“連接到服務(wù)器”對話框中需要指定服務(wù)器類型、服務(wù)器名稱、身份驗(yàn)證。其中,服務(wù)器類型有“數(shù)據(jù)庫引擎”“AnalysisServices”“ReportingServices”“IntegrationServices”等選項(xiàng)。服務(wù)器名稱:服務(wù)器名稱\實(shí)例名稱,如xwq123\SQLEXPRESS。身份驗(yàn)證:可設(shè)置“Windows身份驗(yàn)證”和“SQLServer身份驗(yàn)證”兩種。30min3.3標(biāo)識符概述數(shù)據(jù)庫對象的名稱即為標(biāo)識符,SQLServer中的所有內(nèi)容都可以有標(biāo)識符。服務(wù)器、數(shù)據(jù)庫和數(shù)據(jù)庫對象(例如表、視圖、列、索引、存儲過程、觸發(fā)器、約束及規(guī)則等)也都可以有標(biāo)識符。使用標(biāo)識符要注意以下幾點(diǎn):(1)標(biāo)識符必須是統(tǒng)一碼(Unicode2.0)標(biāo)準(zhǔn)中規(guī)定的字符以及其他一些語言字符(如漢字)。(2)標(biāo)識符不能有空格或特殊字符_、#、@、$以外的字符。(3)標(biāo)識符不允許是Tansact-SQL的保留字。(4)標(biāo)識符長度不得超過128個字符。另外,在SQLServer中,還有許多具有特殊意義的標(biāo)識符。30min3.4SQLServer內(nèi)置系統(tǒng)數(shù)據(jù)庫1.系統(tǒng)數(shù)據(jù)庫啟動SQLServerManagementStudio連接數(shù)據(jù)庫引擎后,展開“數(shù)據(jù)庫”→“系統(tǒng)數(shù)據(jù)庫”文件夾,可以看到master、model、msdb和tempdb4個系統(tǒng)數(shù)據(jù)庫。具體如下:(1)master:記錄SQLServer系統(tǒng)的所有系統(tǒng)級別信息,包括登錄賬戶、系統(tǒng)配置和SQLServer初始化信息。(2)model:用于創(chuàng)建數(shù)據(jù)庫的模板。(3)msdb:供SQLServer代理程序調(diào)度警報、作業(yè)和記錄操作員時使用。(4)tempdb:保存所有的臨時表和臨時存儲過程。每次啟動時都重新創(chuàng)建tempdb,并根據(jù)需要自動增長。2.報表數(shù)據(jù)庫SQLServer中的服務(wù)器除了數(shù)據(jù)庫引擎外,還有AnalysisServices(分析服務(wù)器)、ReportingServices(報表服務(wù)器)等,其中報表服務(wù)器使用SQLServer數(shù)據(jù)庫引擎來存儲元數(shù)據(jù)和對象定義。為了將永久性數(shù)據(jù)存儲與臨時存儲要求分開,ReportingServices使用兩個SQLServer關(guān)系數(shù)據(jù)庫用作內(nèi)部存儲,在默認(rèn)情況下,這兩個數(shù)據(jù)庫分別命名為Reportserver和ReportserverTempDB,隨報表服務(wù)器主數(shù)據(jù)庫一同創(chuàng)建,用于存儲臨時數(shù)據(jù)、會話信息和緩存的報表。根據(jù)本例的數(shù)據(jù)庫實(shí)例名SQLEXPRESS,這兩個報表數(shù)據(jù)庫名稱為“Reportserver$-SQ-LEXPRESS”和“Reportserver$SQLEXPRESSTempDB”。30min3.5SQLServer系統(tǒng)內(nèi)置函數(shù)為了讓用戶更方便地對數(shù)據(jù)庫進(jìn)行操作,SQLServer在T-SQL中提供了許多內(nèi)置函數(shù),用戶可以通過調(diào)用內(nèi)置函數(shù)并為其提供所需要的參數(shù)來執(zhí)行一些特殊的運(yùn)算或完成復(fù)雜的操作。函數(shù)其實(shí)就是一段程序代碼,T-SQL提供的函數(shù)有系統(tǒng)函數(shù)、字符串函數(shù)、日期和時間函數(shù)、數(shù)學(xué)函數(shù)、轉(zhuǎn)換函數(shù)等。3.5.1系統(tǒng)函數(shù)系統(tǒng)函數(shù)用于獲取有關(guān)計算機(jī)系統(tǒng)、用戶、數(shù)據(jù)庫和數(shù)據(jù)庫對象的信息??梢栽诓恢苯釉L問系統(tǒng)表的情況下,獲取SQLServer系統(tǒng)表中的信息。用戶在得到信息后使用條件語句,根據(jù)返回的信息進(jìn)行不同的操作。與其他函數(shù)一樣,可以在select語句的select和where子句以及表達(dá)式中使用系統(tǒng)函數(shù)。3.5.2字符串函數(shù)字符串函數(shù)對二進(jìn)制數(shù)據(jù)、字符串和表達(dá)式執(zhí)行不同的運(yùn)算。此類型函數(shù)作用于char、varchar、binary和varbinary數(shù)據(jù)類型以及可以隱式轉(zhuǎn)換為char或varchar的數(shù)據(jù)類型。可以在select語句的select和where子句及表達(dá)式中使用字符串函數(shù)。字符串函數(shù)的類型如下。1.字符轉(zhuǎn)換函數(shù)2.去空格函數(shù)3.取子串函數(shù)4.字符串比較函數(shù)3.5.3字符串比較函數(shù)日期和時間函數(shù)用來顯示關(guān)于日期和時間的信息,其數(shù)據(jù)類型為datetime和smalldatetime值,可以對這些值執(zhí)行算術(shù)運(yùn)算,最后將返回一個字符串、數(shù)字值或日期和時間值。1)day()2)month()3)year()4)getdate()5)datepart()6)dateadd()7)datediff()3.5.4其他函數(shù)1.round()2.case()30min重難點(diǎn)知識的重述和鞏固15min數(shù)據(jù)庫SQLServeSQLite教程課程教案課程名稱:數(shù)據(jù)庫SQLServeSQLite教程課程號:課程學(xué)分:2參考學(xué)時:32課程性質(zhì):專業(yè)必修課適用專業(yè):計算機(jī)類專業(yè)上課時間:授課教師:負(fù)責(zé)人:審核單位:年月日一、課程基本信息課程名稱數(shù)據(jù)庫SQLServeSQLite教程課程號課程性質(zhì)專業(yè)必修課開課部門課程負(fù)責(zé)人課程團(tuán)隊(duì)授課學(xué)期學(xué)分/學(xué)時2/32授課語言漢語先修課程數(shù)據(jù)庫SQLServeSQLite教程課程簡介從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。授課班級
二、課程授課教案第4章,共11章講課主題關(guān)系數(shù)據(jù)庫語言SQL(上)學(xué)時6學(xué)時教學(xué)目標(biāo)從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。教學(xué)重點(diǎn)、難點(diǎn)計算機(jī)信息管理技術(shù)和信息管理應(yīng)用系統(tǒng)的發(fā)展為數(shù)據(jù)庫理論和數(shù)據(jù)庫應(yīng)用系統(tǒng)的發(fā)展提供了強(qiáng)大的推動力。無論是基于C/S模式還是基于B/S模式,信息管理系統(tǒng)的開發(fā)都離不開數(shù)據(jù)庫系統(tǒng)。不論是加入許多新特性的VisualFoxpro數(shù)據(jù)庫,還是SQLServer、Oracles、MySQL、Sybase等數(shù)據(jù)庫,都在微型計算機(jī)上得到了推廣運(yùn)用,服務(wù)于人們的學(xué)習(xí)和工作。教學(xué)設(shè)計授課提綱及重難點(diǎn)分析教學(xué)方法及課程思政設(shè)計教學(xué)時間4.1SQL概述結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,SQL)是1974年由Boyce和Chamberlin提出的。1975—1979年,最早是IBM的圣約瑟研究實(shí)驗(yàn)室為其關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEMR開發(fā)的一種查詢語言,它的前身是SQUARE語言。經(jīng)過各公司的不斷修改、擴(kuò)充和完善,1986年美國頒布了SQL的美國標(biāo)準(zhǔn),1987年國際標(biāo)準(zhǔn)化組織將SQL采納為國際標(biāo)準(zhǔn),SQL最終成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。由于SQL使用方便、功能豐富、語言簡潔易學(xué),很快得到推廣和應(yīng)用。SQL結(jié)構(gòu)簡潔,功能強(qiáng)大,簡單易學(xué),自從IBM公司1981年推出以來,SQL得到了廣泛的應(yīng)用。SQLServer、Oracle、Sybase、Informix等大型的數(shù)據(jù)庫管理系統(tǒng),VisualFoxpro、PowerBuilder等微機(jī)上常用的數(shù)據(jù)庫開發(fā)系統(tǒng),都支持SQL作為查詢語言。SQL集數(shù)據(jù)定義(DataDefinition)、數(shù)據(jù)操縱(DataManipulation)和數(shù)據(jù)控制(DataControl)等功能于一體,充分體現(xiàn)了關(guān)系數(shù)據(jù)庫語言的特點(diǎn)和優(yōu)點(diǎn)。SQL主要由以下幾部分組成:(1)數(shù)據(jù)定義語言(DataDefinitionLanguage,DDL)。數(shù)據(jù)定義語言用于建立、修改、刪除數(shù)據(jù)庫中的各種對象:表、視圖、索引等(如Create、Alter、Drop)。(2)數(shù)據(jù)操縱語言(DataManipulationLanguage,DML)。數(shù)據(jù)操縱語言用于改變數(shù)據(jù)庫數(shù)據(jù),主要有三條語句:Insert、Update、Delete。(3)數(shù)據(jù)查詢語言(DataQueryLanguage,DQL)。數(shù)據(jù)查詢語言用于檢索數(shù)據(jù)庫記錄,基本結(jié)構(gòu)是由Select子句、From子句、Where子句組成的查詢塊:Select<字段名表>From<表或視圖名>Where<查詢條件>。(4)數(shù)據(jù)控制語言(DataControlLanguage,DCL)。數(shù)據(jù)控制語言用來授予或回收訪問數(shù)據(jù)庫的某種特權(quán),并控制數(shù)據(jù)庫操縱事務(wù)發(fā)生的時間和效果,對數(shù)據(jù)庫實(shí)行監(jiān)視等,包括三條命令:Grant、Revoke和Deny。30min4.2SQL的數(shù)據(jù)類型在計算機(jī)中數(shù)據(jù)有兩種特征:類型和長度,所謂數(shù)據(jù)類型就是以數(shù)據(jù)的表現(xiàn)方式和存儲方式來劃分?jǐn)?shù)據(jù)的種類。在SQLServer中,每個列、局部變量、表達(dá)式和參數(shù)都具有一個相關(guān)的數(shù)據(jù)類型。數(shù)據(jù)類型是一種屬性,用來設(shè)定某一個具體列保存數(shù)據(jù)的類型。數(shù)據(jù)類型可分為整數(shù)型、精確浮點(diǎn)型、近似浮點(diǎn)型、日期時間型等10種類型,下面依次介紹。1.整數(shù)型2.精確浮點(diǎn)型3.近似浮點(diǎn)型4.日期時間型5.字符型6.Unicode字符型7.二進(jìn)制字符型8.貨幣型9.特殊數(shù)據(jù)類型10.用戶自定義數(shù)據(jù)類型30min4.3數(shù)據(jù)庫定義SQLServer2008R2用文件來存放數(shù)據(jù)庫。數(shù)據(jù)庫是由數(shù)據(jù)庫文件和事務(wù)日志文件組成的,一個數(shù)據(jù)庫至少應(yīng)包含一個數(shù)據(jù)庫文件和一個事務(wù)日志文件。數(shù)據(jù)庫文件包含數(shù)據(jù)和對象,例如表、索引、視圖和存儲過程。事務(wù)日志文件包含恢復(fù)數(shù)據(jù)庫中的所有事務(wù)所需的信息。為便于分配和管理,可以將數(shù)據(jù)文件集合起來,放在文件組中。數(shù)據(jù)庫文件是存放數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)庫對象的文件。一個數(shù)據(jù)庫可以有一個或多個數(shù)據(jù)庫文件,一個數(shù)據(jù)庫文件只屬于一個數(shù)據(jù)庫。當(dāng)有多個數(shù)據(jù)庫文件時,有一個文件被定義為主數(shù)據(jù)庫文件,擴(kuò)展名為mdf,用來存儲數(shù)據(jù)庫的啟動信息和部分或全部數(shù)據(jù)。一個數(shù)據(jù)庫只能有一個主數(shù)據(jù)庫文件,其他數(shù)據(jù)庫文件被稱為次數(shù)據(jù)庫文件,擴(kuò)展名為ndf,用來存儲主文件沒存儲的其他數(shù)據(jù)。4.3.1創(chuàng)建數(shù)據(jù)庫1.創(chuàng)建數(shù)據(jù)庫1)創(chuàng)建數(shù)據(jù)庫的最簡語法創(chuàng)建數(shù)據(jù)庫的最簡語法代碼如下:createdatabasedatabase_name在這種情況下,數(shù)據(jù)庫的參數(shù)設(shè)置都使用系統(tǒng)默認(rèn)值。2)創(chuàng)建數(shù)據(jù)庫的完整語法2.菜單方式創(chuàng)建數(shù)據(jù)庫操作步驟如下:(1)在“對象資源管理器”中找到“數(shù)據(jù)庫”節(jié)點(diǎn),右擊該節(jié)點(diǎn),在彈出的快捷菜單中選擇“新建數(shù)據(jù)庫”命令。(2)在“新建數(shù)據(jù)庫”對話框的“常規(guī)”選項(xiàng)卡中,可輸入數(shù)據(jù)庫名稱、數(shù)據(jù)庫文件和事務(wù)日志文件的邏輯名稱,設(shè)置其初始大小、自動增長、路徑等參數(shù),(3)單擊“確定”按鈕,數(shù)據(jù)庫文件創(chuàng)建成功。4.3.2刪除數(shù)據(jù)庫1.命令方式刪除數(shù)據(jù)庫在SSMS中可以用dropdatabase命令一次刪除一個或多個數(shù)據(jù)庫。只有數(shù)據(jù)庫所有者和數(shù)據(jù)庫管理員才有權(quán)執(zhí)行此命令。刪除數(shù)據(jù)庫語法如下:dropdatabasedatabase_name[,...n]2.菜單方式刪除數(shù)據(jù)庫在SSMS中可以用菜單方式刪除數(shù)據(jù)庫。例如,刪除在例4-1中創(chuàng)建的學(xué)生成績數(shù)據(jù)庫(studscore_db1)。操作步驟如下:(1)在“對象資源管理器”下單擊“數(shù)據(jù)庫”前的“+”,展開。在數(shù)據(jù)庫“studscore_db1”上右擊鼠標(biāo)彈出快捷菜單,單擊“刪除”命令。(2)進(jìn)入“刪除對象”對話框,勾選“關(guān)閉現(xiàn)有連接(C)”,再單擊“確定”按鈕。4.3.3修改數(shù)據(jù)庫1.命令方式修改數(shù)據(jù)庫在SSMS中可以用alterdatabase命令來增加或刪除數(shù)據(jù)庫中的文件,修改文件的屬性。1)語法格式2)實(shí)際操作2.菜單方式修改數(shù)據(jù)庫在“對象資源管理器”下單擊“數(shù)據(jù)庫”前面的“+”,展開數(shù)據(jù)庫文件夾,在需要修改的數(shù)據(jù)庫上右擊鼠標(biāo),彈出快捷菜單,單擊“屬性”選項(xiàng),進(jìn)入“數(shù)據(jù)庫屬性”頁,在“文件”“文件組”選項(xiàng)卡可以進(jìn)行數(shù)據(jù)庫文件、文件組的“添加”“刪除”等操作。30min4.4數(shù)據(jù)表定義數(shù)據(jù)定義語言(DDL)的主要功能是定義數(shù)據(jù)庫的模式,包括概念模式、外模式和內(nèi)模式。在SQL中對于不同的模式分別定義了一系列的語句。通過這些語句,數(shù)據(jù)庫管理員(DBA)可以創(chuàng)建和維護(hù)數(shù)據(jù)庫模式結(jié)構(gòu)。數(shù)據(jù)庫的三級模式結(jié)構(gòu)的核心是概念模式,它在SQL數(shù)據(jù)庫中表現(xiàn)為基本表的集合。4.4.1數(shù)據(jù)表的構(gòu)成一個數(shù)據(jù)表由表名、列和完整性約束構(gòu)成。具體如下:1.表名表名代表關(guān)系模式的名字,一般以字母開頭,并可包含字母、數(shù)字、#、_、@、$等符號。在一個數(shù)據(jù)庫中,表名不能重復(fù),表的核心構(gòu)成是列和完整性約束。2.列表的列對應(yīng)著關(guān)系模式的屬性,通常也稱為字段。在關(guān)系模式中,屬性由屬性名和域構(gòu)成,相應(yīng)在表中,列包括列名、列的類型和長度等信息。其中,列名要求以字母開頭,并可包含字母、數(shù)字、#、_等符號,并且要求不多于30個字符。3.完整性約束約束(Constraint)是指附加在表上,通過限制列中、行中、表之間的數(shù)據(jù)來保證數(shù)據(jù)完整性的一種數(shù)據(jù)庫對象。在表定義中,約束可以定義在每個列定義中,也可以在所有列定義之后再單獨(dú)定義。把直接定義在一個列定義之后的約束稱為列約束,把定義在全部列定義之后的約束稱為表約束。列約束和表約束在語義上沒什么差別,只是位置不同而已,單列上的約束可以定義成列約束也可以定義成表約束。如果某個約束需要定義在多個列之上,則必須通過表約束來實(shí)現(xiàn)。數(shù)據(jù)的完整性就是指存儲在數(shù)據(jù)庫中的數(shù)據(jù)的準(zhǔn)確性和一致性,通過實(shí)體完整性、參照完整性、域完整性和用戶自定義完整性等完整性約束來實(shí)現(xiàn)。4.4.2創(chuàng)建表1.命令方式創(chuàng)建表1)創(chuàng)建表的命令和語法格式創(chuàng)建數(shù)據(jù)庫后,需要使用SQL語句createtable創(chuàng)建數(shù)據(jù)表。2)定義列和約束首先,創(chuàng)建表時主要是對列的定義以及添加約束。列約束必須在每個列定義后再進(jìn)行定義,只對當(dāng)前列有效。其次,表的約束按應(yīng)用范圍分為列級和表級約束。此外,按作用可分為主鍵約束、不允許空約束、默認(rèn)值約束、唯一性約束、檢查約束、外鍵約束等。需要指出,當(dāng)一個約束中必須包含多個列時,須使用表約束。單列上的約束可以用列約束,也可用表約束。3)創(chuàng)建帶約束的表(1)primarykey約束。在SQLServer中,主鍵(primarykey)保證實(shí)體完整性,可以是單列,也可以是多列組合。其特點(diǎn)為:一個表只能定義一個主鍵約束;主鍵約束所在列(或組合值)不允許輸入重復(fù)值;所在列不允許取空值;主鍵約束自動在指定的列上創(chuàng)建了一個唯一性索引,默認(rèn)為聚集索引。(2)default約束。默認(rèn)值(default)約束的語法格式如下:default<值>default約束的特點(diǎn)為:每個列只能定義一個默認(rèn)值;默認(rèn)值不能引用其他列或其他表、視圖或存儲過程;不能放在identity列或timestamp列。當(dāng)向表中插入一條新記錄時,如果某列上有默認(rèn)值,并且新記錄中未指定該列的值,則自動以默認(rèn)值填充。設(shè)置默認(rèn)值約束時應(yīng)注意,如果默認(rèn)值是字符型,要加單引號;如果默認(rèn)值是數(shù)值,則直接寫出數(shù)值。(3)unique約束。唯一性(unique)約束是指表中的某一列或多列不能有相同的兩行或多行數(shù)據(jù)存在。其特點(diǎn)為:不能是主鍵約束所在列;每個表可以定義多個唯一性約束;約束所在列不允許輸入重復(fù)值(或組合值不重復(fù));所在列允許有空值;在指定列自動創(chuàng)建一個唯一性索引,默認(rèn)非聚集索引。(4)foreignkey約束。在SQLServer中,使用外鍵(foreignkey)保證參照完整性。外鍵約束用于建立和加強(qiáng)兩個表之間的連接的一列或多列,也就是表中某列值引用其他表的主鍵列或unique列。外鍵表的被約束列的取值,必須是主鍵表的被約束列的值。其特點(diǎn)為:每個表可以定義多個外鍵約束;外鍵表中被約束的列必須和主鍵表中被約束的列寬度一致、數(shù)據(jù)類型一致;外鍵約束不能自動創(chuàng)建索引;當(dāng)向設(shè)有外鍵約束的表(子表)中插入記錄或更新記錄時,該記錄被約束列的值必須在參照的主鍵表(父表)中存在。(5)check約束。檢查(check)約束用于驗(yàn)證輸入數(shù)據(jù)的有效性,從而保證域完整性。其特點(diǎn)為:每個表可以定義多個檢查約束;可以參考本表中的其他列;檢查約束不能放在identity列或timestamp列(它們自動插入數(shù)據(jù));插入或更新記錄時,滿足條件才能錄入。2.菜單方式創(chuàng)建表4.4.3修改表1.命令方式修改表altertable命令可以添加或刪除表的列、約束,也可以禁用或啟用已存在的約束或觸發(fā)器。1)修改列2)增加列3)刪除列4)增加或刪除約束2.菜單方式修改表創(chuàng)建的表只是表的結(jié)構(gòu),因此修改表也是修改表的結(jié)構(gòu),還可以建立表的外鍵關(guān)系。以表books(包括bookid、categorycode列)和表categories(包括categorycode、categoryname列)為例進(jìn)行介紹。1)修改表結(jié)構(gòu)(1)在“對象資源管理器”中展開數(shù)據(jù)庫節(jié)點(diǎn)和表節(jié)點(diǎn),鼠標(biāo)右擊已經(jīng)存在的表(如categories表),在彈出的快捷菜單中選擇“設(shè)計”命令。(2)在“表設(shè)計器”工作界面,可以修改表的結(jié)構(gòu),如列名、數(shù)據(jù)類型及其長度、主鍵。然后單擊工具欄的“保存”命令,或用鼠標(biāo)右擊文件名,單擊“保存”命令。2)添加外鍵約束(1)在“對象資源管理器”中展開數(shù)據(jù)庫節(jié)點(diǎn)和表節(jié)點(diǎn),在表books上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“設(shè)計”命令,打開一個選項(xiàng)卡顯示表books的定義。(2)在表books的定義中,在categorycode列單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“關(guān)系”命令,或在“表設(shè)計器”菜單中單擊“關(guān)系”命令,彈出“外鍵關(guān)系”對話框,單擊“添加”按鈕,在“選定的關(guān)系”列表框中添加一個新的關(guān)系,在“標(biāo)識”節(jié)點(diǎn)修改關(guān)系名稱為FK_books_categories。(3)選中這個新添加的關(guān)系,再右側(cè)單擊選中“表和列規(guī)范”節(jié)點(diǎn)并單擊節(jié)點(diǎn)后面的“...”按鈕,彈出“表和列”對話框,其中“外鍵表”是固定的books表,選擇外鍵所在列categorycode;“主鍵表”選擇表categories,主鍵所在的列選擇categorycode列。在“外鍵關(guān)系”對話框中,可以添加外鍵約束,還可以使用“刪除”命令刪除選定的外鍵約束。(4)單擊工具欄的“保存”按鈕,保存對books表的修改。4.4.4刪除表1.命令方式刪除表droptable語句的功能是刪除基本表(表所包含的記錄也隨之刪除)。語法格式如下:droptable<表名>說明:如果表中存在foreignkey約束,則需要先刪除外鍵約束。例如:刪除學(xué)生成績表studscoreinfo。代碼如下:droptablestudscoreinfo2.菜單方式刪除表在“對象資源管理器”中,展開數(shù)據(jù)庫節(jié)點(diǎn)和表節(jié)點(diǎn),用鼠標(biāo)右鍵單擊相關(guān)的表彈出快捷菜單選擇“刪除”命令,彈出“刪除對象”對話框,單擊“確定”按鈕,將刪除選定的表。在“刪除對象”對話框中單擊“顯示依賴關(guān)系”,如果有外鍵約束,則先刪除外鍵約束然后才能刪除該表,否則單擊“確定”后,顯示消息“刪除對...表失敗”。30min重難點(diǎn)知識的重述和鞏固15min數(shù)據(jù)庫SQLServeSQLite教程課程教案課程名稱:數(shù)據(jù)庫SQLServeSQLite教程課程號:課程學(xué)分:2參考學(xué)時:32課程性質(zhì):專業(yè)必修課適用專業(yè):計算機(jī)類專業(yè)上課時間:授課教師:負(fù)責(zé)人:審核單位:年月日一、課程基本信息課程名稱數(shù)據(jù)庫SQLServeSQLite教程課程號課程性質(zhì)專業(yè)必修課開課部門課程負(fù)責(zé)人課程團(tuán)隊(duì)授課學(xué)期學(xué)分/學(xué)時2/32授課語言漢語先修課程數(shù)據(jù)庫SQLServeSQLite教程課程簡介從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。授課班級
二、課程授課教案第5章,共11章講課主題關(guān)系數(shù)據(jù)庫語言SQL(下)學(xué)時2學(xué)時教學(xué)目標(biāo)從理論實(shí)踐一體化角度出發(fā),介紹了數(shù)據(jù)庫的基本概念、理論、模型和方法,同時從知識技能的邏輯順序出發(fā),深入淺出地介紹了數(shù)據(jù)庫技術(shù)的相關(guān)內(nèi)容,使學(xué)生可以快速掌握數(shù)據(jù)庫系統(tǒng)的原理,應(yīng)用有關(guān)工具學(xué)習(xí)SQL,并在C#、Python等相關(guān)課程中應(yīng)用,在實(shí)際應(yīng)用中解決實(shí)際問題。教學(xué)重點(diǎn)、難點(diǎn)表格是數(shù)據(jù)庫里最重要的對象,包括結(jié)構(gòu)和數(shù)據(jù)。創(chuàng)建表只是創(chuàng)建表的結(jié)構(gòu),其中并不包含數(shù)據(jù),可以通過Insert語句向表中插入數(shù)據(jù),使用Update語句更新數(shù)據(jù),還可以用Delete語句對不需要的數(shù)據(jù)記錄進(jìn)行刪除,甚至清空整個表。教學(xué)設(shè)計授課提綱及重難點(diǎn)分析教學(xué)方法及課程思政設(shè)計教學(xué)時間5.1數(shù)據(jù)操作語言(DML)SQL中數(shù)據(jù)操作語句包括insert、update和delete,分別實(shí)現(xiàn)數(shù)據(jù)的插入、更新和刪除功能。與后面討論的select語句相比,數(shù)據(jù)操作語句相對簡單,本節(jié)主要通過例子來介紹這幾個語句的用法。5.1.1數(shù)據(jù)插入1.命令方式插入數(shù)據(jù)SQL使用insert語句為數(shù)據(jù)表添加記錄。insert語句通常有兩種形式:一種是一次插入一條記錄,另一種是一次插入多條記錄,即使用子查詢批量插入。向表中插入數(shù)據(jù)應(yīng)注意以下幾點(diǎn):(1)數(shù)據(jù)表達(dá)式列表columnvalue中的數(shù)據(jù)值應(yīng)該與列列表columnlist中的列一一對應(yīng),數(shù)據(jù)類型也應(yīng)該兼容。(2)必須為表中所有定義notnull的列提供值,對于定義為null的列既可以提供值也可以不提供值。(3)如果表中存在標(biāo)識列,則不能向標(biāo)識列中插入數(shù)據(jù)。如果表中有計算列,則不能向計算列中插入值。(4)因?yàn)橹麈I所在列不允許有空值也不允許有重復(fù)值,所以插入數(shù)據(jù)時必須保證主鍵所在列中有值而且不能與該列中已經(jīng)存在的值重復(fù)。(5)如果表中存在外鍵約束,則向表中插入數(shù)據(jù)時要注意避免違反參照完整性約束。2.菜單方式插入數(shù)據(jù)在SSMS中,除了用insert語句插入記錄,還可以使用菜單方式插入記錄。5.1.2數(shù)據(jù)更新SQL使用update語句更新或修改滿足規(guī)定條件的記錄。update語句的格式如下:updatetablenamesetcolumn=newvalue[,nextcolumn=newvalue2...][wherecolumnnameoperatorvalue[and|orcolumnnameoperatorvalue]]說明:將符合where條件的記錄的一個或多個列修改為新值。若省略where,則全表更新。operator即運(yùn)算符。5.1.3數(shù)據(jù)刪除SQL使用delete語句刪除數(shù)據(jù)庫表格中的行或記錄。1.delete語句語句格式如下:deletefrom<表名>where<條件>說明:將符合<條件>的記錄從表中刪除。2.truncatetable命令如果要刪除表中的所有數(shù)據(jù)記錄,則使用truncatetable命令比用delete命令快得多,這是因?yàn)閐elete命令除了刪除數(shù)據(jù)外,還會對刪除數(shù)據(jù)在事務(wù)處理日志中作出記錄,以便刪除失敗時可以使用事務(wù)處理日志來恢復(fù)數(shù)據(jù)。而truncatetable命令的功能相當(dāng)于使用不帶where子句的delete命令。語句格式如下:truncatetabletable_name5.1.4merge語句1.功能merge關(guān)鍵字是在SQLServer2008引入的DML關(guān)鍵字,它能將insert、update、delete簡單地并為一句。MSDN對merge的解釋是:根據(jù)與源表連接的結(jié)果,對目標(biāo)表執(zhí)行插入、更新或刪除操作。例如,根據(jù)在另一個表中找到的差異在一個表中插入、更新或刪除行,可以對兩個表進(jìn)行同步。通過這個描述可以看出,merge是對兩個表之間的數(shù)據(jù)進(jìn)行操作的。merge的功能是:檢查原數(shù)據(jù)表記錄和目標(biāo)表記錄,如果記錄在原數(shù)據(jù)表和目標(biāo)表中均存在,則目標(biāo)表中的記錄將被原數(shù)據(jù)表中的記錄更新(執(zhí)行update操作);如果目標(biāo)表中不存在的某些記錄在原數(shù)據(jù)表中存在,則原數(shù)據(jù)表的這些記錄將被插入到目標(biāo)表中(執(zhí)行insert操作)。2.語法格式及示例merge的語法格式如下:mergeintotable_name[table_alias]using{table|view|sub_query}[table_alias]on(joincondition)whenmatched[and<clause_search_condition>]thenupdatesetcol1=coll_val1,col2=col2_val2whennotmatched[and<clause_search_condition>]theninsert(column_list)values(column_values)參數(shù)說明:第一行merge子句:命名目標(biāo)表并給出別名。第二行using子句:提供merge操作的數(shù)據(jù)源,并給出別名。第三行on子句:指定合并的條件。第四行whenmatchedthen子句:判斷條件符合則對目標(biāo)表更新或刪除。第八行whennotmatchedthen子句:判斷條件不符合則執(zhí)行插入的操作。35min5.2數(shù)據(jù)查詢語言(DQL)在數(shù)據(jù)庫操作中,數(shù)據(jù)查詢是最主要的操作,SQL中的數(shù)據(jù)查詢功能非常全面。SQL使用select語句來實(shí)現(xiàn)數(shù)據(jù)的查詢,并按用戶要求檢索數(shù)據(jù),將查詢結(jié)果以表格的形式返回。5.2.1SQL簡單查詢1.查詢結(jié)構(gòu)1)查詢的語法格式select查詢的基本語法格式如下:selectselect_list[intonew_table_name]fromtable_list[wheresearch_conditions][groupbygroup_by_list][havingsearch_conditios][orderbyorder_list[asc|desc]]上述語法中共有7個子句,其中select和from子句是必不可少的。各子句的功能如下:(1)select_list子句用于指定希望查看的列,中間用逗號分隔。(2)intonew_table_name子句用于將檢索出來的結(jié)果集創(chuàng)建一個新的數(shù)據(jù)表。(3)fromtable_list子句用于指定檢索數(shù)據(jù)的數(shù)據(jù)表的列表。(4)where<條件>子句用于對數(shù)據(jù)行進(jìn)行篩選,指定查詢的條件,是一個條件表達(dá)式,只有滿足條件的數(shù)據(jù)行才作為查詢的對象。(5)groupby<分組列名表>子句用于指定要分組的列。(6)having<條件>子句用于指定分組的條件。從結(jié)果集對記錄進(jìn)行篩選,只有滿足條件表達(dá)式的組才作為查詢的對象。(7)orderby<排序列名表>子句用于對查詢的結(jié)果排序。asc表示升序排序,desc表示降序排序。asc是默認(rèn)選項(xiàng)。2)select查詢的執(zhí)行過程雖然select查詢的各個子句書寫的順序是select→from→where→groupby→having→orderby,但是在計算機(jī)中各個子句實(shí)際的執(zhí)行順序是from→where→groupby→having→select→orderby。也就是說首先確定從哪個或哪些表(或視圖)中查詢數(shù)據(jù),如有必要就篩選,如有必要就分組,還有必要再對分組進(jìn)行篩選。接下來確定查詢結(jié)果,如有排序要求就對查詢結(jié)果進(jìn)行排序。其過程如下:(1)讀取from子句中基本表、視圖的數(shù)據(jù),執(zhí)行笛卡爾積操作。例如,從兩張表中取數(shù),對比記錄數(shù)、兩張表記錄數(shù)的乘積數(shù),理解笛卡爾積。(2)選取滿足where子句中給出的條件表達(dá)式的元組。(3)按照groupby子句中指定列的值進(jìn)行分組,同時提取滿足having子句中組條件表達(dá)式的那些組。(4)按照select子句中給出的列名或列表達(dá)式求值輸出。(5)orderby子句對輸出的目標(biāo)表進(jìn)行排序,按asc(升序)排列,或按desc(降序)排列。3)使用select查詢應(yīng)注意的問題(1)在數(shù)據(jù)庫系統(tǒng)中,可能存在對象名稱重復(fù)的現(xiàn)象。例如,兩個用戶同時定義了studinfo的表,在引用用戶ID為stud的用戶定義的studinfo表時,需要使用用戶ID限定數(shù)據(jù)表的名稱。語法代碼如下:select*fromstud.studinfo(2)在使用select語句進(jìn)行查詢時,需要引用的對象所在的數(shù)據(jù)庫不一定總是當(dāng)前的數(shù)據(jù)庫,在引用數(shù)據(jù)表時需要使用數(shù)據(jù)庫來限定數(shù)據(jù)表的名稱。語法代碼如下:select*fromstudscore_ds1.dbo.studinfoselect*fromstudscore_ds1..studinfo(3)在from子句中指定的數(shù)據(jù)表和視圖可能包含有相同的字段名稱,外鍵字段名稱很可能與相應(yīng)的主鍵字段名稱相同。因此,為避免字段引用時的歧義,必須使用數(shù)據(jù)表或視圖名稱來限定字段名稱。語法代碼如下:selectstudinfo.studno,studname,classinfo.classid,classnamefromstudinfo,classinfowherestudinfo.classid=classinfo.classid2.查詢操作1)select子句select子句指定需要通過查詢返回的表的列。語法格式如下:select[all|distinct][topn[percent][withties]]<select_list>其中:<select_list>={*|{table_name|view_name|table_alias}.*|{column_name|expression|identitycol|rowguidcol}[[as]column_alias]|column_alias=expression}[,...n]2)into子句intonew_table_name子句用于將查詢的結(jié)果集創(chuàng)建一個新的表。新表的列由select子句中指定的列構(gòu)成,且查詢結(jié)果各列必須具有唯一的名稱。新表中的數(shù)據(jù)是由where子句指定的,但如果select子句中指定了計算列,在新表中對應(yīng)的列則不是計算列,而是一個實(shí)際存儲在新表中的列,其中的數(shù)據(jù)由執(zhí)行select…into語句時計算得出。3)from子句from子句主要用來指定檢索數(shù)據(jù)的來源,指定數(shù)據(jù)來源的數(shù)據(jù)表和視圖的列表,該列表中的表名和視圖名之間用逗號分開。from子句不可省略。語法格式如下:from{<table_sourse>}[,...n]4)where子句where子句用于對表中的數(shù)據(jù)記錄進(jìn)行篩選,其中構(gòu)造篩選的條件表達(dá)式是重點(diǎn)。需要強(qiáng)調(diào)的是,在where子句中不能使用聚合函數(shù)及別名。語法格式如下:where<search_condition>功能:限制結(jié)果集內(nèi)返回的行。5)groupby子句有時需要對表中的數(shù)據(jù)進(jìn)行分組,然后對每個組單獨(dú)進(jìn)行統(tǒng)計計算,此時需要使用groupby子句。在按照指定的條件進(jìn)行分類計算時,可以使用聚合函數(shù)計算各組的數(shù)據(jù)。語法格式如下:groupby[all]group_by_expression[,...n]其中:group_by_expression是對表執(zhí)行分組的表達(dá)式,也稱分組列。6)having子句having子句用于指定分組搜索條件,是對分組之后的結(jié)果再次篩選。having子句必須和groupby子句一起使用,有having子句就必須有g(shù)roupby子句,但有g(shù)roupby子句可以沒有having子句。5.2.2SQL高級查詢前一節(jié)介紹了SQL查詢的基本功能和方法,本節(jié)通過介紹SQL高級查詢技術(shù),包括多表關(guān)聯(lián)查詢,union子句的使用,子查詢(嵌套查詢)的使用,左連接、右連接、全連接查詢,實(shí)用SQL語句的使用等內(nèi)容和方法,完成一些重要而復(fù)雜的操作。1.關(guān)聯(lián)表查詢SQL簡單查詢是基于單個數(shù)據(jù)表來實(shí)現(xiàn)的。在數(shù)據(jù)庫中,各個表存放著不同的數(shù)據(jù),表和表之間存在著各種聯(lián)系,往往需要用多個表中的數(shù)據(jù)來組合查詢,補(bǔ)充所需要的信息。所謂多表查詢是相對于單表查詢而言的,是指從多個關(guān)聯(lián)表中查詢數(shù)據(jù),通常采用等值多表查詢的方式,即在where子句中設(shè)置等值的條件來查詢多個數(shù)據(jù)表中關(guān)聯(lián)的數(shù)據(jù)。這種查詢要求關(guān)聯(lián)的多個數(shù)據(jù)表的某些字段具有相同的屬性,即具有相同的數(shù)據(jù)類型和寬度。1)雙表關(guān)聯(lián)查詢在where子句中,可以將具有相等的字段值的兩張表連接起來,數(shù)據(jù)來源于兩張表。2)多表關(guān)聯(lián)查詢有時需要將多個表進(jìn)行關(guān)聯(lián)查詢,才能比較完整地反映有關(guān)信息。超過兩個表的關(guān)聯(lián)查詢稱為多表查詢,返回多個表中與連接條件相互匹配的記錄,不返回不相匹配的記錄。3)關(guān)聯(lián)表使用聚合函數(shù)在單表查詢中,可以使用聚合函數(shù)進(jìn)行統(tǒng)計,但統(tǒng)計結(jié)果的信息不夠全面,需要使用多表查詢補(bǔ)齊相關(guān)信息。在多表關(guān)聯(lián)查詢中,仍可以使用聚合函數(shù)進(jìn)行統(tǒng)計。2.使用union連接使用union運(yùn)算符可以將兩個或多個select子句的結(jié)果組合成一個結(jié)果集。使用union組合的結(jié)果集都必須滿足三個條件:具有相同的結(jié)構(gòu),字段數(shù)目相同,結(jié)果集中相應(yīng)字段的數(shù)據(jù)類型必須兼容。同時還要注意以下幾點(diǎn):(1)union中每一個查詢所涉及的列必須具有相同的列數(shù)、相同的數(shù)據(jù)類型,并以相同的順序出現(xiàn)。(2)最后結(jié)果集里的列名來自第一個select語句。(3)若union中包含orderby子句,則將對最后的結(jié)果集排序。(4)在合并結(jié)果集時,默認(rèn)從最后的結(jié)果集中刪除重復(fù)的行,除非使用all關(guān)鍵字。union運(yùn)算符的語法格式如下:select子句union[all]select子句3.子查詢1)子查詢的基本概念在SQL中,當(dāng)一個查詢語句嵌套在另一個查詢的查詢條件之中時,該查詢稱為嵌套查詢,又稱為子查詢。在一個外層查詢中包含有另一個內(nèi)層查詢,其中外層查詢稱為主查詢,內(nèi)層查詢稱為子查詢。通常情況下,先使用嵌套查詢中的子查詢挑選出部分?jǐn)?shù)據(jù),以作為主查詢的數(shù)據(jù)來源或搜索條件。子查詢總是寫在圓括號中,任何允許使用表達(dá)式的地方都可以使用子查詢。在Transact-SQL中,包含子查詢的語句和語義上等效的不包含子查詢的語句在性能上通常沒有差別。但是,在一些必須檢查存在性的情況下,使用連接查詢
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度企業(yè)并購法律盡職調(diào)查與風(fēng)險評估合同4篇
- 2025年度云計算數(shù)據(jù)中心建設(shè)與運(yùn)維外包服務(wù)合同3篇
- 二零二五年度代持股及企業(yè)知識產(chǎn)權(quán)保護(hù)協(xié)議4篇
- 二零二五版供應(yīng)鏈金融抵押擔(dān)保合同3篇
- 2025年度智能生產(chǎn)廠房租賃服務(wù)合同4篇
- 《衛(wèi)浴產(chǎn)品歐洲標(biāo)準(zhǔn)》課件
- 二零二五版產(chǎn)業(yè)園區(qū)廠房租賃及產(chǎn)業(yè)扶持合同3篇
- 2025年國際會議中心教室租賃服務(wù)合同示范4篇
- 二零二五年度新能源汽車牌照租賃及推廣服務(wù)合同4篇
- 2025年度智慧城市項(xiàng)目個人項(xiàng)目管理聘用合同4篇
- 不同茶葉的沖泡方法
- 光伏發(fā)電并網(wǎng)申辦具體流程
- 基本藥物制度政策培訓(xùn)課件
- 2025年中國華能集團(tuán)限公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 建筑勞務(wù)專業(yè)分包合同范本(2025年)
- GB/T 45002-2024水泥膠砂保水率測定方法
- 廣東省廣州海珠區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 飛行原理(第二版) 課件 第10章 高速空氣動力學(xué)基礎(chǔ)
- 廣西《乳腺X射線數(shù)字化體層攝影診療技術(shù)操作規(guī)范》
- 山西省2024年中考道德與法治真題試卷(含答案)
- 五年(2020-2024)高考地理真題分類匯編(全國版)專題12區(qū)域發(fā)展解析版
評論
0/150
提交評論