Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取PPT完整全套教學(xué)課件_第1頁
Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取PPT完整全套教學(xué)課件_第2頁
Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取PPT完整全套教學(xué)課件_第3頁
Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取PPT完整全套教學(xué)課件_第4頁
Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩504頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)庫簡介第一章Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)庫獲取【Ch01】數(shù)據(jù)庫簡介.pptx【Ch02】MySQL的安裝和操作.pptx【Ch03】PyMySQL的安裝和操作.pptx【Ch04】SQLAlchemy的安裝和操作.pptx【Ch05】SQLAlchemy操作MySQL.pptx【Ch06】MongoDB基礎(chǔ).pptx【Ch07】Python操作MongoDB.pptx【Ch08】文件讀寫.pptx【Ch09】Python數(shù)據(jù)爬取.pptx【Ch10】項目實戰(zhàn):音樂數(shù)據(jù)爬取.pptx全套可編輯PPT課件1數(shù)據(jù)庫的由來數(shù)據(jù)庫的由來1.

剛開始沒有硬盤等存儲器,用的是紙帶等進行數(shù)據(jù)的存儲。編程人員在寫程序的時候,通常需要根據(jù)數(shù)據(jù)來編寫程序,同時需要考慮到數(shù)據(jù)的物理存儲結(jié)構(gòu)。在那個時候?qū)Τ绦騿T的要求是非常高的,程序員的負擔也非常重,但是效率非常低。那時還沒有“文件”的概念,“文件”的概念被引入后對數(shù)據(jù)庫的推動作用非常巨大。1.1人工管理階段1.2文件系統(tǒng)階段

這個階段引入了“文件”的概念,數(shù)據(jù)存儲在文件中,邏輯結(jié)構(gòu)和物理結(jié)構(gòu)有所區(qū)分,雖然是一種不夠徹底的結(jié)構(gòu),但有如下明顯的優(yōu)點:文件的組織具有多樣化特點:數(shù)據(jù)可以重復(fù)使用:對數(shù)據(jù)操作的顆粒比較大,以記錄為單位。這是人類史上一個巨大的進步,因為從此開始,人類有了“存儲”概念,有了分離物理和邏輯的思維,這也是后續(xù)關(guān)系型數(shù)據(jù)庫出現(xiàn)的一個重大鋪墊。為什么呢?因為文件很容易導(dǎo)致數(shù)據(jù)的冗余,而冗余進一步導(dǎo)致了數(shù)據(jù)的不一致,還有一個問題就是數(shù)據(jù)間的聯(lián)系弱。為了解決這些,科研人員研發(fā)出了數(shù)據(jù)模型。在提出數(shù)據(jù)模型后,文件系統(tǒng)的那些問題就解決了。數(shù)據(jù)庫的由來1.數(shù)據(jù)模型和數(shù)據(jù)結(jié)構(gòu)的發(fā)展可以解決文件系統(tǒng)的問題。為了使數(shù)據(jù)更加實用,繼而發(fā)展了數(shù)據(jù)控制技術(shù),并隨著數(shù)據(jù)控制技術(shù)不斷成熟,數(shù)據(jù)庫在實際生活中也逐步被廣泛應(yīng)用起來。1.3數(shù)據(jù)庫階段1.2高級數(shù)據(jù)庫階段

在數(shù)據(jù)庫的實際應(yīng)用中,計算機技術(shù)和網(wǎng)絡(luò)技術(shù)中不斷產(chǎn)生新問題和新挑戰(zhàn),在這些新需求的刺激下,產(chǎn)生了分布式數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫和網(wǎng)絡(luò)數(shù)據(jù)庫等更高級的數(shù)據(jù)庫。分布式數(shù)據(jù)庫可以解決集中管理帶來的過度復(fù)雜、擁擠的數(shù)據(jù)處理問題。面向?qū)ο髷?shù)據(jù)庫解決了多媒體數(shù)據(jù)、多維表格數(shù)據(jù)、CAD數(shù)據(jù)的表達等問題。聯(lián)系弱。為了解決這些,科研人員研發(fā)出了數(shù)據(jù)模型。在提出數(shù)據(jù)模型后,文件系統(tǒng)的那些問題就解決了。2數(shù)據(jù)庫的發(fā)展歷程數(shù)據(jù)庫的發(fā)展歷程2.數(shù)據(jù)庫系統(tǒng)的萌芽出現(xiàn)于20世紀60年代。當時計算機開始廣泛地應(yīng)用于數(shù)據(jù)管理,對數(shù)據(jù)的共享提出了越來越高的要求。由于處理的需求越來越多,傳統(tǒng)的文件系統(tǒng)已經(jīng)不能滿足人們的需要。能夠統(tǒng)一管理和共享數(shù)據(jù)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)應(yīng)運而生。1.1搖籃和萌芽階段1963年,C.W.Bachman設(shè)計開發(fā)的IDS(IntegrateDataStore)系統(tǒng)開始投入運行,它可以為多個COBOL程序共享數(shù)據(jù)庫。這是世界上第一個網(wǎng)狀數(shù)據(jù)庫管理系統(tǒng),也是第一個數(shù)據(jù)庫管理系統(tǒng)一集成數(shù)據(jù)存(IntegratedDataStore,IDS).DS奠定了網(wǎng)狀數(shù)據(jù)庫的基礎(chǔ),并在當時得到了廣泛的發(fā)行和應(yīng)用。1968年,網(wǎng)狀數(shù)據(jù)庫系統(tǒng)TOTAL等開始出現(xiàn)。網(wǎng)狀數(shù)據(jù)庫模型對于層次和非層次結(jié)構(gòu)的事物都能比較自然地模擬,在關(guān)系型數(shù)據(jù)庫出現(xiàn)之前,網(wǎng)狀數(shù)據(jù)庫比層次數(shù)據(jù)庫用得普遍。在數(shù)據(jù)庫發(fā)展史上,網(wǎng)狀數(shù)據(jù)庫占有重要地位。1969年,BM的McGee等人開發(fā)的層次數(shù)據(jù)庫系統(tǒng)(InformationManagementSystem,MS)發(fā)布,可以讓多個程序共享數(shù)據(jù)庫。MS是最著名最典型的層次數(shù)據(jù)庫系統(tǒng),是一種適合其主機的層次數(shù)據(jù)庫,是BM公司研制的最早的大型數(shù)據(jù)庫系統(tǒng)程序產(chǎn)品。1969年10月,CODASYL數(shù)據(jù)庫研制者提出了網(wǎng)狀數(shù)據(jù)庫系統(tǒng)規(guī)范報告DBTG,使數(shù)據(jù)庫系統(tǒng)開始走向規(guī)范化和標準化,所以許多專家認為數(shù)據(jù)庫技術(shù)起源于20世紀60年代末。數(shù)據(jù)庫的發(fā)展歷程2.20世紀80年代,大量商品化的關(guān)系型數(shù)據(jù)庫系統(tǒng)問世并被廣泛地推廣使用。這時的數(shù)據(jù)庫系統(tǒng)既有適用于大型計算機系統(tǒng)的,也有適用于中、小型和微型計算機系統(tǒng)的。大概在這個時期,分布式數(shù)據(jù)庫系統(tǒng)也逐步使用。1970年,BM公司SanJose研究所的E.F.Code發(fā)表了題為《大型共享數(shù)據(jù)庫的數(shù)振關(guān)系模型》的論文,由此開創(chuàng)了數(shù)據(jù)庫的關(guān)系方法和關(guān)系規(guī)范化的理論研究。關(guān)系方法由于其理論上的完美和結(jié)構(gòu)上的簡單,對數(shù)據(jù)庫技術(shù)的發(fā)展起了至關(guān)重要的作用,成功地奠定了關(guān)系數(shù)據(jù)理論的基石。1971年,美國數(shù)據(jù)系統(tǒng)語言協(xié)會在正式發(fā)表的DBTG報告中提出了三級抽象模式,解決了數(shù)據(jù)獨立性的問題,即:對應(yīng)用程序所需的數(shù)據(jù)結(jié)構(gòu)描述的外模式,對整個客體系統(tǒng)數(shù)據(jù)結(jié)構(gòu)描述的概念模式,對數(shù)據(jù)存儲結(jié)構(gòu)描述的內(nèi)模式。1974年,IBM公司SanJose研究所成功研制了關(guān)系型數(shù)據(jù)庫管理系統(tǒng)SystemR,并且投放到軟件市場。1976年,美籍華人陳平山提出了數(shù)據(jù)庫邏輯設(shè)計的實際(體)聯(lián)系方法。1.2發(fā)展階段數(shù)據(jù)庫的發(fā)展歷程2.1978年,新奧爾良發(fā)表了DBDWD報告,他把數(shù)據(jù)庫系統(tǒng)的設(shè)計過程劃分為四個階段:需求分析、信息分析與定義、邏輯設(shè)計和物理設(shè)計。1980年,J.D.U1man所著《數(shù)據(jù)庫系統(tǒng)原理》一書出版。1981年,E.F.Code獲得了計算機科學(xué)的最高獎一ACM圖靈獎。1984年,DavidMarer所著《關(guān)系型數(shù)據(jù)庫理論》一書出版,標志著數(shù)據(jù)庫在理論上的成熟。1.2發(fā)展階段3數(shù)據(jù)庫的作用數(shù)據(jù)庫的作用3.數(shù)據(jù)共享包括所有用戶可同時存取數(shù)據(jù)庫中的數(shù)據(jù),也包括用戶可以用各種方式通過接口使用數(shù)據(jù)庫,并提供數(shù)據(jù)共享。3.1實現(xiàn)數(shù)據(jù)共享3.2減少數(shù)據(jù)的冗余度同文件系統(tǒng)相比,由于數(shù)據(jù)庫實現(xiàn)了數(shù)據(jù)共享,從而避免了用戶各自建立應(yīng)用文件。數(shù)據(jù)庫減少了大量重復(fù)數(shù)據(jù),減少了數(shù)據(jù)冗余,維護了數(shù)據(jù)的一致性。3.3實現(xiàn)數(shù)據(jù)的獨立性數(shù)據(jù)的獨立性包括邏輯獨立性(數(shù)據(jù)庫中數(shù)據(jù)的邏輯結(jié)構(gòu)與應(yīng)用程序相互獨立)和物理獨立性(數(shù)據(jù)物理結(jié)構(gòu)的變化不影響數(shù)據(jù)的邏輯結(jié)構(gòu))。數(shù)據(jù)庫的作用3.文件管理方式中,數(shù)據(jù)處于一種分散的狀態(tài),不同的用戶或同一用戶在不同處理中其文件之間毫無關(guān)系。利用數(shù)據(jù)庫可對數(shù)據(jù)進行集中控制和管理,并通過數(shù)據(jù)模型表示各種數(shù)據(jù)的組織以及數(shù)據(jù)間的聯(lián)系。3.4實現(xiàn)數(shù)據(jù)集中控制3.5數(shù)據(jù)一致性和可維護性,確保數(shù)據(jù)的安全性和可靠性①安全性控制:防止數(shù)據(jù)丟失、錯誤更新和越權(quán)使用。②完整性控制:保證數(shù)據(jù)的正確性、有效性和相容性。③并發(fā)控制:在同一時間周期內(nèi),允許對數(shù)據(jù)實現(xiàn)多路存取,又能防止用戶之間的不正常交互作用。數(shù)據(jù)庫的作用3.由數(shù)據(jù)庫管理系統(tǒng)提供一套方法,可及時發(fā)現(xiàn)故障和修復(fù)故障,從而防止數(shù)據(jù)被破壞。數(shù)據(jù)庫系統(tǒng)能盡快恢復(fù)數(shù)據(jù)庫系統(tǒng)運行時出現(xiàn)的故障,可能是物理上或是邏輯上的錯誤,如對系統(tǒng)的誤操作造成的數(shù)據(jù)錯誤等。數(shù)據(jù)庫有很多類型,從最簡單的存儲有各種數(shù)據(jù)的表格到能夠進行海量數(shù)據(jù)存儲的大型數(shù)據(jù)庫系統(tǒng),在各方面得到了廣泛的應(yīng)用。

在信息化社會,充分、有效地管理和利用各類信息資源,是進行科學(xué)研究和決策管理的前提條件。數(shù)據(jù)庫技術(shù)是管理信息系統(tǒng)、辦公自動化系統(tǒng)、決策支持系統(tǒng)等信息系統(tǒng)的核心部分,是進行科學(xué)研究和決策管理的重要技術(shù)手段。數(shù)據(jù)庫技術(shù)發(fā)展到現(xiàn)在,已經(jīng)非常成熟了。當前主流的有關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫兩種,接下來會分別進行介紹。3.6故障恢復(fù)4關(guān)系型數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫4.關(guān)系模型中的常用概念如下。①關(guān)系:可以理解為一張二維表,每個關(guān)系都具有一個關(guān)系名,就是通常說的表名。②元組:可以理解為二維表中的一行,在數(shù)據(jù)庫中經(jīng)常被稱為記錄。③屬性:可以理解為二維表中的一列,在數(shù)據(jù)庫中經(jīng)常被稱為字段。④域:屬性的取值范圍,即數(shù)據(jù)庫中某一列的取值限制。⑤關(guān)鍵字:一組可以唯一標識元組的屬性,在數(shù)據(jù)庫中常被稱為主鍵,由一個或多個列組成。⑥關(guān)系模式:指對關(guān)系的描述,其格式為:關(guān)系名(屬性1,屬性2,…,屬性)。在數(shù)據(jù)庫中通常稱為表結(jié)構(gòu)當前主流的關(guān)系型數(shù)據(jù)庫有Oracle、DB2、MicrosoftSQLServer、MicrosoftAccess、MySQL等。關(guān)系型數(shù)據(jù)庫4.4.1關(guān)系型數(shù)據(jù)庫的優(yōu)點①容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界的一個概念,關(guān)系模型相對網(wǎng)狀、層次等其他模型來說更容易理解。②使用方便:通用的SQL使得操作關(guān)系型數(shù)據(jù)庫非常方便,程序員甚至于數(shù)據(jù)庫管理員可以方便地在邏輯層面操作數(shù)據(jù)庫,而完全不必理解其底層實現(xiàn)。③易于維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大降低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率。關(guān)系型數(shù)據(jù)庫4.4.2關(guān)系型數(shù)據(jù)庫的準則準則0:關(guān)系型數(shù)據(jù)庫管理系統(tǒng)必須能完全通過它的關(guān)系能力來管理數(shù)據(jù)庫。準則1:信息準則。關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的所有信息都應(yīng)該在邏輯一級上用表中的值這種方法顯式地表示。準則2:保證訪問準則。依靠表名、主鍵和列名的組合,保證能以邏輯方式訪問關(guān)系型數(shù)據(jù)庫中的每個數(shù)據(jù)項。準則3:空值的系統(tǒng)化處理。全關(guān)系的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)支持空值的概念,并用系統(tǒng)化的方法處理空值。準則4:基于關(guān)系模型的動態(tài)的聯(lián)機數(shù)據(jù)字典。數(shù)據(jù)庫的描述在邏輯級上和普通數(shù)據(jù)采用同樣的表述方式。準則5:統(tǒng)一的數(shù)據(jù)子語言。關(guān)系型數(shù)據(jù)庫管理系統(tǒng)可以具有幾種語言和多種終端訪問方式,但必須有一種語言,它的語句可以表示為嚴格語法規(guī)定的字符串,并能全面地支持各種規(guī)則。關(guān)系型數(shù)據(jù)庫系統(tǒng)應(yīng)該完全支持關(guān)系模型的所有特征。關(guān)系模型的奠基人埃德加·科德具體地給出了關(guān)系型數(shù)據(jù)庫應(yīng)遵循的基本準則。具體如下:關(guān)系型數(shù)據(jù)庫4.4.2關(guān)系型數(shù)據(jù)庫的準則準則6:視圖更新準則。所有理論上可更新的視圖也應(yīng)該允許由系統(tǒng)更新。準則7:高級的插入、修改和刪除操作。系統(tǒng)應(yīng)該對各種操作進行查詢優(yōu)化。準則8:數(shù)據(jù)的物理獨立性。無論數(shù)據(jù)庫的數(shù)據(jù)在存儲表示或訪問方法上做任何變化,應(yīng)用程序和終端活動都保持邏輯上的不變性。準則9:數(shù)據(jù)邏輯獨立性。當對基本關(guān)系進行理論上信息不受損害的任何改變時,應(yīng)用程序和終端活動都保持邏輯上的不變性。準則10:數(shù)據(jù)完整的獨立性。關(guān)系型數(shù)據(jù)庫的完整性約束條件必須是用數(shù)據(jù)庫語言定義并存儲在數(shù)據(jù)字典中的。準則11:分布獨立性。關(guān)系型數(shù)據(jù)庫管理系統(tǒng)在引入分布數(shù)據(jù)或數(shù)據(jù)重新分布時保持邏輯不變。準則12:無破壞準則。如果關(guān)系型數(shù)據(jù)庫管理系統(tǒng)使用低級語言,那么這個低級語言不能違背或繞過完整性準則。5非關(guān)系型數(shù)據(jù)庫非關(guān)系型數(shù)據(jù)庫5.非關(guān)系數(shù)據(jù)庫通常被稱為NoSQL數(shù)據(jù)庫。NoSQL(NoSQL=NotOnlySQL),意即“不僅僅是SQL”,是一項全新的數(shù)據(jù)庫革命性運動,早期就有人提出,2009年開始被高度關(guān)注并廣泛使用。隨著互聯(lián)網(wǎng)Web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在應(yīng)付Web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的Wb2.0純動態(tài)網(wǎng)站時,已經(jīng)顯得力不從心,暴露了很多難以克服的問題,所以非關(guān)系型數(shù)據(jù)庫由于其本身的特點得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是在大數(shù)據(jù)應(yīng)用方面。雖然NoSQL流行起來才幾十年的時間,但是不可否認,現(xiàn)在已經(jīng)開始了第二代運動。盡管早期的堆棧代碼只能算是一種試驗,然而現(xiàn)在的系統(tǒng)已經(jīng)更加成熟、穩(wěn)定。不過現(xiàn)在也面臨著一個嚴酷的事實:技術(shù)越來越成熟一以致原來很好的NoSQL數(shù)據(jù)存儲不得不進行重寫,也有少數(shù)人認為這就是所謂的2.0版本。該工具可以為大數(shù)據(jù)建立快速、可擴展的存儲庫。非關(guān)系型數(shù)據(jù)庫5.1.鍵值(key-value)存儲數(shù)據(jù)庫鍵值存儲數(shù)據(jù)庫主要使用哈希表,其中有一個特定的鍵和一個指針指向特定的數(shù)據(jù)。key-value模型對于IT系統(tǒng)的優(yōu)勢在于簡單、易部署。如果DBA只對部分值進行查詢或更新,key-value模型就顯得效率低下了。這類數(shù)據(jù)庫包括:TokyoCabinet/Tyrant、Redis、Voldemort、OracleBDB.2.列存儲數(shù)據(jù)庫列存儲數(shù)據(jù)庫通常用來應(yīng)對分布式存儲的海量數(shù)據(jù)。鍵仍然存在,但是它們的特點是指向了多列。這些列是由列家族來安排的。列存儲數(shù)據(jù)庫包括Cassandra、HBase、Riak.5.1NoSQL數(shù)據(jù)庫的分類非關(guān)系型數(shù)據(jù)庫5.3.文檔型數(shù)據(jù)庫文檔型數(shù)據(jù)庫的靈感是來自LotusNotes辦公軟件,同鍵值存儲數(shù)據(jù)庫類似。其數(shù)據(jù)模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲,如JSON。文檔型數(shù)據(jù)庫可以看作是鍵值數(shù)據(jù)庫的升級版,允許嵌套鍵值,但比鍵值存儲數(shù)據(jù)庫的查詢效率更高。文檔型數(shù)據(jù)庫包括:CouchDB、MongoDB、SequoiaDB(已經(jīng)開源)。4.圖形(Graph)數(shù)據(jù)庫圖形數(shù)據(jù)庫同其他行列及剛性結(jié)構(gòu)的SQL數(shù)據(jù)庫不同,使用靈活的圖形模型,并且能夠擴展到多個服務(wù)器上。NoSQL數(shù)據(jù)庫沒有標準的查詢語言(SQL),因此進行數(shù)據(jù)庫查詢需要創(chuàng)建數(shù)據(jù)模型。許多NoSOL數(shù)據(jù)庫都有REST式的數(shù)據(jù)接口或者查詢API.圖形數(shù)據(jù)庫包括:Neo4J,InfoGrid,InfiniteGraph.5.1NoSQL數(shù)據(jù)庫的分類非關(guān)系型數(shù)據(jù)庫5.①數(shù)據(jù)模型比較簡單。②需要靈活性更強的IT系統(tǒng)。③對數(shù)據(jù)庫性能要求較高。④不需要高度的數(shù)據(jù)一致性。⑤對于給定key,比較容易映射復(fù)雜值的環(huán)境。5.2NoSQL數(shù)據(jù)庫在以下幾種情況下比較適用6關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫比較關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫比較6.上面2節(jié)大概講解了關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)的概念和一些應(yīng)用場景。學(xué)習(xí)后你可能會有疑問:關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫使用哪一個好,該怎么選擇?首先來了解關(guān)系型數(shù)據(jù)庫的理論一ACD.ACID是指數(shù)據(jù)庫管理系統(tǒng)(DBMS)在寫入或更新資料的過程中,為保證事務(wù)(transaction)是正確可靠的,所必須具備的四個特性:原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability).關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫比較6.1.A(Atomicity):原子性一個事務(wù)(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結(jié)束在中間某個環(huán)節(jié)。事務(wù)在執(zhí)行過程中發(fā)生錯誤,會被回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個事務(wù)從來沒有被執(zhí)行過一樣。2.C(Consistency):一致性在事務(wù)開始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預(yù)設(shè)規(guī)則,包括資料的精確度、串聯(lián)性以及后續(xù)數(shù)據(jù)庫可以自發(fā)地完成預(yù)定的工作。3.I(Isolation):隔離性數(shù)據(jù)庫允許多個并發(fā)事務(wù)同時對其數(shù)據(jù)進行讀寫和修改,隔離性可以防止多個事務(wù)并發(fā)執(zhí)行時由于交叉執(zhí)行而導(dǎo)致數(shù)據(jù)的不一致。事務(wù)隔離分為不同級別,包括讀未提交(ReadUncommitted)、讀提交(ReadCommitted)、可重復(fù)讀(RepeatableRead)和串行化(Serializable).4.D(Durability):持久性事務(wù)處理結(jié)束后,對數(shù)據(jù)的修改就是永久的,即便系統(tǒng)故障也不會丟失。關(guān)系型數(shù)據(jù)庫嚴格遵循ACD理論。但當數(shù)據(jù)庫要開始滿足橫向擴展、高可用、模式自由等需求時,需要對ACD理論進行取舍,不能嚴格遵循ACID。關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫比較6.6.1關(guān)系型數(shù)據(jù)庫的優(yōu)勢和不足優(yōu)勢①保持數(shù)據(jù)的一致性(事務(wù)處理)。②由于以標準化為前提,數(shù)據(jù)更新的開銷很?。ㄏ嗤淖侄位旧现挥幸惶帲"劭梢赃M行JON等復(fù)雜查詢。其中能夠保持數(shù)據(jù)的一致性是關(guān)系型數(shù)據(jù)庫的最大優(yōu)勢。不足①不擅長大量數(shù)據(jù)的寫入處理。②不能為有數(shù)據(jù)更新的表做索引或表結(jié)構(gòu)(schema)變更。③字段不固定時可用性比較差。④不擅長對簡單查詢需要快速返回結(jié)果的處理。關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫比較6.6.2非關(guān)系型數(shù)據(jù)庫的優(yōu)勢和不足優(yōu)勢①成本低。NoSQL數(shù)據(jù)庫簡單易部署,基本都是開源件,不需像使用Oracle那樣花費大量成本購買,比關(guān)系型數(shù)據(jù)庫價格便宜。②查詢速度快。NoSQL數(shù)據(jù)庫將數(shù)據(jù)存儲于緩存中,系型數(shù)據(jù)庫將數(shù)據(jù)存儲在硬盤中,查詢速度遠不及NoSQL數(shù)據(jù)庫。③存儲數(shù)據(jù)的格式靈活。NoSQL的存儲格式是key-value形式、文檔形式、圖片形式等,所以可以存儲基礎(chǔ)類型、對象、集合等格式,而數(shù)據(jù)庫只支持基礎(chǔ)類型。④易擴展。NoSQL數(shù)據(jù)庫種類繁多,其共同點是去掉關(guān)系型數(shù)據(jù)庫的關(guān)系特性。數(shù)據(jù)之間無關(guān)系,這樣非常容易擴展,同時在架構(gòu)的層面上帶來了可擴展的能力。⑤靈活的數(shù)據(jù)模型。NoSQL不需事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。而在關(guān)系型數(shù)據(jù)庫中,增、刪字段是一件非常麻煩的事情。如果是非常大數(shù)據(jù)量的表,增加字段簡直是噩夢。這在大數(shù)據(jù)量的Wb2.0時代尤其明顯。⑥高可用。NoSQL在不太影響性能的情況下,可以方便地實現(xiàn)高可用的架構(gòu)。比如,Cassandra、HBase模型通過復(fù)制也能實現(xiàn)高可用。關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫比較6.6.2非關(guān)系型數(shù)據(jù)庫的優(yōu)勢和不足不足①維護的工具和資料有限。因為NoSQL是屬于新的技術(shù),不能與關(guān)系型數(shù)據(jù)庫幾十年的技術(shù)積累同日而語。②不提供對SQL的支持。如果不支持SQL這樣的工業(yè)標準,將產(chǎn)生一定用戶的學(xué)習(xí)和使用成本。③不提供關(guān)系型數(shù)據(jù)庫那樣對事務(wù)的處理。④沒有存儲過程。NoSOL數(shù)據(jù)庫中大多沒有存儲過程。⑤支持的特性不夠豐富,產(chǎn)品不夠成熟。現(xiàn)有產(chǎn)品所提供的功能都比較有限,不像MicrosoftSQLServer和Oracle那樣能提供各種附加功能,如BI和報表等。大多數(shù)產(chǎn)品還處于初創(chuàng)期,與關(guān)系型數(shù)據(jù)庫幾十年的完善不可同日而語。當然,隨著NoSQL的應(yīng)用越來越廣泛,投入NoSQL研發(fā)的人員越來越多,NoSQL技術(shù)在最近幾年也得到了迅猛發(fā)展,很多應(yīng)用上的不足正在逐步被完善。謝謝觀看Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)庫獲取MySQL的安裝和操作第二章Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)庫獲取1MySQL簡介①MySQL是開源的。MySQL并不需要支付額外費用。②MySQL支持大型的數(shù)據(jù)庫,可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。③MySQL使用標準的SQL形式,與很多收費數(shù)據(jù)庫軟件有相同的標準。④MySQL可以運行于多個系統(tǒng)上,并支持多種語言。這些語言包括C、C++、Python、Java、Perl、PHP和Ruby等。⑤32位MySQL系統(tǒng)表文件最大可支持4GB,64位MySQL系統(tǒng)支持最大的表文件為8TB.1.MySQL簡介MySQL是目前最流行、使用最多的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RelationalDatabaseManagementsystem,RDBMS)。在Web應(yīng)用方面,MySQL是最好的RDBMS應(yīng)用軟件之一。MySQL由瑞典MySQLAB公司開發(fā),目前屬于Oracle公司。MySQL將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫中,這樣增加了數(shù)據(jù)處理速度并提高了靈活性。MySQL數(shù)據(jù)庫的特性表:數(shù)據(jù)的矩陣。在一個數(shù)據(jù)庫中,表看起來像一個簡單的電子表格。列:一列(數(shù)據(jù)元素)包含了相同的數(shù)據(jù),如郵政編碼的數(shù)據(jù)。行:一行(即元組或記錄)是一組相關(guān)的數(shù)據(jù),如一條用戶訂閱的數(shù)據(jù)。冗余:存儲兩倍或以上數(shù)據(jù),冗余降低了性能,但提高了數(shù)據(jù)的安全性。主鍵:指一列或多列的組合,其值能唯一地標識表中的每一行,從而強制表的實體完整性。主鍵主要用于與其他表的外鍵關(guān)聯(lián),。以及本記錄的修改和刪除。外鍵:如果公共關(guān)鍵字在一個關(guān)系中是主關(guān)鍵字,那么這個公共關(guān)鍵字被稱為另一個關(guān)系的外鍵。外鍵用于關(guān)聯(lián)兩個表。復(fù)合鍵(組合鍵):將多列作為一個索引鍵,一般用于復(fù)合索引。索引:用于快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),類似書籍的目錄。參照完整性:要求關(guān)系中不允許引用不存在的實體。與實體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。表頭(header.):每一列的名稱。值(value):行的具體信息,每個值必須與該列的數(shù)據(jù)類型相同。鍵(key):鍵的值在當前列中具有唯一性。1.MySQL簡介MySQL數(shù)據(jù)庫的術(shù)語2MySQL安裝2.MySQL安裝MySQL的官方網(wǎng)址為:htps:/,官網(wǎng)首頁如圖2-1所示。單擊圖2-1中的“DOWNLOADS”,即可進入下載頁面:downloads/mysq/,如圖2-2所示。2.MySQL安裝單擊其中的下拉框,可以選擇適合各操作系統(tǒng)的MySQL,如圖2-3所示。2.MySQL安裝如果選擇MicrosoftWindows操作系統(tǒng)(如圖2-4所示),則出現(xiàn)相應(yīng)軟件的壓縮包,然后單擊“Download”按鈕即可開始下載。2.MySQL安裝如果選擇macOS操作系統(tǒng),則出現(xiàn)如圖2-5所示的頁面。2.MySQL安裝然后單擊“Download”按鈕,出現(xiàn)如圖2-6所示的頁面,直接單擊底部地“Nothanks,juststartmydownload.”,即可開始軟件下載。2.MySQL安裝下面介紹Windows下MySQL8.0.11版本的安裝。2.1解壓ZP包到指定目錄MySQL8.0.11的安裝包為ZP文件,解壓到指定目錄,如示例中的安裝目錄是E:\mysql\mysqlinstall。解壓后得到的全路徑為E:\mysql\mysqlinstall\mysql-8.0.11-winx64。解壓后的文件夾情況如圖2-7所示。2.MySQL安裝2.2添加配置文件解壓后的目錄中并沒有my.ni文件,需要自行創(chuàng)建。在安裝根目錄下添加my.ini,示例路徑為E:\mysql\mysqlinstall\mysql-8.0.11-winx64my.ini。寫入基本配置:2.MySQL安裝注意:basedir是示例中本地的安裝目錄,datadir是示例中數(shù)據(jù)庫數(shù)據(jù)文件要存放的位置,各項配置需要根據(jù)自己的環(huán)境進行配置.查看所有配置項的具體用途及含義,可參考如下網(wǎng)址:/doc/refman/8.0/en/mysqld-option-tables.html2.3數(shù)據(jù)庫初始化配置好my.ini文件后,接下來做數(shù)據(jù)庫的初始化。進入MySQL安裝目錄的bin目錄下執(zhí)行以下命令:執(zhí)行以上命令后,會打印rOot用戶的初始密碼,完整操作如下:2.MySQL安裝注意,執(zhí)行輸出結(jié)果里面有一段:[Note][MY-010454][Server]Atemporarypasswordisgeneratedforroot(@localhost:h*Fc#8FhuufA。在這個輸出結(jié)果中,root@localhost:后面的“h*Fc#8FhuufA”是初始密碼(不含首位空格),在沒有更改密碼前,需要記住這個密碼,后續(xù)操作中的登錄需要用到。如果執(zhí)行到這一步時忘記了密碼可以到安裝目錄下,將datadir配置的目錄刪除,再執(zhí)行一遍初始化命令,就可以重新生成對應(yīng)的密碼。2.MySQL安裝2.4安裝服務(wù)執(zhí)行完上面的操作命令后,就可以通過命令netstartmysql啟動MySQL的服務(wù)了。具體操作示例如下:當看到上面的輸出命令時,即代表MySQL已經(jīng)安裝成功,此時MySQL服務(wù)也已經(jīng)啟動。2.MySQL安裝2.5更改密碼MySQL服務(wù)啟動后,就可以進入MySQL的命令模式了,進入的指令形式如下:參數(shù)說明如下。-h:指定客戶端所要登錄的MySQL主機名,登錄本機(1ocalhost或)時,本參數(shù)可以省略。-u:登錄的用戶名。-p:告訴服務(wù)器將使用一個密碼來登錄,如果希望登錄的用戶名和密碼為空,可以忽略此選項。如登錄本機的MySQL數(shù)據(jù)庫,只需要輸入以下命令:2.MySQL安裝輸入這個指令,回車后會提示輸入密碼,記住了上面第3步安裝時的密碼,填入即可登錄成功,進入MySQL命令模式。具體操作示例如下:2.MySQL安裝由操作結(jié)果可以看到,可以進入MySQL命令模式了。這里通過操作會發(fā)現(xiàn),這個密碼并不好記,如果每次登錄都只能用這個密碼,那會不會太麻煩了,可以更改密碼嗎?不要著急,接下來講解如何更改這個密碼。在上面MySQL命令模式后面輸入如下指令:輸入上面的指令,回車后就完成密碼的更改了。當然,在執(zhí)行上面指令前,需要想好自己想要的密碼,并替換新密碼三個字。比如,想把新密碼設(shè)置為root,操作方式如下:若執(zhí)行操作后輸出“QueryOK”字符,則表明密碼更改成功。要查看更改后的密碼是否生效,可以先退出MySQL的指令模式,再從bi山目錄下輸入對應(yīng)指令進入。2.MySQL安裝完成密碼修改后,退出指令模式,再用新密碼進入指令模式的具體操作如下:2.MySQL安裝2.MySQL安裝執(zhí)行以上操作以后,密碼修改就完成了。至此,Windows下MySQL的安裝和密碼修改的操作都完成了。Linux或Mac下,MySQL的安裝更簡單,這里不再具體介紹。若確實需要,Mac下MySQL的安裝可以參考以下博文地址寫的圖解安裝方式:/youzhouliu/article/details/80782892Windows下MySQL的安裝博客文章鏈接如:/youzhouliu/article/details/807821252.MySQL安裝[知識拓展:MySQL的幾種大版本]①MySQLCommunityServer:社區(qū)版本,開源免費,但不提供官方技術(shù)支持。②MySQLEnterpriseEdition:企業(yè)版本,需付費,可以試用30天。③MySQLCluster:集群版,開源免費,可將幾個MySQLServer封裝成一個Server。。④MySQLClusterCGE:高級集群版,需付費。⑤MySQLWorkbench(GUITOOL):專為MySQL設(shè)計的ER/數(shù)據(jù)庫建模工具,是著名的數(shù)據(jù)庫設(shè)計工具DBDesigner4的繼任者。MySQLWorkbench又分為兩個版本,分別是社區(qū)版(MySQLWorkbenchOSS)、商用版(MySQLWorkbenchSE).MySQLCommunityServer是開源免費的,這也是大家常用的MySQL版本。另一方面,根據(jù)所使用操作系統(tǒng)平臺的不同,MySQL的各大版本又細分為多個更小的版本,如Linux版、Mac版、Windows版等。3MySQL基本操作3.MySQL基本操作3.1MySQL基本管理進入MySQL的指令模式后,就可以開始MySQL的基本管理了。MySQL的基本管理內(nèi)容有查看數(shù)據(jù)庫、選擇數(shù)據(jù)庫、查看數(shù)據(jù)表、查看數(shù)據(jù)表結(jié)構(gòu)、查看數(shù)據(jù)表索引等。3.1.1查看數(shù)據(jù)庫進入MySQL的指令模式界面,輸入SHOWdatabases指令,就會顯示當前登錄的MySQL下的所有數(shù)據(jù)庫。操作及結(jié)果如下:3.MySQL基本操作由上面輸出結(jié)果可以看到,當前登錄的MySQL系統(tǒng)中,Database(數(shù)據(jù)庫)下面展示了四個數(shù)值,即表示當前數(shù)據(jù)庫系統(tǒng)中有四個數(shù)據(jù)庫。這四個庫是默認創(chuàng)建的,更詳細信息可以參考附錄A。3.1.2選擇數(shù)據(jù)庫數(shù)據(jù)表是放置在數(shù)據(jù)庫中的,需要先進入某個數(shù)據(jù)庫。在終端進入某個數(shù)據(jù)庫的指令語法為:比如,要進入MySQL庫,則操作如下:3.MySQL基本操作3.1.3查看數(shù)據(jù)庫進入數(shù)據(jù)庫后,就可以查看數(shù)據(jù)庫中的數(shù)據(jù)表,查看數(shù)據(jù)表的語法為:如查看MySQL庫中的表,則操作如下:3.MySQL基本操作3.1.4查看數(shù)據(jù)庫結(jié)構(gòu)查看某個數(shù)據(jù)表的具體信息的命令如下:該命令將顯示數(shù)據(jù)表的屬性、屬性類型、主鍵信息、是否為ULL、默認值等其他信息。具體操作示例如下:3.MySQL基本操作3.MySQL基本操作3.1.5查看數(shù)據(jù)表索引顯示數(shù)據(jù)表的索引信息的命令如下:該命令將顯示數(shù)據(jù)表的詳細索引信息,包括PRIMARYKEY(主鍵)信息。具體操作示例如下::3.MySQL基本操作3.MySQL基本操作3.2MySQL數(shù)據(jù)庫操作MySQL的數(shù)據(jù)庫操作有創(chuàng)建數(shù)據(jù)庫、刪除數(shù)據(jù)庫、選擇數(shù)據(jù)庫等操作。選擇數(shù)已經(jīng)在前面介紹,下面分別介紹創(chuàng)建數(shù)據(jù)庫和刪除數(shù)據(jù)庫。3.2.1創(chuàng)建數(shù)據(jù)庫在登錄MySQL服務(wù)后,可以在指令模式界面使用CREATE命令創(chuàng)建數(shù)據(jù)庫,如下(不區(qū)分大小寫):比如,創(chuàng)建一個名為test的數(shù)據(jù)庫的示例代碼如下:3.MySQL基本操作具體示例如下:由結(jié)果可知,數(shù)據(jù)庫test創(chuàng)建成功了,通過SHOWdatabase命令可以看到輸出結(jié)果中新增了數(shù)據(jù)庫test。3.MySQL基本操作3.2MySQL數(shù)據(jù)庫操作3.2.2刪除數(shù)據(jù)庫數(shù)據(jù)庫可以創(chuàng)建,也可以刪除。刪除數(shù)據(jù)庫DROP命令的語法如下(不區(qū)分大小寫):比如,刪除前面創(chuàng)建的test庫的示例代碼如下:3.MySQL基本操作具體示例如下:由結(jié)果可知,test庫被刪除了,通過SHOWdatabase命令可以看到輸出結(jié)果中已經(jīng)不存在名為test的數(shù)據(jù)庫了。在刪除數(shù)據(jù)庫過程中務(wù)必十分謹慎,因為在執(zhí)行刪除命令后,所有數(shù)據(jù)將消失。3.MySQL基本操作3.3MySQL數(shù)據(jù)庫類型3.3.1數(shù)值類型MySQL支持所有標準的SQL數(shù)值數(shù)據(jù)類型,包括嚴格數(shù)值數(shù)據(jù)類型(NTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數(shù)值數(shù)據(jù)類型(FLOAT、REAL和DOUBLEPRECISION)。關(guān)鍵字NT是NTEGER的同義詞,關(guān)鍵字DEC是DECIMAL的同義詞。BIT數(shù)據(jù)類型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。作為SQL標準的擴展,MySQL也支持整數(shù)類型TINYINT、MEDIUMINT和BIGINT.表2-1顯示了需要的每個整數(shù)類型的存儲和范圍。MySQL中定義數(shù)據(jù)字段的類型對數(shù)據(jù)庫的優(yōu)化是非常重要的。MySQL支持多種類型,大致可以分為三類:數(shù)值、日期/時間和字符串(字符)類型。3.MySQL基本操作3.MySQL基本操作3.3.2日期和時間類型表示時間值的日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR.每個時間類型有一個有效值范圍和一個“零”值,當指定不合法的MySQL不能表示的值時,使用“零”值替代。TIMESTAMP類型有專有的自動更新特性。日期和時間類型的各屬性如表2-2所示。3.MySQL基本操作3.3.3字符串類型字符串類型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和$ET。表2-3展示了字符串類型如何工作以及如何在查詢中使用。CHAR和VARCHAR類型類似,但它們保存和檢索的方式不同。它們的最大長度和尾部空格是否被保留等方面也不同。在存儲或檢索過程中不進行大小寫轉(zhuǎn)換。BINARY和VARBINARY類似CHAR和VARCHAR,不同的是,它們包含二進制字符串而不是非二進制字符串。也就是說,它們包含字節(jié)字符串而不是字符字符串。它們沒有字符集,排序和比較基于列值字節(jié)的數(shù)值。BLOB是一個二進制大對象,可以容納可變數(shù)量的數(shù)據(jù),有4種:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,區(qū)別在于可容納存儲范圍的不同。TEXT類型有4種:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。它們可存儲的最大長度不同,可根據(jù)實際情況選擇。3.MySQL基本操作3.MySQL基本操作3.4MySQL數(shù)據(jù)表操作3.4.1創(chuàng)建數(shù)據(jù)庫創(chuàng)建MySQL數(shù)據(jù)表需要以下信息:表名,表字段名,每個表的字段。以下為創(chuàng)建MySQL數(shù)據(jù)表的SQL通用語法:數(shù)據(jù)表的基本操作包括:創(chuàng)建數(shù)據(jù)表、刪除數(shù)據(jù)表、插入數(shù)據(jù)、查詢數(shù)據(jù)、WHERE子句、UPDATE更新、DELETE語句等。比如,為方便記錄“Pytho快樂學(xué)習(xí)班”所有同學(xué)的基本信息,需要在MySQL中創(chuàng)建data_school庫,從中創(chuàng)建一張名為pythonclass的數(shù)據(jù)表,表中有自增主鍵、學(xué)生學(xué)號、學(xué)生姓名、學(xué)生班級名稱幾個字段。這個操作的實現(xiàn)如下所示。3.MySQL基本操作創(chuàng)建dataschool數(shù)據(jù)庫:在dataschool數(shù)據(jù)庫中創(chuàng)建python_class表:3.MySQL基本操作由執(zhí)行結(jié)果看到,創(chuàng)建了一個名為pythonclass的表?!臼纠馕觥咳绻幌胱侄螢镹ULL,可以設(shè)置字段的屬性為NOTNULL,在操作數(shù)據(jù)庫時,如果輸入該字段的數(shù)據(jù)為NULL,就會報錯。AUTOINCREMENT定義列為自增的屬性,一般用于主鍵,數(shù)值會自動加1.PRIMARYKEY用于定義列為主鍵??梢允褂枚嗔衼矶x主鍵,列間以逗號分隔。ENGINE設(shè)置存儲引擎,CHARSET設(shè)置編碼。在實際項目應(yīng)用中,創(chuàng)建數(shù)據(jù)表是一個比較常用的操作。不過,在創(chuàng)建一個數(shù)據(jù)表之前,需要先進行表結(jié)構(gòu)的設(shè)計,否則會在創(chuàng)建表與別除表之間來回操作,或是需要經(jīng)常更改表結(jié)構(gòu)。3.MySQL基本操作數(shù)據(jù)表可以創(chuàng)建,也可以別除。MySQL中數(shù)據(jù)表刪除的通用語法如下:3.4.2刪除數(shù)據(jù)庫其中,tablename指的是表名。如要刪除上面創(chuàng)建的python_class表,具體操作如下:3.MySQL基本操作執(zhí)行刪除pythonclass表的操作后,可以看到數(shù)據(jù)庫中pythonclass表已經(jīng)不存在了。MySQL中刪除數(shù)據(jù)表是非常容易操作的,因為執(zhí)行刪除命令后所有數(shù)據(jù)都會消失,所以在進行刪除表操作時要非常小心。在實際項目應(yīng)用中,刪除表的操作是一個比較基本的操作,也是一個比較危險的操作。在沒有經(jīng)過足夠的思考前,不要輕易進行表刪除操作,否則會追悔莫及。3.MySQL基本操作MySQL表中使用NSERTINTOSQL語句來插入數(shù)據(jù)。MySQL數(shù)據(jù)表插入數(shù)據(jù)通用的NSERTINTO的語法如下:3.4.3插入數(shù)據(jù)如果數(shù)據(jù)是字符型的,必須使用單引號或者雙引號,如"小智”。如在data_school中重新創(chuàng)建pythonclass表,向表中插入小萌、小智、小強三位同學(xué)的基本信息。具體操作如下:3.MySQL基本操作注意:箭頭標記(>)不是SQL語句的一部分,僅僅表示一個新行。如果一條SQL語句太長,可以通過回車鍵創(chuàng)建一個新行來編寫SQL語句,SQL語句的命令結(jié)束符為分號(;)。熟悉后,可以將一整條插入語句寫在一行,如上面示例中的后面兩條插入語句。在以上實例中,并沒有提供字段id的數(shù)據(jù)。因為在創(chuàng)建表的時候,字段d已經(jīng)設(shè)置為AUTOINCREMENT(自增)屬性,所以,id字段會自增而不需要去設(shè)置。以上示例中插入語句返回的結(jié)果是“QueryOK,1rowaffected”,這表明插入成功,但插入的結(jié)果形式該怎么查看呢,接下來看查詢數(shù)據(jù)是怎樣操作的。在實際項目應(yīng)用中,插入數(shù)據(jù)是一個非常基本的操作。插入數(shù)據(jù)的操作有不少技巧,特別在對插入效率有要求的操作中,可以有很多優(yōu)化方式。在實際應(yīng)用中遇到時,可以嘗試做優(yōu)化。3.MySQL基本操作MySQL數(shù)據(jù)庫使用SELECT語句來查詢數(shù)據(jù)。MySQL數(shù)據(jù)庫中查詢數(shù)據(jù)通用的SELECT語法如下:3.4.4查詢數(shù)據(jù)SELECT命令可以讀取一條或者多條記錄。columnname為需要查詢的字段名,使用columnname時,指定了columnname的字段才會被查詢。也可以使用“*”來代替字段名,使用“*”時,SELECT語句會返回表的所有字段數(shù)據(jù)。3.MySQL基本操作由結(jié)果就能看到前面插入的數(shù)據(jù)了。在大多數(shù)實際項目應(yīng)用中,查詢操作幾乎是被執(zhí)行最多的一個操作。所以,查詢操作語句的編寫更需要注意執(zhí)行效率的問題,在越龐大復(fù)雜的系統(tǒng)中,對查詢語句的要求會越高。在平時的學(xué)習(xí)積累中,我們需要更加注意編寫高效率的查詢語句。3.MySQL基本操作MySQL表中使用SELECT語句來讀取數(shù)據(jù),如果需有條件地從表中選取數(shù)據(jù),可將WHERE子句添加到SELECT語句中,其語法如下:3.4.5WHERE子句查詢語句中可以使用一個或者多個表,表之間使用逗號(,)分隔,并使用WHERE語句來設(shè)定查詢條件,可以在WHERE子句中指定任何條件,可以使用AND或者OR指定一個或多個條件。WHERE子句類似程序語言中的f條件,根據(jù)表中的字段值來讀取指定的數(shù)據(jù)。WHERE子句支持多種操作符,如表2-4所示(假定A為10,B為20):3.MySQL基本操作如果想在MySQL數(shù)據(jù)表中讀取指定的數(shù)據(jù),WHERE子句是非常有用的。使用主鍵作為WHERE子句的條件查詢是非常快速的。如果給定的條件在表中沒有任何匹配的記錄,那么查詢不會返回任何數(shù)據(jù)。如從python_class表中查找name為"小智"的記錄,操作如下:查找id為1的記錄,操作如下:3.MySQL基本操作查找id為20的記錄,操作如下:由結(jié)果可知,pythonclass表中沒有id為20的記錄,返回結(jié)果為空。查找number為1003且classname為“Python快樂學(xué)習(xí)班”的記錄,操作如下:查找number為1001或name為“小強”的記錄,操作如下:3.MySQL基本操作在實際項目應(yīng)用中,查詢語句的WHERE子句幾乎是一個標配。對于查詢語句,在試驗或測試條件下不加WHERE子句是比較正常的。但是在實際項目中,若編寫的查詢語句沒有使用WHERE子句做一些條件限制,基本上會存在一些性能問題,需要加以留意。3.4.6UPDATE子句修改或更新MySQL中的數(shù)據(jù)可以使用UPDATE命令來操作,其通用SQL語法如下:UPDATE命令可以同時更新一個或多個字段,可以在WHERE子句中指定任何條件,也可以在一個單獨表中同時更新數(shù)據(jù)。當需要更新數(shù)據(jù)表中指定行的數(shù)據(jù)時,WHERE子句是非常有用的。若將python_class表中的class_name字段值更改為“Python學(xué)習(xí)班”,則操作如下:3.MySQL基本操作由結(jié)果看到,classname字段值都更改為了“Python學(xué)習(xí)班”。若需要將name為“小強”的記錄的number字段值更改為1005,操作如下:3.MySQL基本操作由結(jié)果可知,name為“小強”的記錄的number字段值更改為了l005.UPDATE命令的WHERE子句中可搭配各種條件,大家可以嘗試。為后續(xù)講解演示,將classname的字段值更改回“Python快樂學(xué)習(xí)班”。在實際項目應(yīng)用中,UPDATE子句經(jīng)常用于指定范圍數(shù)據(jù)的更新。UPDATE子句一般會使用WHERE子句進行條件限制。3.4.7DELETE子句DELETE命令可以刪除MySQL數(shù)據(jù)表中的記錄,其通用語法如下:如果沒有指定WHERE子句,MySQL表中的所有記錄將被刪除??梢栽赪HERE子句中指定任何條件,也可以在單個表中一次性別除記錄。刪除數(shù)據(jù)表中指定的記錄時,WHERE子句是非常有用的。如別除number值為1005的記錄,操作如下:3.MySQL基本操作由結(jié)果可知,number值為1005的記錄被別除了。在實際項目應(yīng)用中,DELETE子句一般用于別除指定范圍的記錄,通常需要使用WHERE子句進行范圍篩選。使用DELETE子句也需要小心,確定選擇范圍無誤后再執(zhí)行,以避免不必要的損失。4MySQL高級操作4.MySQL高級操作由前面的講解知道,在MySQL中可以使用SELECT命令來讀取數(shù)據(jù),同時可以在SELECT語句中使用VHERE子句來獲取指定的記錄,在WHERE子句中可以使用等號(=)來設(shè)定獲取數(shù)據(jù)的條件。但是有時需要獲取某字段中含有某個字符的所有記錄,這時需要在WHERE子句中使用LIKE子句。SELECT語句使用LKE子句從數(shù)據(jù)表中讀取數(shù)據(jù)的通用語法如下:4.1LIKE子句講解MySQL的高級操作,這些操作在實際項目應(yīng)用中比較多,主要有LIKE子句、排序、分組等。4.MySQL高級操作

LKE子句中使用“%”字符來表示任意字符,如果沒有使用“%”,那么LKE子句與“=”的效果相同??梢栽赪HERE子句中指定任何條件,也可以在WHERE子句中使用LIKE子句,還可以使用LKE子句代替“=”。LKE通常與“%”一同使用,類似一個元字符的搜索。

可以使用AND或者OR指定一個或多個條件。

可以在DELETE或UPDATE命令中使用WHERE...LIKE子句來指定條件。如查找python_class表中name字段值包含“智”字的記錄,操作如下:4.MySQL高級操作查找pythonclass表中number字段值以O(shè)3結(jié)尾的記錄,操作如下:由查找結(jié)果看到,找到了number字段值為1003的記錄,%03即匹配任意以03結(jié)尾的記錄。查找python_class表中number字段值以10開頭的記錄,操作如下:4.MySQL高級操作由操作結(jié)果看到,所有number字段值以l0開頭的記錄都查找出來了。LKE子句也稱為模糊匹配,分為左模糊匹配(形如‘a(chǎn)%’)、右模糊匹配(形如‘%a’)和全模糊匹配(形如’%a%’)。使用全模糊匹配需要注意使用不上索引,查詢效率會非常低下,在實際項目中涉及全模糊查詢時,盡量轉(zhuǎn)換為其他查詢方式進行。從MySQL中查找記錄時,如果需要對讀取的數(shù)據(jù)進行排序,可以使用MySQL的ORDERBY子句來設(shè)定按哪個字段哪種方式來進行排序,再返回搜索結(jié)果。SELECT語句使用ORDERBY子句將查詢數(shù)據(jù)排序后再返回數(shù)據(jù)的通用語法如下:4.2排序

MySQL可以使用任何字段作為排序的條件,從而返回排序后的查詢結(jié)果,也可以設(shè)定多個字段來排序,還可以添加WHERE...LIKE子句來設(shè)置查詢條件。可以使用ASC或DESC關(guān)鍵字來設(shè)置查詢結(jié)果是按升序或降序排列。MySQL中對查詢結(jié)果默認按升序排列。4.MySQL高級操作如將pythonclass表中記錄按number字段升序排序,操作如下:或不需要指定排序方式,操作如下:4.MySQL高級操作如將pythonclass表中記錄按number字段降序排序,操作如下:在實際項目應(yīng)用中,查詢結(jié)果排序是比較常見的操作,除了對單個字段的排序,也可以對多個字段進行排序,多個字段的排序會根據(jù)字段次序優(yōu)先進行排序。4.MySQL高級操作

GROUPBY語句根據(jù)一列或多列對結(jié)果集進行分組。GROUPBY語法如下:4.3分組其中,function表示MySQL中的一些函數(shù),如COUNT、SUM、AVG等函數(shù)。如對pythonclass表中的記錄根據(jù)classname分組,并統(tǒng)計個數(shù),操作如下:4.MySQL高級操作

GROUPBY語句可用于數(shù)據(jù)的分組、去重等。MySQL的高級操作還有非常多,如ALTER命令、索引、連接、復(fù)制表、正則表達式、導(dǎo)入數(shù)據(jù)、導(dǎo)出數(shù)據(jù)等。這些操作在后續(xù)的項目應(yīng)用中,用到對應(yīng)的應(yīng)用場景時會進行講解,在本章就不展開做具體的講解。在實際項目應(yīng)用中,分組操作是一個比較常見的操作。數(shù)據(jù)量比較大時,對同一個分組操作需求,根據(jù)寫法不同,執(zhí)行的效率相差會很大,在實際應(yīng)用時,要多嘗試,避免寫低效率的語句。謝謝觀看Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)庫獲取PyMySQL的安裝和操作Python實戰(zhàn)之數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)庫獲取第三章1PyMySQL的介紹與安裝1.PyMySQL的介紹與安裝為了使Pytho連接數(shù)據(jù)庫,需要一個驅(qū)動,這個驅(qū)動是用于與數(shù)據(jù)庫交互的庫。在Python3.x版本中,PyMySQL是從Python連接到MySQL數(shù)據(jù)庫服務(wù)器的接口,在Python2中則使MySQLDB.PyMySQL的目標是成為MySQLDB的替代品。PyMySQL是一個開源項目,支持如下Python版本:Python2,Python2.7,Python3及以上。PyMySQL遵循Python數(shù)據(jù)庫APIv2.O規(guī)范,包含pure-PythonMySQL客戶端庫。在使用PyMySQL前,需要確保計算機上安裝了PyMySQL.如果沒有安裝PyMySQL,在Windows、Linux或Mac系統(tǒng)下,都可以通過如下命令安裝(使用pip或pip3):1.PyMySQL的介紹與安裝怎么檢查PyMySQL是否安裝成功?檢查比較簡單,如在Windows系統(tǒng)中,可以按如下操作進行檢查。打開命令提示符:然后輸入如下命令:若安裝成功,則輸入“importpymysql”命令后,光標會定位到下一行命令提示符,否則會提示如下錯誤信息:1.PyMySQL的介紹與安裝若在執(zhí)行import語句時出現(xiàn)“ModuleNotFoundError:Nomodulenamed'pymysql'”這樣的提示,則表示pymysql模塊尚未安裝,使用上面的安裝語句進行安裝即可。注意:使用pp安裝模塊時,可能需要管理員或rOot權(quán)限,安裝時根據(jù)提示正確執(zhí)行即可。2PyMySQL連接MySQL數(shù)據(jù)庫2.PyMySQL連接MySQL數(shù)據(jù)庫PyMySQL安裝成功后,就可以連接MySQL數(shù)據(jù)庫了。在連接之前有兩個概念要先理解:連接對象和游標對象。連接(Connect)對象:用MySQL服務(wù)器表示套接字。獲取此類實例的正確方法是調(diào)用connect(方法建立與MySQL數(shù)據(jù)庫的連接。連接對象中幾個關(guān)鍵參數(shù)的解釋如下(全部參數(shù)的解釋參見附錄B).2.PyMySQL連接MySQL數(shù)據(jù)庫獲取數(shù)據(jù)庫連接的基本語法如下:host:數(shù)據(jù)庫服務(wù)器所在的主機。user:以登錄身份登錄的用戶名。password:.要使用的密碼。database:要使用的數(shù)據(jù)庫,設(shè)置為None,則指不使用特定的數(shù)據(jù)庫。pot:要使用的MySQL端口,默認即可(默認值為3306)。其中的參數(shù)對應(yīng)上面參數(shù)解釋中的值。2.PyMySQL連接MySQL數(shù)據(jù)庫一般使用連接對象時,還會使用連接對象的如下方法。close():發(fā)送退出消息并關(guān)閉套接字。commit():提交更改到穩(wěn)定存儲。cursor(cursor=-None):創(chuàng)建一個新游標以執(zhí)行查詢。cursor參數(shù)指要創(chuàng)建的游標類型,即Cursor、SSCursor、.DictCursor、SSDictCursor之一,None指使用Cursor.rollback():回滾當前事務(wù)。這里大概介紹,后面示例中使用時會有更詳盡的描述。游標(Cursor)對象:這是用于與數(shù)據(jù)庫交互的對象。2.PyMySQL連接MySQL數(shù)據(jù)庫不要自己創(chuàng)建Cursor實例,調(diào)用connections..Connection.cursor()即可。游標對象的方法如下。close():關(guān)閉光標,會釋放所有剩余數(shù)據(jù)。execute(query,args-None):執(zhí)行查詢。其中,quey(字符型)參數(shù)為需要執(zhí)行的查詢。rgs(元組、列表或字典類型)為與查詢一起使用的參數(shù)(可選)。返回受影響的行數(shù)(如果有),返回數(shù)據(jù)的類型為INT.

fetchone():獲取一行。fetchall():獲取所有行。fetchmany(sizc=None):獲取指定的size行。這里大概介紹,后面示例中使用時會有更詳盡的描述。2.PyMySQL連接MySQL數(shù)據(jù)庫下面是使用PyMySQL連接MySOL數(shù)據(jù)庫的示例(mysql_conn_exp.py):執(zhí)行程序,得到執(zhí)行結(jié)果如下:2.PyMySQL連接MySQL數(shù)據(jù)庫對mysql_conn_exp.py中代碼的解釋如下。代碼importpymysql:導(dǎo)入pymysql庫。代碼db=pymysql.connect("localhost","root","root","data_school"):打開數(shù)據(jù)庫連接,參數(shù)值對應(yīng)如下:host賦值為localhost,.因為連接的是本地,非本地連接要填寫對應(yīng)的P地址。user賦值為root,用戶名為root.password賦值為root,這是一個權(quán)限最高的用戶,實際應(yīng)用中要慎用這么高權(quán)限的用戶名和密碼。database賦值為data_school,是在第2章中已經(jīng)創(chuàng)建好的一個數(shù)據(jù)庫,這里直接拿來使用。2.PyMySQL連接MySQL數(shù)據(jù)庫該行代碼也可以寫成如下形式:或?qū)懗扇缦滦问?,效果也是一樣的。代碼cursor=db.cursor():用數(shù)據(jù)庫連接對象的cursor()方法創(chuàng)建一個游標對象cursor。代碼cursor..execute(("SELECTVERSIONO):用游標對象的execute(方法執(zhí)行查詢。代碼data=cursor.fetchone():用游標對象的fetchone()方法獲取單條數(shù)據(jù)。代碼d.close():關(guān)閉數(shù)據(jù)庫連接。這里是對MySQL數(shù)據(jù)庫連接的簡單介紹,接下來展示對MySQL數(shù)據(jù)庫的更多操作。3PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.1數(shù)據(jù)庫插入操作現(xiàn)在需要通過編寫Python代碼把“小強”信息插入到python_class表中,“小強”信息為:number為1005,name為小強,class_name為Python快樂學(xué)習(xí)班。實現(xiàn)示例代碼如下(insert_exp_01.py):3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作執(zhí)行insert_exp01.py文件前先查看python_class表中的數(shù)據(jù)情況:執(zhí)行insert_exp_01.py文件后,python_class表中的數(shù)據(jù)情況如下:3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作由結(jié)果可知,小強的信息已成功插入pythonclass表中。文件insert_exp_01.py的代碼也可以寫成insert_exp._02py所示示例:該代碼的執(zhí)行效果和insert_exp_01.py文件中代碼執(zhí)行效果一致。在該示例代碼中,不要忘記寫mit()這行代碼,對于MySQL的更改操作,需要顯式做事務(wù)的提交操作,否則會導(dǎo)致數(shù)據(jù)庫中數(shù)據(jù)未成功寫入,即數(shù)據(jù)丟失。3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.2數(shù)據(jù)庫查詢操作如查看python_class表中number為1002的學(xué)生的所有信息,通過Python實現(xiàn)的示例代碼如下(selectexp.py):3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作執(zhí)行該示例代碼,得到的結(jié)果如下:3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.3數(shù)據(jù)庫更新操作若小張改名為小李,需要你在pythonclass表中將他的name值更改為小李,其他信息不變。實現(xiàn)示例代碼如下(update_cxp.py):3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作執(zhí)行以上代碼,可以從MySQL命令控制臺查看執(zhí)行結(jié)果。當然,前面已學(xué)習(xí)了數(shù)據(jù)庫查詢操作,可以結(jié)合Python的函數(shù)編寫方式,將pdate_exp.py中的代碼改寫為如下新的形式(update_exp_01.py):3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作執(zhí)行update_cxp_01.py文件中的代碼,得到輸出結(jié)果如下:3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.4刪除操作通過Python代碼也可以對MySQL數(shù)據(jù)庫進行別除操作?,F(xiàn)在需要將pythonclass表中number為1005的記錄刪除,示例代碼如下(delete_exp.py):3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作執(zhí)行該示例代碼,得到執(zhí)行結(jié)果如下:3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.5執(zhí)行事務(wù)前面的示例代碼中多處出現(xiàn)db.rollbackO這樣的代碼,含義是發(fā)生錯誤時回滾。為什么有些操作需要回滾,有些卻不需要呢?這就涉及事務(wù)問題,而事務(wù)機制可以確保數(shù)據(jù)一致性。事務(wù)具有4個屬性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。這4個屬性通常稱為ACD特性,在第1章已經(jīng)講解。在對數(shù)據(jù)庫表做操作時,對數(shù)據(jù)庫表的插入、更新、刪除操作都會涉及對數(shù)據(jù)的變更,為確保數(shù)據(jù)的一致性,一般這三個操作要在發(fā)生錯誤時做數(shù)據(jù)回滾,查詢操作不會更改數(shù)據(jù),不需要做數(shù)據(jù)的回滾。對于支持事務(wù)的數(shù)據(jù)庫,在Pytho加數(shù)據(jù)庫編程中,當游標建立時,就自動開始了一個隱形的數(shù)據(jù)庫事務(wù)。Commit()方法中,游標的所有更新操作在遇到rollbackO方法時都會回滾當前游標的所有操作。每個commitO方法都開始了一個新的事務(wù)。3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作3.6錯誤處理同Python程序一樣,通過Python代碼操作MySQL數(shù)據(jù)庫時會經(jīng)常遇到不同數(shù)據(jù)庫層的異常,DBAPI中定義了一些數(shù)據(jù)庫操作的異常,如表3-1所示。3.PyMySQL對MySQL數(shù)據(jù)庫的基本操作4PyMySQL操作多表4.PyMySQL操作多表到目前為止,所有操作都是在單表上操作的,實際應(yīng)用中,在一個SQL語句中操作多張表的操作是比較常見的。本節(jié)介紹Python代碼通過PyMySQL操作MySQL中多張表的操作。在dataschool庫中準備另一個表:學(xué)生地址表staddr,包含學(xué)生學(xué)號、學(xué)生家庭住址等信息。staddr表的創(chuàng)建通過Python代碼實現(xiàn),實現(xiàn)如下(create_table_exp.py):執(zhí)行代碼后,通過指令面板查看MySQL數(shù)據(jù)庫表,結(jié)果如下:4.PyMySQL操作多表由結(jié)果可知,data_school中已經(jīng)新增了一個名為staddr的表。創(chuàng)建st_addr表后,用批量插入的方式向表中插入幾條數(shù)據(jù),代碼如下(query_exp.py):4.PyMySQL操作多表執(zhí)行代碼,得到結(jié)果如下:4.PyMySQL操作多表由執(zhí)行結(jié)果可知,批量插入成功,數(shù)據(jù)查詢也成功。現(xiàn)在需要查number為1002的同學(xué)的name和addr,怎樣能更方便查找呢?

這里需要引進MySQL連接的使用?!斑B接”概念在第2章有提到,但沒有展開,這里對這個概念做一個補充。4.PyMySQL操作多表MySQL中一般通過JON在兩個或多個表中查詢數(shù)據(jù),即一般通過JON做連接查詢。按照功能,JON大致分為如下三類:

①NNERJOIN(內(nèi)連接,或等值連接,可以直接寫成JON):獲取兩個表中字段匹配關(guān)系的記錄。比如,A、B兩張表做內(nèi)連接,查詢到的記錄是既在A表又在B表的記錄,相當于數(shù)學(xué)中兩個集合的交集。②LEFTJOIN(左連接):獲取左表所有記錄,即使右表沒有對應(yīng)匹配的記錄。比如A、B兩張表做左連接,A為左表,B為右表,左連接得到的查詢結(jié)果是A表所有滿足條件的記錄都顯示,B表滿足條件的顯示對應(yīng)結(jié)果,不滿足條件的顯示空,保持和A表查找到的記錄條數(shù)一致。即以A表為標準,B表不夠的以空填補。③RIGHTJOIN(右連接):與LEFTJOIN相反,用于獲取右表所有記錄,即使左表沒有對應(yīng)匹配的記錄。比如,A、B兩張表做右連接,A為左表,B為右表,右連接得到的查詢結(jié)果是B表所有滿足條件的記錄都顯示,A表滿足條件的顯示對應(yīng)結(jié)果,不滿足條件的顯示空,保持與B表查找到的記錄條數(shù)一致。即以B表為標準,A表不夠的以空填補。4.PyMySQL操作多表查找number為1002的同學(xué)的name和add止r這個需求需要通過內(nèi)連接來實現(xiàn),在MySQL指令面板中的寫法及結(jié)果如下:由結(jié)果可知,使用JON得到了想要的結(jié)果。這里需要注意后面的條件開始用的是ON,不是WHERE.接下來看Python代碼的實現(xiàn)方式,示例如下(mult_table_query_exp.py):4.PyMySQL操作多表查找number為1002的同學(xué)的name和add止r這個需求需要通過內(nèi)連接來實現(xiàn),在MySQL指令面板中的寫法及結(jié)果如下:由結(jié)果可知,使用JON得到了想要的結(jié)果。這里需要注意后面的條件開始用的是ON,不是WHERE.接下來看Python代碼的實現(xiàn)方式,示例如下(mult_table_query_exp.py):4.PyMySQL操作多表4.PyMySQL操作多表執(zhí)行以上代碼,得到執(zhí)行結(jié)果如下:由結(jié)果可知,以上代碼已實現(xiàn)多表的連接操作。多表的連接操作還支持更改和刪除等操作,此處不具體舉例,大家可以自行嘗試。4.PyMySQL操作多表5高級封裝5.高級封裝從3.3

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論