MySQL數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用(慕課版)PPT全套完整教學(xué)課件_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用(慕課版)PPT全套完整教學(xué)課件_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用(慕課版)PPT全套完整教學(xué)課件_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用(慕課版)PPT全套完整教學(xué)課件_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用(慕課版)PPT全套完整教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩759頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章數(shù)據(jù)庫(kù)概述數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)類型關(guān)系型數(shù)據(jù)庫(kù)MySQL數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)類型1.21.1關(guān)系型數(shù)據(jù)庫(kù)MySQL1.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)學(xué)習(xí)目標(biāo)了解掌握掌握理解了解與數(shù)據(jù)庫(kù)相關(guān)的基本概念1掌握數(shù)據(jù)與信息42掌握常見(jiàn)的數(shù)據(jù)庫(kù)類型及各自的特點(diǎn)3理解MySQL的工作原理數(shù)據(jù)庫(kù)就像人類的大腦,可以實(shí)現(xiàn)信息數(shù)據(jù)的存放、提取及查詢功能,具有存儲(chǔ)量大、結(jié)構(gòu)完整、高效穩(wěn)定的特點(diǎn)。通過(guò)本章的學(xué)習(xí),讀者可以深入了解MySQL的特點(diǎn),認(rèn)識(shí)數(shù)據(jù)庫(kù)系統(tǒng)平臺(tái)的開發(fā)及運(yùn)行的特性。1.1數(shù)據(jù)庫(kù)系統(tǒng)1.1.1數(shù)據(jù)與信息返回目錄1.1.2數(shù)據(jù)存儲(chǔ)單元——服務(wù)器1.1.3數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)成1.1.4數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)1.1.1數(shù)據(jù)與信息數(shù)據(jù)(Data)是觀察事物的結(jié)果,是對(duì)事物的性質(zhì)、狀態(tài)及相互關(guān)系進(jìn)行的物理組合。數(shù)據(jù)不僅可以是狹義上的數(shù)字,而且可以是具有一定意義的文本、數(shù)字符號(hào)等。圖形、圖像、視頻、音頻,也是對(duì)客觀事物的屬性、數(shù)量、位置及其相互關(guān)系的抽象表示,也屬于數(shù)據(jù)。例如,“0,1,2,…”“陰、氣溫下降”“學(xué)生的檔案記錄”“貨物的運(yùn)輸情況”等都是數(shù)據(jù)。在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)是所有能輸入計(jì)算機(jī)并被計(jì)算機(jī)程序處理的數(shù)字、字母、符號(hào)和模擬量等的總稱。現(xiàn)代計(jì)算機(jī)存儲(chǔ)和處理的對(duì)象十分廣泛,表示這些對(duì)象的數(shù)據(jù)也隨之變得越來(lái)越復(fù)雜。信息與數(shù)據(jù)既有聯(lián)系又有區(qū)別。數(shù)據(jù)是信息的表現(xiàn)形式和載體,而信息是數(shù)據(jù)的內(nèi)涵。信息加載于數(shù)據(jù)之上,對(duì)數(shù)據(jù)有解釋的作用。數(shù)據(jù)和信息是不可分離的,信息依賴數(shù)據(jù)來(lái)表達(dá),數(shù)據(jù)則生動(dòng)具體地表達(dá)出信息。1.1.1數(shù)據(jù)與信息數(shù)據(jù)是符號(hào),是物理性的;信息是對(duì)數(shù)據(jù)進(jìn)行加工處理的結(jié)果,會(huì)對(duì)決策產(chǎn)生影響,是邏輯性和觀念性的。1.1.2數(shù)據(jù)存儲(chǔ)單元——服務(wù)器人們?cè)谫?gòu)物網(wǎng)站挑選商品,用手機(jī)預(yù)約酒店和查看當(dāng)?shù)靥鞖?,在家預(yù)約掛號(hào),數(shù)據(jù)中心有數(shù)以萬(wàn)計(jì)的服務(wù)器將信息匯總,通過(guò)電子設(shè)備呈現(xiàn)到用戶面前,這些服務(wù)器構(gòu)成龐大的數(shù)據(jù)庫(kù)系統(tǒng),將資源整合連接。數(shù)據(jù)庫(kù)系統(tǒng)(DatabaseSystem)是由數(shù)據(jù)庫(kù)及其管理軟件組成的系統(tǒng)。用戶可將數(shù)據(jù)庫(kù)視為電子化的書柜(存儲(chǔ)電子書籍的地方),可以對(duì)書柜中的數(shù)據(jù)進(jìn)行增加、刪除、修改、查找等操作。圖所示為機(jī)架式服務(wù)器。1.1.2數(shù)據(jù)存儲(chǔ)單元——服務(wù)器服務(wù)器是數(shù)據(jù)中心的基本單元,每臺(tái)服務(wù)器都有獨(dú)立的CPU和內(nèi)存用來(lái)接收上傳和下載請(qǐng)求,衡量服務(wù)器大小的單位是U,常見(jiàn)的尺寸有1U、2U和4U。1U表示服務(wù)器的高度約為4.445cm,服務(wù)器越高能裝的硬盤就越多。機(jī)柜的高度一般為42U,可以并排放下16臺(tái)1U的服務(wù)器。除此之外,機(jī)柜剩下的空間要留給供電單元和網(wǎng)絡(luò)接收單元。每100m2大約可以放下20臺(tái)機(jī)柜。以百度云計(jì)算(陽(yáng)泉)中心為例,一期的總建筑面積達(dá)12萬(wàn)m2,數(shù)據(jù)存儲(chǔ)規(guī)模、計(jì)算能力和環(huán)保節(jié)能三方面都處于亞洲一流水平。百度云計(jì)算(陽(yáng)泉)中心數(shù)據(jù)存儲(chǔ)量超過(guò)4000PB,機(jī)房滿載可提供約6000個(gè)40A機(jī)柜、承載超過(guò)16萬(wàn)臺(tái)服務(wù)器,可存儲(chǔ)的信息量相當(dāng)于20多萬(wàn)個(gè)國(guó)家圖書館的藏書總量。1.1.2數(shù)據(jù)存儲(chǔ)單元——服務(wù)器圖所示為服務(wù)器與機(jī)柜。1.1.3數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)成龐大的數(shù)據(jù)庫(kù)系統(tǒng)不僅提供了數(shù)據(jù)存儲(chǔ)能力,而且為數(shù)據(jù)的運(yùn)算提供了有力的支持,使人們的上網(wǎng)體驗(yàn)得到了提升。數(shù)據(jù)庫(kù)系統(tǒng)主要由存儲(chǔ)單元、硬件、軟件和人員這四部分構(gòu)成,如圖所示。1.1.3數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)成1.存儲(chǔ)單元數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)學(xué)模型組織、描述和存儲(chǔ),具有極小的冗余、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可為各種用戶共享。2.硬件數(shù)據(jù)庫(kù)系統(tǒng)的硬件組成包括構(gòu)成計(jì)算機(jī)系統(tǒng)的各種物理設(shè)備,像CPU、內(nèi)存和磁盤這些必要的硬件設(shè)施,當(dāng)然,空調(diào)、應(yīng)急電源、傳感器等也都包括在系統(tǒng)之內(nèi)。硬件的配置應(yīng)滿足整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的需求。3.軟件數(shù)據(jù)庫(kù)系統(tǒng)的軟件包括操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)及應(yīng)用程序。數(shù)據(jù)庫(kù)管理系統(tǒng)(DatabaseManagementSystem,DBMS)是數(shù)據(jù)庫(kù)系統(tǒng)的核心軟件,在操作系統(tǒng)的支持下工作,科學(xué)地組織和存儲(chǔ)數(shù)據(jù),高效獲取和維護(hù)數(shù)據(jù)。1.1.3數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)成其主要功能包括數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)庫(kù)的運(yùn)行管理和數(shù)據(jù)庫(kù)的建立與維護(hù)。4.人員數(shù)據(jù)庫(kù)系統(tǒng)的正常運(yùn)行離不開人員的維護(hù)和優(yōu)化,數(shù)據(jù)庫(kù)系統(tǒng)只有在專業(yè)人員的手中才能發(fā)揮其出色的性能。根據(jù)不同的數(shù)據(jù)庫(kù)崗位職責(zé),人員可劃分為三類,如表所示。1.1.4數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)化使數(shù)據(jù)管理更加方便,同時(shí)數(shù)據(jù)庫(kù)系統(tǒng)豐富的接口可以與外界應(yīng)用進(jìn)行數(shù)據(jù)溝通與交換。數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)如下。1.實(shí)現(xiàn)數(shù)據(jù)共享數(shù)據(jù)共享是指所有用戶可以同時(shí)存儲(chǔ)和讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù),也是指用戶可以使用各種方式通過(guò)接口來(lái)調(diào)用數(shù)據(jù)庫(kù)。2.減少系統(tǒng)和數(shù)據(jù)的冗余和文件系統(tǒng)相比,數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)共享,從而避免了由用戶各自建立應(yīng)用文件造成的大量數(shù)據(jù)重復(fù)和系統(tǒng)冗余,保持了數(shù)據(jù)的一致性,性能更加穩(wěn)定。1.1.4數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)3.?dāng)?shù)據(jù)實(shí)現(xiàn)集中控制相對(duì)于文件系統(tǒng)中數(shù)據(jù)處于分散狀態(tài),同一用戶或不同用戶在處理數(shù)據(jù)過(guò)程中,文件之間無(wú)關(guān)系的管理方式,數(shù)據(jù)庫(kù)系統(tǒng)可對(duì)數(shù)據(jù)進(jìn)行集中控制和管理,并通過(guò)數(shù)據(jù)模型來(lái)表示各種數(shù)據(jù)和組織之間的聯(lián)系。4.保持?jǐn)?shù)據(jù)的安全、完整合并發(fā)數(shù)據(jù)庫(kù)系統(tǒng)可以實(shí)現(xiàn)安全性控制(防止數(shù)據(jù)丟失、錯(cuò)誤更新和越權(quán)使用)、完整性控制(保證數(shù)據(jù)的正確性、有效性和相容性)、并發(fā)控制(既能在同一時(shí)間周期內(nèi)允許對(duì)數(shù)據(jù)實(shí)現(xiàn)多路存取,又能防止用戶之間的不正常交互)。5.故障恢復(fù)數(shù)據(jù)庫(kù)管理系統(tǒng)可以實(shí)現(xiàn)數(shù)據(jù)的監(jiān)控和定期備份,可及時(shí)發(fā)現(xiàn)故障和修復(fù)故障,從而防止數(shù)據(jù)被破壞。即使在數(shù)據(jù)丟失的情況下,也可以將備份的數(shù)據(jù)恢復(fù)到相鄰的備份節(jié)點(diǎn),減少經(jīng)濟(jì)損失1.2數(shù)據(jù)庫(kù)類型1.2.1數(shù)據(jù)模型返回目錄1.2.2關(guān)系型數(shù)據(jù)庫(kù)1.2.3非關(guān)系型數(shù)據(jù)庫(kù)1.2.1數(shù)據(jù)建模數(shù)據(jù)模型是科學(xué)研究的一種重要方法,模型可以形象直觀地反映出事物的結(jié)構(gòu)與特點(diǎn),方便理解與記憶。將客觀事物抽象為數(shù)據(jù)模型,是一個(gè)逐步抽象轉(zhuǎn)化的過(guò)程。計(jì)算機(jī)領(lǐng)域常見(jiàn)的數(shù)據(jù)模型有以下四種。1.層次模型數(shù)據(jù)庫(kù)層次模型就像一棵樹,主干上有著不同的分支,描述一對(duì)多的層次關(guān)系非常自然直觀,容易理解。這種模型為數(shù)據(jù)庫(kù)系統(tǒng)提供了良好的完整性支持,如圖所示。1.2.1數(shù)據(jù)建模層次模型的主要缺點(diǎn):對(duì)于非層次關(guān)系,如多對(duì)多關(guān)系、一個(gè)節(jié)點(diǎn)具有多個(gè)父節(jié)點(diǎn)等,使用層次模型表示容易出現(xiàn)關(guān)系混亂;對(duì)插入和刪除操作的限制比較多;查詢子節(jié)點(diǎn)必須經(jīng)過(guò)父節(jié)點(diǎn),容易造成查詢時(shí)間延長(zhǎng)從而影響性能。2.網(wǎng)狀模型在實(shí)際開發(fā)中,事物之間的聯(lián)系更多的是非層次關(guān)系,用層次模型表示很不直接,網(wǎng)狀模型則可以解決這一弊端。網(wǎng)狀模型就像是一張蜘蛛網(wǎng),各個(gè)節(jié)點(diǎn)相互連接。在數(shù)據(jù)庫(kù)中,滿足以下兩個(gè)條件的數(shù)據(jù)模型稱為網(wǎng)狀模型。1.2.1數(shù)據(jù)建模(1)允許一個(gè)以上的節(jié)點(diǎn)無(wú)父節(jié)點(diǎn);(2)一個(gè)節(jié)點(diǎn)可以有多于一個(gè)的父節(jié)點(diǎn)。從以上定義可以看出,網(wǎng)狀模型具有比層次模型更復(fù)雜的網(wǎng)狀結(jié)構(gòu),如圖所示。1.2.1數(shù)據(jù)建模3.關(guān)系型模型雖然網(wǎng)狀模型和層次模型已經(jīng)可以很好地解決數(shù)據(jù)的集中和共享問(wèn)題,但它們?cè)跀?shù)據(jù)獨(dú)立和抽象級(jí)別上仍有很大欠缺。關(guān)系型模型可以解決它們?cè)跀?shù)據(jù)庫(kù)存取時(shí)仍然需要明確數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、指出存取路徑等問(wèn)題。在關(guān)系型數(shù)據(jù)庫(kù)中,對(duì)數(shù)據(jù)的操作幾乎全部建立在一個(gè)或多個(gè)關(guān)系表格上,通過(guò)表格分類、合并、連接或選取等運(yùn)算來(lái)實(shí)現(xiàn)數(shù)據(jù)的管理。本書所講的MySQL就采用了關(guān)系型模型的結(jié)構(gòu)。關(guān)系型模型如表所示。1.2.1數(shù)據(jù)建模4.面向?qū)ο竽P兔嫦驅(qū)ο竽P褪且环N新興的數(shù)據(jù)模型,它以對(duì)象為單位,每個(gè)對(duì)象包含對(duì)象的屬性和方法,具有類和繼承等特點(diǎn)。與傳統(tǒng)的數(shù)據(jù)庫(kù)(如層次數(shù)據(jù)庫(kù)、網(wǎng)狀數(shù)據(jù)庫(kù)或關(guān)系型數(shù)據(jù)庫(kù))不同,面向?qū)ο髷?shù)據(jù)庫(kù)適合存儲(chǔ)不同類型的數(shù)據(jù),如圖像、音頻、視頻、文本、數(shù)字等。面向?qū)ο竽P途哂袕?qiáng)大的語(yǔ)義表達(dá)能力,能夠精確地描述數(shù)據(jù)、數(shù)據(jù)之間的聯(lián)系和完整性約束條件,這使得面向?qū)ο竽P驮跀?shù)據(jù)庫(kù)和數(shù)據(jù)集成中的應(yīng)用越來(lái)越廣泛。面向?qū)ο竽P腿鐖D所示1.2.2關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)是指采用關(guān)系型模型來(lái)組織數(shù)據(jù)的數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)采用了關(guān)系對(duì)應(yīng)的表現(xiàn)形式,以行和列的形式存儲(chǔ)數(shù)據(jù),就像是一組二維表格,便于用戶理解。每一列代表著不同的選項(xiàng),每一行代表著不同的數(shù)據(jù)。行與列組成的區(qū)域被稱為表,一組表組成了數(shù)據(jù)庫(kù)。用戶可以通過(guò)SQL語(yǔ)句或者索引等方式來(lái)查詢、檢索數(shù)據(jù)庫(kù)中的數(shù)據(jù)。1.關(guān)系型數(shù)據(jù)庫(kù)特點(diǎn)關(guān)系型數(shù)據(jù)庫(kù)的特點(diǎn)體現(xiàn)在以下幾個(gè)方面。(1)存儲(chǔ)結(jié)構(gòu)關(guān)系型數(shù)據(jù)庫(kù)按照結(jié)構(gòu)化的方法存儲(chǔ)數(shù)據(jù),每個(gè)數(shù)據(jù)表的行列都必須對(duì)應(yīng)相應(yīng)的字段(也就是先定義好表的結(jié)構(gòu)),再根據(jù)表的結(jié)構(gòu)存入數(shù)據(jù)。1.2.2關(guān)系型數(shù)據(jù)庫(kù)因?yàn)閿?shù)據(jù)的形式和內(nèi)容在存入之前就已經(jīng)定義好了,所以整個(gè)數(shù)據(jù)表的可靠性和穩(wěn)定性都比較高。事先定義表結(jié)構(gòu)也帶來(lái)了相應(yīng)的問(wèn)題,就是一旦存入數(shù)據(jù),再要修改數(shù)據(jù)表的結(jié)構(gòu)就會(huì)十分困難。(2)擴(kuò)展方式由于關(guān)系型數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)表中,因此數(shù)據(jù)操作的瓶頸就出現(xiàn)在多張數(shù)據(jù)表的操作中,而且數(shù)據(jù)表越多問(wèn)題越嚴(yán)重。要緩解這個(gè)問(wèn)題,只能提高處理能力,也就是選擇速度更快、性能更高的計(jì)算機(jī),但拓展空間顯然非常有限,也就是說(shuō),關(guān)系型數(shù)據(jù)庫(kù)只具備縱向擴(kuò)展能力。1.2.2關(guān)系型數(shù)據(jù)庫(kù)(3)查詢方式關(guān)系型數(shù)據(jù)庫(kù)采用結(jié)構(gòu)化查詢語(yǔ)言(StructuredQueryLanguage,SQL)來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢。SQL早已獲得了各個(gè)數(shù)據(jù)庫(kù)廠商的支持,成為數(shù)據(jù)庫(kù)行業(yè)標(biāo)準(zhǔn),它支持?jǐn)?shù)據(jù)的增加、查詢、更新、刪除操作,具有非常強(qiáng)大的功能。SQL可以采用類似索引的方法來(lái)加快查詢操作。(4)事務(wù)性關(guān)系型數(shù)據(jù)庫(kù)強(qiáng)調(diào)ACID規(guī)則:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。它可以滿足對(duì)事務(wù)性要求較高或者需要進(jìn)行復(fù)雜數(shù)據(jù)查詢的任務(wù)需求,而且可以充分滿足數(shù)據(jù)庫(kù)操作的高性能和操作穩(wěn)定性的要求。關(guān)系型數(shù)據(jù)庫(kù)強(qiáng)調(diào)數(shù)據(jù)的強(qiáng)一致性,可以控制事務(wù)原子性細(xì)粒度,并且一旦操作有誤或者有需要,可以回滾事務(wù)。1.2.2關(guān)系型數(shù)據(jù)庫(kù)(5)讀寫性能關(guān)系型數(shù)據(jù)庫(kù)十分強(qiáng)調(diào)數(shù)據(jù)的一致性,并為此降低讀寫性能,付出了巨大的代價(jià)。雖然關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)和處理數(shù)據(jù)的可靠性很不錯(cuò),但一旦面對(duì)海量數(shù)據(jù)的處理,效率就會(huì)變得很低,特別是遇到高并發(fā)讀寫的時(shí)候,性能會(huì)下降得非常厲害。關(guān)系型數(shù)據(jù)庫(kù)誕生已有40多年了,從理論產(chǎn)生到實(shí)現(xiàn)產(chǎn)品,一直有很多廠商在開發(fā)自己的關(guān)系型數(shù)據(jù)庫(kù)。2.關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品(1)Oracle數(shù)據(jù)庫(kù)1979年,Oracle(甲骨文,前身叫SDL)公司引入了第一個(gè)商用SQL關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。Oracle公司是最早開發(fā)關(guān)系型數(shù)據(jù)庫(kù)的廠商之一,其產(chǎn)品支持最廣泛的操作系統(tǒng)平臺(tái)。1.2.2關(guān)系型數(shù)據(jù)庫(kù)目前Oracle關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品占有很大市場(chǎng)比例。甲骨文公司商標(biāo)如圖所示。Oracle數(shù)據(jù)庫(kù)主要應(yīng)用在傳統(tǒng)大企業(yè)、政府機(jī)構(gòu)、金融機(jī)構(gòu)、證券機(jī)構(gòu)等。1.2.2關(guān)系型數(shù)據(jù)庫(kù)(2)SQLServer數(shù)據(jù)庫(kù)MicrosoftSQLServer是微軟公司開發(fā)的大型關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)。SQLServer可以與Windows操作系統(tǒng)緊密集成,不論是應(yīng)用程序開發(fā)速度還是系統(tǒng)事務(wù)處理運(yùn)行速度,都能得到較大的提升。對(duì)于在Windows平臺(tái)上開發(fā)的各種企業(yè)級(jí)信息管理系統(tǒng)來(lái)說(shuō),不論是C/S(客戶機(jī)/服務(wù)器)架構(gòu)還是B/S(瀏覽器/服務(wù)器)架構(gòu),SQLServer都是一個(gè)很好的選擇。SQLServer的缺點(diǎn)是只能在Windows系統(tǒng)下運(yùn)行。SQLServer圖標(biāo)如圖所示。1.2.2關(guān)系型數(shù)據(jù)庫(kù)SQLServer數(shù)據(jù)庫(kù)主要應(yīng)用在部分電商和使用Windows服務(wù)器平臺(tái)的企業(yè)。(3)Access數(shù)據(jù)庫(kù)Access是入門級(jí)小型桌面數(shù)據(jù)庫(kù),性能和安全性都很一般,可供個(gè)人管理或小型網(wǎng)站使用。Access不是數(shù)據(jù)庫(kù)語(yǔ)言,只是一個(gè)數(shù)據(jù)庫(kù)程序。Access數(shù)據(jù)庫(kù)圖標(biāo)如圖所示。Access數(shù)據(jù)庫(kù)早期應(yīng)用于小型程序系統(tǒng)ASP+Access、系統(tǒng)留言板、校友錄等。1.2.3非關(guān)系型數(shù)據(jù)庫(kù)非關(guān)系型數(shù)據(jù)庫(kù)也被稱為NOSQL(NotOnlySQL)數(shù)據(jù)庫(kù)。它的產(chǎn)生并不是要徹底否定關(guān)系型數(shù)據(jù)庫(kù),而是作為傳統(tǒng)數(shù)據(jù)庫(kù)的一個(gè)有效補(bǔ)充。非關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)不需要固定的表結(jié)構(gòu),一般情況下也不存在對(duì)數(shù)據(jù)的連續(xù)操作。相對(duì)于關(guān)系型數(shù)據(jù)庫(kù),非關(guān)系型數(shù)據(jù)庫(kù)在大數(shù)據(jù)存取上具備無(wú)法比擬的性能優(yōu)勢(shì)。常見(jiàn)的非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品有以下3種。1.MemcachedMemcached是一個(gè)開源的、高性能的、具有分布式內(nèi)存對(duì)象的緩存系統(tǒng)。通過(guò)它可以減輕數(shù)據(jù)庫(kù)負(fù)載,加速動(dòng)態(tài)的Web應(yīng)用。Memcached的最初版本由LiveJounal的布拉德·菲茨帕特里克(BradFitzpatrick)在2003年開發(fā)完成。目前全球有非常多的用戶在使用它來(lái)構(gòu)建自己的大負(fù)載網(wǎng)站或提高自己的高訪問(wèn)網(wǎng)站的響應(yīng)速度。1.2.3非關(guān)系型數(shù)據(jù)庫(kù)Memcached圖標(biāo)如圖所示。1.2.3非關(guān)系型數(shù)據(jù)庫(kù)2.RedisRedis與Memcached類似,也是一個(gè)高性能的鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)系統(tǒng)。為了保證效率,Redis的數(shù)據(jù)都緩存在內(nèi)存中。與Memcached的區(qū)別是,Redis會(huì)周期性地把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了主從(Master-Slave)同步。Redis的出現(xiàn),很大程度上補(bǔ)償了Memcached這類鍵值存儲(chǔ)的不足,在部分場(chǎng)合可以對(duì)關(guān)系型數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Python、Ruby、Erlang、PHP客戶端,使用很方便,支持主從集群與分布式,支持隊(duì)列等特殊功能。Redis圖標(biāo)如圖所示。1.2.3非關(guān)系型數(shù)據(jù)庫(kù)3.mongoDBmongoDB是介于關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)之間的產(chǎn)品,也是非關(guān)系型數(shù)據(jù)庫(kù)中功能最豐富的一種產(chǎn)品,支持存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。mongoDB最大的特點(diǎn)是支持強(qiáng)大的數(shù)據(jù)查詢語(yǔ)言,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系型數(shù)據(jù)庫(kù)單表查詢的絕大部分功能。mongoDB同時(shí)支持對(duì)數(shù)據(jù)建立索引和Python、Java、C++、PHP等多種計(jì)算機(jī)語(yǔ)言,mongoDB圖標(biāo)如圖所示。1.3關(guān)系型數(shù)據(jù)庫(kù)MySQL1.3.1為什么使用MySQL返回目錄1.3.2MySQL的發(fā)展簡(jiǎn)史1.3.3MySQL的版本分類與發(fā)展1.3.4企業(yè)中如何選擇MySQL版本1.3.1為什么使用MySQLMySQL屬于中小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),目前被廣泛地應(yīng)用到互聯(lián)網(wǎng)上的大、中、小型網(wǎng)站中,相比于其他數(shù)據(jù)庫(kù)產(chǎn)品,其特點(diǎn)如下。(1)與Oracle相比,MySQL由于體積小、安裝成本低、易于維護(hù)、速度快、總體擁有成本低、開放源碼且無(wú)版權(quán)制約,成為商業(yè)數(shù)據(jù)庫(kù)的首選。(2)可以使用SQL訪問(wèn)與管理MySQL數(shù)據(jù)庫(kù)。(3)MySQL歷史悠久,社區(qū)及用戶非常活躍,遇到問(wèn)題可以尋求幫助。(4)品牌口碑效應(yīng)使得企業(yè)無(wú)須考慮就直接使用LAMP、LNMP流行架構(gòu)。(5)MySQL同時(shí)提供多種應(yīng)用程序編程接口(ApplicationProgrammingInterface,API),支持多種操作系統(tǒng),并支持多種開發(fā)語(yǔ)言,特別對(duì)流行的PHP語(yǔ)言有很好的支持。1.3.2MySQL的發(fā)展簡(jiǎn)史1.初次見(jiàn)面邁克爾·維德紐斯(Michael“Monty”Widenius)于1962年出生于芬蘭赫爾辛基,是開源MySQL的創(chuàng)始人和MySQL第一行代碼的作者,獨(dú)自完成了初期MySQL服務(wù)器端95%的代碼撰寫。Monty有一個(gè)女兒,名叫My,因此他將自己開發(fā)的數(shù)據(jù)庫(kù)命名為MySQL。Monty還有一個(gè)兒子,名為Max,在2003年SAP公司與MySQL公司建立合作伙伴關(guān)系后,Monty又將與SAP合作開發(fā)的數(shù)據(jù)庫(kù)命名為MaxDB。而現(xiàn)在的MariaDB中的Maria是Monty小孫女的名字。MySQL的海豚標(biāo)志是通過(guò)用戶命名競(jìng)賽選出的。2.蓬勃發(fā)展隨著業(yè)務(wù)的發(fā)展,MySQL的版本也在不斷地更新,為了滿足客戶的需求加入了許多新的功能。1.3.2MySQL的發(fā)展簡(jiǎn)史1995年5月23日,MySQL的第一個(gè)內(nèi)部版本發(fā)行了,次年,MySQL官方正式發(fā)行版(MySQL3.11.1)對(duì)外公布。1998年MySQL3.22發(fā)布,此版本仍然不支持事務(wù)操作、子查詢、外鍵、存儲(chǔ)過(guò)程和視圖等功能。1999年的冬天,獨(dú)立商業(yè)公司MySQLAB在瑞典的中部城市烏普薩拉(Uppsala)成立,并于同年發(fā)布了包含事務(wù)型存儲(chǔ)引擎BDB的MySQL3.23。2003年MySQL4.1推出,第一次支持子查詢,支持unicode和預(yù)編譯SQL等功能。為了適應(yīng)日益苛刻的市場(chǎng)需求,不久后,公司又開發(fā)出了MySQL5.0。這個(gè)新版本包含有史以來(lái)MySQL最大的變化,添加了存儲(chǔ)過(guò)程、服務(wù)端游標(biāo)、觸發(fā)器、查詢優(yōu)化及分布式事務(wù)等。1.3.2MySQL的發(fā)展簡(jiǎn)史2008年2月,SunMicrosystems公司動(dòng)用10億美元收購(gòu)了MySQL,造就了開源軟件的收購(gòu)最高價(jià)。MySQL被收購(gòu)之后,MySQL圖標(biāo)停止使用,取而代之的是Sun/MySQL圖標(biāo)。公司合并后推出了MySQL5.1GA(GA即GeneralAvailability,可以用于生產(chǎn)環(huán)境的版本,經(jīng)過(guò)了bug的修復(fù)與測(cè)試)和MySQL5.4Beta。2009年,Oracle公司以74億美元的價(jià)格,將SunMicrosystems和MySQL通盤收購(gòu)于旗下。至此,數(shù)據(jù)庫(kù)之間的商業(yè)競(jìng)爭(zhēng)以O(shè)racle公司的勝利宣告結(jié)束。2018年,MySQL8.0問(wèn)世,據(jù)官方介紹,MySQL8.0的速度比MySQL5.7快兩倍1.3.3MySQL的版本分類與發(fā)展目前MySQL官方網(wǎng)站上有四個(gè)版本,分別是GA版、DMR版、RC版和Beta版。一般情況下,生產(chǎn)環(huán)境或者測(cè)試環(huán)境要選擇GA版。針對(duì)不同的用戶群體與需求,現(xiàn)在的MySQL主要有社區(qū)版服務(wù)器和企業(yè)版服務(wù)器,兩者的特點(diǎn)如下。MySQLCommunityServer(社區(qū)版服務(wù)器):完全開源免費(fèi),應(yīng)用較為廣泛,支持GPL協(xié)議。MySQL流行后,隨著時(shí)代對(duì)數(shù)據(jù)處理要求的不斷提高,其版本也在不斷更新。其缺點(diǎn)是官方不提供技術(shù)支持,只能靠社區(qū)維護(hù)。社區(qū)版服務(wù)器主要用于個(gè)人網(wǎng)站和小型企業(yè)。MySQLEnterpriseServer(企業(yè)版服務(wù)器):主要供大、中型企業(yè)使用,官方提供保障以及補(bǔ)丁服務(wù),并收取相關(guān)的費(fèi)用,但可以免費(fèi)試用30天。1.3.3MySQL的版本分類與發(fā)展目前企業(yè)中主要使用的MySQL版本如表所示。1.3.3MySQL的版本分類與發(fā)展MySQL8.0關(guān)鍵的改進(jìn)包括OpenSSL安全性、新的默認(rèn)身份驗(yàn)證、SQL角色、分解超級(jí)特權(quán)、密碼強(qiáng)度等,同時(shí)增加了資源組功能,通過(guò)將用戶線程映射到CPU,為用戶提供一個(gè)選項(xiàng),以針對(duì)特定硬件上的特定工作負(fù)載進(jìn)行優(yōu)化。MySQL8.0還加入了開發(fā)者功能,使開發(fā)人員可以更好地調(diào)試與運(yùn)行。數(shù)據(jù)類型也得到了改進(jìn),在BINARY數(shù)據(jù)類型上進(jìn)行了按位操作,并且改進(jìn)了IPv6和UUID功能。MySQL使用由3個(gè)數(shù)字和1個(gè)可選的后綴組成的版本名稱,如mysql-5.7.1m1。第一個(gè)數(shù)字(5)是主版本號(hào)。第二個(gè)數(shù)字(7)是次版本號(hào),主版本和次版本一起構(gòu)成版本系列號(hào),描述的是一套穩(wěn)定的功能。第三個(gè)數(shù)字(1)是修訂號(hào),隨每個(gè)新bug被修復(fù)而遞增。大多數(shù)情況下,系列中最新版本是最佳選擇。1.3.3MySQL的版本分類與發(fā)展版本名稱還可以包含后綴以指示版本的穩(wěn)定性級(jí)別,有以下3種情況。(1)mN(m1,m2,m3…)表示里程碑編號(hào)。MySQL開發(fā)使用里程碑模型,其中每個(gè)里程碑都引入了一小部分經(jīng)過(guò)全面測(cè)試的功能。從一個(gè)里程碑到下一個(gè)里程碑,根據(jù)試用早期版本的社區(qū)成員提供的反饋,功能界面可能會(huì)發(fā)生變化,甚至可能會(huì)刪除功能。里程碑版本中的功能可被視為具有預(yù)生產(chǎn)質(zhì)量。(2)RC表示候選發(fā)布。通過(guò)MySQL的所有內(nèi)部測(cè)試后,候選發(fā)布版本被認(rèn)為是穩(wěn)定的。RC版本可能仍會(huì)引入新功能,但重點(diǎn)轉(zhuǎn)移到修復(fù)錯(cuò)誤以穩(wěn)定早期功能。(3)GA表示一般可用性或生產(chǎn)版本。GA版本是穩(wěn)定的,已成功通過(guò)早期階段,并且被認(rèn)為是可靠的,沒(méi)有嚴(yán)重的錯(cuò)誤,適用于生產(chǎn)環(huán)境。MySQL的開發(fā)始于里程碑版本,隨后是RC版本,最后達(dá)到GA版本。1.3.4企業(yè)中如何選擇MySQL版本在生產(chǎn)環(huán)境下,數(shù)據(jù)庫(kù)是非常重要的,因此在部署MySQL的時(shí)候一定要慎重選擇,需要從以下方面考慮。1.從更新角度,追求穩(wěn)定目前互聯(lián)網(wǎng)企業(yè)中常用的MySQL版本為MySQL5.5和MySQL5.6,建議選擇發(fā)布前后幾個(gè)月沒(méi)有較大漏洞修復(fù)的版本,避開大量修復(fù)的版本。對(duì)企業(yè)中核心的應(yīng)用應(yīng)部署穩(wěn)定版本的數(shù)據(jù)庫(kù),切勿追求新穎體驗(yàn)而去升級(jí)更換。2.從企業(yè)實(shí)際情況角度,追求合適作為一名合格的運(yùn)維人員,在部署時(shí)還需要考慮到開發(fā)人員在開發(fā)程序時(shí)使用的版本是否與程序兼容的問(wèn)題,應(yīng)事先與開發(fā)人員溝通。搭建新版本的數(shù)據(jù)庫(kù)時(shí),應(yīng)先測(cè)試運(yùn)行幾個(gè)月。本章主要講解了數(shù)據(jù)庫(kù)的概念與分類、關(guān)系型數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)的區(qū)別,介紹了關(guān)系型數(shù)據(jù)庫(kù)MySQL的發(fā)展歷史和其常用的版本。MySQL是一個(gè)跨平臺(tái)的開源數(shù)據(jù)庫(kù),在現(xiàn)在企業(yè)中流行的LAMP、LNMP架構(gòu)中扮演著重要的角色,因其體積小、速度快、擁有成本低、源碼開放,被廣泛應(yīng)用在Internet上的中、小型網(wǎng)站中。本章小結(jié)第2章環(huán)境的安裝與基本配置虛擬化平臺(tái)CentOS系統(tǒng)的部署MySQL的安裝與配置虛擬化平臺(tái)CentOS系統(tǒng)的部署2.22.1MySQL的安裝與配置2.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)學(xué)習(xí)目標(biāo)掌握掌握熟悉了解掌握MySQL安裝與配置1熟悉MySQL報(bào)錯(cuò)解決方法42掌握虛擬化環(huán)境的方法3了解MySQL的配置參數(shù)Linux操作系統(tǒng)是一套開源的計(jì)算機(jī)操作系統(tǒng),因其支持多用戶、多任務(wù)、多線程和多CPU的特點(diǎn)而成為商業(yè)服務(wù)器操作系統(tǒng)的首選。通過(guò)本章的學(xué)習(xí),讀者可以在虛擬Linux操作系統(tǒng)下安裝MySQL和進(jìn)行簡(jiǎn)單的配置。2.1虛擬化平臺(tái)2.1.1系統(tǒng)虛擬化返回目錄2.1.2搭建實(shí)驗(yàn)平臺(tái)2.1.3虛擬平臺(tái)的基本使用2.1.1系統(tǒng)虛擬化在全球服務(wù)器市場(chǎng)中,90%以上服務(wù)器部署的操作系統(tǒng)為L(zhǎng)inux。Linux操作系統(tǒng)的使用很方便:從來(lái)不用做磁盤碎片整理;一條命令就可以安裝二十個(gè)程序;可無(wú)損調(diào)整分區(qū)大小而不用擔(dān)心丟失數(shù)據(jù);可同時(shí)運(yùn)行多個(gè)桌面,甚至可讓多個(gè)用戶同時(shí)登錄并使用該機(jī)器。Linux更新無(wú)須重啟系統(tǒng),相對(duì)于Windows服務(wù)器,死機(jī)率也更低。常見(jiàn)的Linux操作系統(tǒng)有Ubuntu、CentOS、RedHat等,如圖所示。2.1.1系統(tǒng)虛擬化實(shí)際生活中,我們使用更多的是Windows操作系統(tǒng),為了更好地模擬MySQL在企業(yè)中的運(yùn)行環(huán)境,可以使用虛擬化軟件VMwareWorkstation來(lái)搭建Linux操作系統(tǒng)平臺(tái)。VMware(威睿)公司是全球虛擬化解決方案的領(lǐng)導(dǎo)廠商,旗下的VMwareWorkstation軟件可以實(shí)現(xiàn)在一臺(tái)電腦上同時(shí)運(yùn)行MicrosoftWindows、Linux、MacOSX、DOS等多種不同的操作系統(tǒng)。虛擬化軟件能模擬出完整的計(jì)算機(jī)系統(tǒng)底層的功能。虛擬機(jī)的使用范圍很廣,如對(duì)未知軟件進(jìn)行評(píng)測(cè)、運(yùn)行可疑的工具等,即使這些程序帶有病毒,也只能破壞虛擬系統(tǒng)。虛擬機(jī)就像一個(gè)行李箱,里面裝著需要的環(huán)境,移動(dòng)或打包這些環(huán)境也非常方便,如圖所示。2.1.1系統(tǒng)虛擬化2.1.2搭建實(shí)驗(yàn)平臺(tái)讀者可以訪問(wèn)VMware官方網(wǎng)站下載最新的VMwareWorkstation版本。同時(shí)建議使用GoogleChrome瀏覽器進(jìn)行訪問(wèn),因?yàn)樵摓g覽器帶有自動(dòng)翻譯功能,便于閱讀。當(dāng)然,用戶在訪問(wèn)VMware官方網(wǎng)站的時(shí)候也會(huì)自動(dòng)跳轉(zhuǎn)到中文頁(yè)面,如圖所示。2.1.2搭建實(shí)驗(yàn)平臺(tái)在主頁(yè)單擊“下載”按鈕,并在新加載頁(yè)面的搜索框中輸入“VMwareworkstationpro15”進(jìn)行搜索,找到相應(yīng)的軟件安裝包下載即可,如圖和圖所示。當(dāng)然,這些操作是要在登錄的前提下完成的。另外,用戶操作的計(jì)算機(jī)需要支持虛擬化技術(shù),讀者可以自行查閱相應(yīng)品牌的計(jì)算機(jī)使用說(shuō)明書。將下載好的軟件包安裝在Windows環(huán)境下即可,安裝過(guò)程中會(huì)提示安裝路徑等配置信息,用戶根據(jù)自己的需求選擇即可,建議將VMwareWorkstation安裝在剩余空間充足的磁盤上。VMwareWorkstation15系列版本于2018年更新,該版本與VMwareWorkstation14系列版本沒(méi)有太大的區(qū)別,為了追求穩(wěn)定,本書中使用的是VMwareWorkstation14系列版本。2.1.2搭建實(shí)驗(yàn)平臺(tái)2.1.2搭建實(shí)驗(yàn)平臺(tái)2.1.3虛擬平臺(tái)的基本使用VMware虛擬平臺(tái)提供了虛擬機(jī)創(chuàng)建與管理、遠(yuǎn)程連接、虛擬網(wǎng)絡(luò)配置、虛擬機(jī)快照等功能,可以實(shí)現(xiàn)虛擬機(jī)的備份還原和遷移。同時(shí)其自帶的網(wǎng)絡(luò)配置可以讓用戶在不同的場(chǎng)景間自由切換,可以更好地模擬生產(chǎn)中服務(wù)器的網(wǎng)絡(luò)狀態(tài)。VMware虛擬平臺(tái)主頁(yè)面如圖所示。2.1.3虛擬平臺(tái)的基本使用虛擬平臺(tái)提供的三種網(wǎng)絡(luò)模式包括僅主機(jī)模式、NAT模式、橋接模式,三者的主要區(qū)別與各自的功能如表所示??梢詥螕繇?yè)面左上角的“編輯”按鈕,打開“虛擬網(wǎng)絡(luò)編輯器”,根據(jù)實(shí)際情況來(lái)選擇不同的網(wǎng)絡(luò)模式。2.2數(shù)據(jù)庫(kù)類型2.2.1CentOS系統(tǒng)返回目錄2.2.2系統(tǒng)下載2.2.3最小化安裝CentOS2.2.1CentOS系統(tǒng)CentOS(CommunityEnterpriseOperatingSystem,社區(qū)企業(yè)操作系統(tǒng))是Linux發(fā)行版之一,每個(gè)版本的CentOS都會(huì)獲得十年的技術(shù)支持(通過(guò)安全更新方式)。新版本的CentOS大約每?jī)赡臧l(fā)行一次,而每個(gè)版本的CentOS會(huì)定期(大概每六個(gè)月)更新一次,以便支持新的硬件,從而建立一個(gè)安全、低維護(hù)、穩(wěn)定、高預(yù)測(cè)性、高重復(fù)性的Linux環(huán)境。目前最新版本為CentOS7.6(1810),上個(gè)版本是CentOS7.5(1804)。1.CentOS與RedHat的區(qū)別CentOS與RedHat使用同樣的源碼,不同的是CentOS在源碼的基礎(chǔ)上進(jìn)行了二次編譯。CentOS獨(dú)有的yum命令支持在線升級(jí),可以即時(shí)更新系統(tǒng),不需要支付任何費(fèi)用,不像RedHat用戶需要付費(fèi)才可以享受技術(shù)支持以及版本升級(jí)服務(wù)。CentOS不經(jīng)常更新,就像在選擇MySQL版本時(shí)需要考慮穩(wěn)定因素一樣,企業(yè)在部署操作系統(tǒng)的時(shí)候也要注意到這一點(diǎn)。2.2.1CentOS系統(tǒng)2.CentOS與Ubuntu的區(qū)別相對(duì)于CentOS,Ubuntu有著美觀易用的UI(UserInterface,用戶界面)、完善的包管理系統(tǒng)以及豐富的技術(shù)社區(qū),同時(shí)對(duì)大多數(shù)計(jì)算機(jī)硬件有著良好的兼容性,包括最新的圖形顯卡等,近年來(lái)受到了大眾用戶的青睞。但Ubuntu為了保持良好的兼容性,會(huì)不斷地更新系統(tǒng),這對(duì)企業(yè)中持續(xù)運(yùn)行的服務(wù)器來(lái)說(shuō)是個(gè)不小的挑戰(zhàn)。Ubuntu桌面版安裝后會(huì)占用大量系統(tǒng)資源,嚴(yán)重時(shí)甚至?xí)?dǎo)致服務(wù)器死機(jī),這種情況給企業(yè)帶來(lái)的損失難以估量。CentOS因有著最小化的安裝方式,不會(huì)占用太多系統(tǒng)資源,在企業(yè)應(yīng)用中占有率較高。2.2.2系統(tǒng)下載CentOS官方網(wǎng)站中文頁(yè)面如圖所示。2.2.2系統(tǒng)下載CentOS是社區(qū)驅(qū)動(dòng)的免費(fèi)軟件,旨在提供強(qiáng)大的開源生態(tài)系統(tǒng)。對(duì)于用戶,它提供適用于各種部署的平臺(tái);對(duì)于開源社區(qū),它提供可靠、可預(yù)測(cè)的基礎(chǔ),以及用于構(gòu)建、測(cè)試、發(fā)布和維護(hù)代碼的大量資源。用戶可以在官方網(wǎng)站找到自己需要的幫助文檔,在遇到問(wèn)題的時(shí)候可以在社區(qū)中探討。單擊頁(yè)面上的“立即獲取CentOS”按鈕即可下載系統(tǒng),下載的文件格式是ISO,如圖所示。在圖中可以看到,官方網(wǎng)站可下載兩種ISO文件,本書中用到的是“最小ISO”。單擊“最小ISO”按鈕會(huì)跳轉(zhuǎn)到下載鏈接頁(yè)面。網(wǎng)站支持國(guó)內(nèi)鏡像地址下載,包括阿里巴巴、網(wǎng)易163、京東、華為等國(guó)內(nèi)公司提供的鏡像服務(wù)。相對(duì)于國(guó)外的鏡像文件,國(guó)內(nèi)的鏡像文件下載更快,節(jié)省了用戶的時(shí)間。鏈接選擇頁(yè)面如圖所示。2.2.2系統(tǒng)下載鏡像文件大小約為900MB,下載時(shí)間較長(zhǎng),請(qǐng)耐心等待。2.2.2系統(tǒng)下載2.2.3最小化安裝CentOS準(zhǔn)備好VMwareWorkstation虛擬化軟件和CentOS鏡像文件后,即可開始安裝CentOS,具體的操作步驟如下。(1)安裝系統(tǒng)之前,用戶需要?jiǎng)?chuàng)建一臺(tái)虛擬機(jī),并配置硬件參數(shù)。在VMwareWorkstation主菜單欄中依次單擊“文件”“新建虛擬機(jī)”,或者使用組合鍵“Ctrl+N”來(lái)創(chuàng)建虛擬機(jī),也可以直接單擊主頁(yè)面上的加號(hào)創(chuàng)建新的虛擬機(jī)。(2)在彈出的“新建虛擬機(jī)向?qū)А表?yè)面中選中“典型(推薦)”,然后單擊“下一步”按鈕,如圖所示。當(dāng)然,如果讀者不是初次接觸Linux操作系統(tǒng),則可以使用自定義安裝,來(lái)配置適合自己的虛擬機(jī)平臺(tái)。2.2.3最小化安裝CentOS(3)在“安裝客戶機(jī)操作系統(tǒng)”頁(yè)面,選擇“安裝程序光盤映像文件”選項(xiàng),然后單擊后方的“瀏覽”按鈕,根據(jù)路徑找到自己下載的鏡像文件,選擇鏡像文件為系統(tǒng)啟動(dòng)的加載鏡像,如圖所示。如果提示已檢測(cè)到相應(yīng)文件,那么就表示選擇正確。虛擬機(jī)創(chuàng)建完成并開機(jī)后,會(huì)自動(dòng)進(jìn)行系統(tǒng)的安裝。2.2.3最小化安裝CentOS2.2.3最小化安裝CentOS(4)可以對(duì)新建的虛擬機(jī)重命名,選擇合適的安裝位置。建議安裝在磁盤空間較充裕的地方,方便后期系統(tǒng)較多時(shí)的區(qū)分和虛擬機(jī)數(shù)據(jù)的備份、遷移與克隆,如圖所示。2.2.3最小化安裝CentOS(5)用戶可以自定義虛擬機(jī)硬盤的大小,默認(rèn)的配置為20GB,也可選中“將虛擬磁盤拆分成多個(gè)文件”選項(xiàng),如圖所示。(6)配置完成后,用戶可以看到新建虛擬機(jī)的配置,確認(rèn)后,單擊“完成”按鈕即可以運(yùn)行系統(tǒng)安裝程序。2.2.3最小化安裝CentOS(7)此時(shí)界面上會(huì)顯示三個(gè)選項(xiàng),如圖所示。用戶可以使用鍵盤上下鍵來(lái)選擇這些選項(xiàng),選項(xiàng)的含義如下所示。InstallCentOS7:安裝CentOS7。Testthismedia&installCentOS7:測(cè)試并安裝CentOS7。Troubleshooting:故障排除。2.2.3最小化安裝CentOS(8)選擇“安裝CentOS7”選項(xiàng),按回車鍵確認(rèn)。此時(shí)系統(tǒng)會(huì)讀取用戶下載的鏡像文件,完成后彈出安裝語(yǔ)言選擇界面。滾動(dòng)鼠標(biāo)滾輪找到“中文”選項(xiàng),如圖所示。2.2.3最小化安裝CentOS(9)選擇好安裝語(yǔ)言后,會(huì)進(jìn)入主要配置選項(xiàng)界面,在這里,用戶可以對(duì)新建的CentOS進(jìn)行更詳細(xì)的配置。在此過(guò)程中需要注意以下幾點(diǎn)。①建議將時(shí)區(qū)設(shè)置為“亞洲/上海時(shí)區(qū)”。②安裝源選擇“本地介質(zhì)”。③安裝位置選擇“自動(dòng)分區(qū)(跟隨默認(rèn))”。④在“網(wǎng)絡(luò)和主機(jī)名”選項(xiàng)中開啟網(wǎng)絡(luò)自動(dòng)掃描,使虛擬機(jī)系統(tǒng)自動(dòng)掃描網(wǎng)絡(luò),并根據(jù)網(wǎng)絡(luò)情況自動(dòng)配置IP地址和其他網(wǎng)絡(luò)參數(shù),默認(rèn)的網(wǎng)卡名稱為ens33。2.2.3最小化安裝CentOS詳細(xì)配置如圖所示。2.2.3最小化安裝CentOS2.2.3最小化安裝CentOS(10)配置完成后系統(tǒng)進(jìn)行自動(dòng)編譯安裝,在此過(guò)程中系統(tǒng)會(huì)提醒為CentOS的root用戶創(chuàng)建密碼。root用戶為系統(tǒng)中唯一的超級(jí)用戶,具有系統(tǒng)中所有的權(quán)限,和Windows系統(tǒng)中的admin用戶有相似的性質(zhì)。在生產(chǎn)環(huán)境中一般不會(huì)直接使用root用戶,而是通過(guò)普通用戶的身份來(lái)登錄系統(tǒng),當(dāng)普通用戶需要特殊權(quán)限時(shí),就要使用root提權(quán)來(lái)完成。單擊“ROOT密碼”選項(xiàng),根據(jù)用戶的實(shí)際情況來(lái)設(shè)置密碼,密碼長(zhǎng)度沒(méi)有規(guī)定,建議將密碼復(fù)雜程度提高。配置root用戶密碼的界面如圖所示。2.2.3最小化安裝CentOS2.2.3最小化安裝CentOS配置完成后,系統(tǒng)將進(jìn)行最后的編譯安裝,完成后的界面如圖所示。單擊“重啟”按鈕,即可重新啟動(dòng)系統(tǒng)進(jìn)入CentOS登錄界面,如圖所示。在“l(fā)ocalhostlogin:”后輸入登錄的用戶名“root”,按回車鍵確認(rèn)后,系統(tǒng)會(huì)提醒用戶輸入密碼。2.2.3最小化安裝CentOS2.3關(guān)系型數(shù)據(jù)庫(kù)MySQL2.3.1MySQL安裝方式返回目錄2.3.2Yum方式安裝2.3.3源碼編譯方式安裝2.3.4初始化數(shù)據(jù)庫(kù)2.3.1MySQL安裝方式Linux操作系統(tǒng)下,MySQL安裝包分為3類,如表所示。2.3.1MySQL安裝方式在實(shí)際生產(chǎn)環(huán)境中MySQL的安裝方式有兩種,分別是Yum方式安裝和源碼編譯方式安裝。Yum是Fedora、RedHat以及CentOS中的Shell前端軟件包管理器,基于RPM包管理,能夠從指定的服務(wù)器下載RPM包并進(jìn)行安裝,就像計(jì)算機(jī)上的軟件管家一樣。源碼(也稱為源代碼、源程序)是按照一定的程序設(shè)計(jì)語(yǔ)言規(guī)范書寫且未進(jìn)行編譯的文本文件,是可讀的計(jì)算機(jī)語(yǔ)言指令。將人類可讀的文本翻譯成計(jì)算機(jī)可以執(zhí)行的二進(jìn)制指令的過(guò)程叫作編譯,需要通過(guò)編譯器完成。Yum方式安裝可以很好地解決依賴包問(wèn)題(Yum安裝過(guò)程中會(huì)自動(dòng)處理依賴性關(guān)系,一次性安裝所有的依賴包)。源碼編譯方式安裝不會(huì)自動(dòng)安裝依賴包,需要用戶單獨(dú)下載依賴包并手動(dòng)安裝,在編譯安裝過(guò)程中可以設(shè)定參數(shù),按照不同的需求進(jìn)行安裝,安裝的版本可以自己選擇,靈活性比較大。2.3.2YUM方式安裝因?yàn)槭浅醮伟惭bCentOS,使用系統(tǒng)自帶的倉(cāng)庫(kù)無(wú)法獲取最新的MySQL版本,所以首先需要從官方網(wǎng)站下載MySQL的鏡像倉(cāng)庫(kù)文件來(lái)更新倉(cāng)庫(kù)。在搜索引擎中訪問(wèn)MySQL官方網(wǎng)站,中文頁(yè)面如圖所示。2.3.2YUM方式安裝將鏡像倉(cāng)庫(kù)下載頁(yè)面向下滾動(dòng),可以看到版本選項(xiàng),如圖所示。2.3.2YUM方式安裝選擇“紅帽企業(yè)版Linux7/CentOSLinux7(獨(dú)立于架構(gòu)),RPM軟件包”進(jìn)行下載,此時(shí)會(huì)跳轉(zhuǎn)到確認(rèn)下載頁(yè)面,如圖所示,在頁(yè)面下方“不用了,請(qǐng)開始下載”處單擊鼠標(biāo)右鍵,在彈出的快捷菜單中單擊“復(fù)制鏈接地址”。2.3.2YUM方式安裝選擇“紅帽企業(yè)版Linux7/CentOSLinux7(獨(dú)立于架構(gòu)),RPM軟件包”進(jìn)行下載,此時(shí)會(huì)跳轉(zhuǎn)到確認(rèn)下載頁(yè)面,如圖所示,在頁(yè)面下方“不用了,請(qǐng)開始下載”處單擊鼠標(biāo)右鍵,在彈出的快捷菜單中單擊“復(fù)制鏈接地址”。2.3.2YUM方式安裝在CentOS中使用wget工具下載文件,具體的操作流程如下所示。安裝wget工具:2.3.2YUM方式安裝為了順利將MySQL安裝成功,前期的準(zhǔn)備工作也必不可少。在CentOS中需要將防火墻和SELinux關(guān)閉。從上方代碼的執(zhí)行結(jié)果可以看出SELinux已經(jīng)處于關(guān)閉狀態(tài)。需要注意。這里的SELinux是臨時(shí)關(guān)閉,系統(tǒng)重啟后SELinux默認(rèn)還會(huì)開啟。如果需要永久關(guān)閉SELinux,則應(yīng)該修改相關(guān)的配置文件。2.3.2YUM方式安裝基本環(huán)境配置完成后,即可安裝MySQL,具體步驟如下。(1)選擇需要安裝的版本查Yum倉(cāng)庫(kù)中有關(guān)MySQL的所有列表。2.3.2YUM方式安裝MySQL的Yum安裝默認(rèn)安裝最新的版本,從上方的最后一行代碼可以看出MySQL8系列是“enable”狀態(tài),所以需要禁用MySQL8.0,同時(shí)開啟MySQL5.7。在執(zhí)行此操作之前需要安裝Yum管理工具包,此包中提供了yum-config-manager命令工具,代碼如下所示,執(zhí)行過(guò)程此處省略。2.3.2YUM方式安裝設(shè)置完成后再次確認(rèn)啟動(dòng)的MySQL倉(cāng)庫(kù)的版本。(2)開始安裝MySQL配置好鏡像倉(cāng)庫(kù)與版本,便可以使用以下命令來(lái)安裝MySQL,命令執(zhí)行過(guò)程此處省略。2.3.2YUM方式安裝(3)啟動(dòng)MySQL服務(wù)與查看狀態(tài)安裝完成后啟動(dòng)MySQL服務(wù),啟動(dòng)服務(wù)的代碼與反饋結(jié)果如下所示。2.3.2YUM方式安裝從代碼的執(zhí)行結(jié)果可以看出,MySQL服務(wù)是“running”狀態(tài),表示MySQL服務(wù)啟動(dòng)成功。MySQL默認(rèn)占用系統(tǒng)3306端口,讀者也可以使用ss-natl命令與grep命令過(guò)濾出端口運(yùn)行狀態(tài)。2.3.2YUM方式安裝通過(guò)以上命令執(zhí)行結(jié)果可以看出,數(shù)據(jù)庫(kù)服務(wù)和端口都已經(jīng)啟動(dòng),說(shuō)明MySQL安裝成功。Linux下MySQL的重要目錄如表所示。讀者需要熟記這些目錄的配置信息。2.3.3源碼編譯方式安裝因?yàn)镃entOS7默認(rèn)的數(shù)據(jù)庫(kù)為MariaDB,所以需要卸載一些系統(tǒng)自帶軟件包;2.3.1節(jié)中提到源碼安裝不解決依賴包的問(wèn)題,所以需要手動(dòng)下載安裝依賴包,命令代碼如下所示。2.3.3源碼編譯方式安裝相關(guān)依賴包的作用如表所示。環(huán)境準(zhǔn)備好后即可開始下載與安裝MySQL,基本步驟如下所示。2.3.3源碼編譯方式安裝(1)復(fù)制源碼鏈接地址進(jìn)入MySQL官方網(wǎng)站的下載頁(yè)面進(jìn)行下載,如圖所示。2.3.3源碼編譯方式安裝單擊頁(yè)面中的“下載”按鈕進(jìn)入下載鏈接頁(yè)面,在頁(yè)面中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“復(fù)制鏈接地址”,這樣就獲取到了MySQL5.7.27的源碼鏈接地址,如圖所示。2.3.3源碼編譯方式安裝(2)下載源碼包使用wget工具下載源碼包,同時(shí)下載源碼編譯需要的boost依賴包,代碼如下。(3)創(chuàng)建用戶與授權(quán)上方代碼第1行中“-M”表示不創(chuàng)建用戶的家目錄,“-s”表示指定一個(gè)不能登錄的Shell。2.3.3源碼編譯方式安裝(4)解壓和預(yù)編譯源碼包將下載的源碼包編譯成二進(jìn)制文件,命令如下,執(zhí)行結(jié)果此處省略。2.3.3源碼編譯方式安裝上方代碼中“\”為換行符,表示命令還未結(jié)束。各參數(shù)的含義如表所示。2.3.3源碼編譯方式安裝更多的參數(shù)設(shè)置說(shuō)明可以參閱MySQL的官方使用手冊(cè)。如果編譯中途失敗,需要?jiǎng)h除cmake生成的預(yù)編譯配置參數(shù)的緩存文件和make編譯后生成的文件,再重新編譯。如果報(bào)錯(cuò)提示中有以下信息:則需要在編譯參數(shù)中加入以下配置項(xiàng):說(shuō)明:SQL語(yǔ)句一般不區(qū)分大小寫,本書在講解時(shí)為醒目起見(jiàn),常使用大寫字母。2.3.3源碼編譯方式安裝看到圖所示的信息,說(shuō)明MySQL安裝成功。(5)編譯安裝與添加環(huán)境變量編譯過(guò)程需要消耗大量的系統(tǒng)資源,如果編譯不通過(guò),建議將系統(tǒng)內(nèi)存調(diào)至2GB以上。編譯安裝命令代碼如下,編譯過(guò)程此處省略。2.3.3源碼編譯方式安裝(6)添加MySQL服務(wù)到systemed復(fù)制可執(zhí)行文件到指定的目錄下,并修改名字為mysqld,授予權(quán)限,設(shè)置開機(jī)自啟。服務(wù)啟動(dòng)完成后,檢查MySQL的服務(wù)狀態(tài)和端口占用情況,驗(yàn)證MySQL源碼編譯安裝是否成功。2.3.4初始化數(shù)據(jù)庫(kù)MySQL安裝完成后會(huì)自動(dòng)生成一個(gè)隨機(jī)密碼,使用隨機(jī)密碼即可登錄或者修改密碼。隨機(jī)密碼可以在MySQL的錯(cuò)誤日志中找到,代碼如下所示。從上方代碼中可以看出MySQL的初始密碼為“hphqGlH/>9SN”。MySQL修改登錄密碼有以下兩種方式。2.3.4初始化數(shù)據(jù)庫(kù)(1)使用初始密碼登錄MySQL,在數(shù)據(jù)庫(kù)中使用ALTER語(yǔ)句修改密碼。2.3.4初始化數(shù)據(jù)庫(kù)(2)在不登錄MySQL的情況下修改初始密碼,命令如下所示。注意,登錄密碼需至少包含一個(gè)大寫字母、一個(gè)小寫字母、一個(gè)數(shù)字和一個(gè)特殊字符,并且密碼總長(zhǎng)度至少為8個(gè)字符。取消密碼復(fù)雜度、不使用密碼登錄、忘記密碼等操作將在后續(xù)章節(jié)介紹。本章主要講解了虛擬化軟件VMwareWorkstation的使用和搭建虛擬的Linux操作系統(tǒng)平臺(tái),同時(shí)介紹了數(shù)據(jù)庫(kù)的兩種安裝方式與基本使用。通過(guò)本章的學(xué)習(xí),讀者可以對(duì)數(shù)據(jù)庫(kù)有初步的認(rèn)識(shí)。應(yīng)重點(diǎn)掌握MySQL在Linux操作系統(tǒng)平臺(tái)上的源碼編譯方式安裝的操作流程、Yum方式安裝與源碼編譯方式安裝的區(qū)別、MySQL安裝后的幾個(gè)重要目錄。本章小結(jié)第3章MySQL數(shù)據(jù)操作SQL語(yǔ)句數(shù)據(jù)類型存儲(chǔ)引擎庫(kù)與表的基本操作表的高級(jí)操作SQL語(yǔ)句數(shù)據(jù)類型3.23.1存儲(chǔ)引擎3.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)庫(kù)與表的基本操作3.4?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)表的高級(jí)操作3.5?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)學(xué)習(xí)目標(biāo)了解掌握掌握掌握了解SQL語(yǔ)句的基本分類1掌握常見(jiàn)的數(shù)值類型42掌握使用結(jié)構(gòu)化查詢語(yǔ)句3掌握數(shù)據(jù)庫(kù)不同存儲(chǔ)引擎的差異數(shù)據(jù)庫(kù)、數(shù)據(jù)表操作是MySQL實(shí)現(xiàn)其功能的前提,本章著重介紹數(shù)據(jù)庫(kù)的基本操作,包括創(chuàng)建庫(kù)、創(chuàng)建表、修改表結(jié)構(gòu)等。本章將通過(guò)豐富的實(shí)例對(duì)SQL進(jìn)行詳細(xì)的介紹,讀者不但能夠?qū)W習(xí)SQL語(yǔ)句的基本使用,還能夠掌握MySQL中擴(kuò)展語(yǔ)句的用法。3.1SQL語(yǔ)句3.1.1SQL簡(jiǎn)介返回目錄3.1.2SQL分類3.1SQL語(yǔ)句數(shù)據(jù)表是關(guān)系型數(shù)據(jù)庫(kù)MySQL的基本存儲(chǔ)單元,它與生活中使用的Excel表格類似。在實(shí)際的生產(chǎn)環(huán)境中,因?yàn)樾枰刂朴布杀荆栽诎惭b操作系統(tǒng)時(shí)都是進(jìn)行最小化安裝,并不提供圖形化界面,因此MySQL也不能像在Excel中那么便捷地修改數(shù)據(jù)。為了能夠?qū)?shù)據(jù)進(jìn)行管理,MySQL中提供了SQL來(lái)支持?jǐn)?shù)據(jù)操作。3.1.1SQL簡(jiǎn)介結(jié)構(gòu)化查詢語(yǔ)言(StructureQueryLanguage,SQL)可以實(shí)現(xiàn)和數(shù)據(jù)庫(kù)建立聯(lián)系、進(jìn)行溝通的功能,同時(shí)也支持?jǐn)?shù)據(jù)庫(kù)的查詢和程序設(shè)計(jì),還可以用于存儲(chǔ)數(shù)據(jù)以及查詢、更新和管理關(guān)系型數(shù)據(jù)庫(kù)。20世紀(jì)80年代初,美國(guó)國(guó)家標(biāo)準(zhǔn)局(AmericanNationalStandardsInstitute,ANSI)制定了關(guān)于SQL的標(biāo)準(zhǔn),從此SQL被作為關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。隨著計(jì)算機(jī)領(lǐng)域的發(fā)展,標(biāo)準(zhǔn)也被不斷修改,更趨完善。3.1.2SQL分類在數(shù)據(jù)庫(kù)中,根據(jù)執(zhí)行條件的不同,SQL語(yǔ)句主要可以劃分為以下4個(gè)類別。1.DDL語(yǔ)句DDL(DataDefinitionLanguage,數(shù)據(jù)定義語(yǔ)言)用在定義或改變表的結(jié)構(gòu)數(shù)據(jù)類型、表之間的鏈接和約束等初始化工作上。常用的語(yǔ)句關(guān)鍵字包括CREATE、DROP、ALTER等。2.DML語(yǔ)句DML(DataManipulationLanguage,數(shù)據(jù)操縱語(yǔ)言)用于添加、刪除、更新和查詢數(shù)據(jù)庫(kù)記錄。常用的語(yǔ)句關(guān)鍵字有INSERT、UPDATE、DELETE,分別代表插入、更新與刪除,是開發(fā)以數(shù)據(jù)為中心的應(yīng)用程序必會(huì)使用到的指令。3.1.2SQL分類3.DCL語(yǔ)句DCL(DataControlLanguage,數(shù)據(jù)控制語(yǔ)言)用于對(duì)數(shù)據(jù)訪問(wèn)權(quán)限進(jìn)行控制,定義數(shù)據(jù)庫(kù)、表、字段、用戶的訪問(wèn)權(quán)限和安全級(jí)別。主要關(guān)鍵字包括GRANT、REVOKE等。4.DQL語(yǔ)句DQL(DataQueryLanguage,數(shù)據(jù)查詢語(yǔ)言)主要用于對(duì)數(shù)據(jù)的查詢。主要關(guān)鍵字包括SELECT、FROM、WHERE。3.2數(shù)據(jù)類型3.2.1數(shù)值類型返回目錄3.2.2字符串類型3.2.3日期和時(shí)間類型3.2數(shù)據(jù)類型MySQL支持所有標(biāo)準(zhǔn)的SQL數(shù)據(jù)類型,包括嚴(yán)格數(shù)據(jù)類型(如INTEGER、SMALLINT、DECIMAL和NUMBERIC)。MySQL提供了多種數(shù)據(jù)類型,包括整數(shù)類型、浮點(diǎn)數(shù)類型、定點(diǎn)數(shù)類型、日期和時(shí)間類型、字符串類型和二進(jìn)制數(shù)據(jù)類型。不同的數(shù)據(jù)類型有各自的特點(diǎn),使用范圍不相同,存儲(chǔ)方式也不一樣。3.2.1數(shù)值類型數(shù)值類型包括整數(shù)類型、浮點(diǎn)類型、定點(diǎn)數(shù)類型、位類型。標(biāo)準(zhǔn)SQL支持的整數(shù)類型包括INTEGER和SMALLINT,MySQL不僅支持這兩種類型,還擴(kuò)展支持TINYINT、MEDIUMINT和BIGINT。MySQL常用的數(shù)值類型如表所示。3.2.1數(shù)值類型MySQL支持的5個(gè)整數(shù)類型TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT在很大程度上是相同的,只是它們存儲(chǔ)的值的大小是不相同的。FLOAT數(shù)值類型用于表示單精度浮點(diǎn)數(shù)值,DOUBLE數(shù)值類型用于表示雙精度浮點(diǎn)數(shù)值。3.2.2字符串類型MySQL提供了8個(gè)基本的字符串類型,分別為CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET,可以存儲(chǔ)簡(jiǎn)單的字符或二進(jìn)制字符串?dāng)?shù)據(jù)。MySQL常用的字符串類型如表所示。3.2.2字符串類型表中列出了常見(jiàn)的字符串類型,其中有些類型比較相似。下面將詳細(xì)介紹這些類型的區(qū)別與聯(lián)系。1.CHAR和VARCHARCHAR用于存儲(chǔ)固定長(zhǎng)度的字符串,基本格式為CHAR(*),必須要在圓括號(hào)內(nèi)定義長(zhǎng)度。“*”表示指示器,也可以理解為字節(jié)數(shù),取值范圍為0~255,可以有默認(rèn)值。VARCHAR用于存儲(chǔ)可變長(zhǎng)度的數(shù)據(jù),基本格式為CHAR(*),并且也必須帶有一個(gè)取值范圍為0~255的指示器。3.2.2字符串類型CHAR和VARCHAR的不同之處在于MYSQL處理指示器的方式。CHAR把指示器大小視為值的大小,在長(zhǎng)度不足的情況下用空格補(bǔ)足。而VARCHAR類型把它視為最大值,只使用存儲(chǔ)字符串實(shí)際需要的長(zhǎng)度(增加一個(gè)額外字節(jié)來(lái)存儲(chǔ)字符串本身的長(zhǎng)度)來(lái)存儲(chǔ)值,所以短于指示器長(zhǎng)度的VARCHAR數(shù)據(jù)不會(huì)被空格填補(bǔ),但長(zhǎng)于指示器的數(shù)據(jù)仍然會(huì)被截短。例如,定義一個(gè)CHAR(10)和一個(gè)VARCHAR(10),如果存進(jìn)去“ABCD”四個(gè)字符,CHAR的長(zhǎng)度依然為10,除了字符“abcd”之外,后面還跟了六個(gè)空格,而VARCHARR的長(zhǎng)度顯示為“4”。在取數(shù)據(jù)的時(shí)候,CHAR要去掉多余的空格,而VARCHAR是不需要的。由于VARCHAR可以根據(jù)實(shí)際內(nèi)容動(dòng)態(tài)改變存儲(chǔ)值的長(zhǎng)度,因此在不能確定字段需要多少字符時(shí),使用VARCHAR可以大大地節(jié)約磁盤空間、提高存儲(chǔ)效率。VARCHAR在使用BINARY修飾符時(shí)與CHAR完全相同。3.2.2字符串類型2.TEXT和BLOB對(duì)于字段長(zhǎng)度超過(guò)255個(gè)字節(jié)的情況,MySQL提供了TEXT和BLOB兩種數(shù)據(jù)類型,根據(jù)存儲(chǔ)數(shù)據(jù)的大小又分為不同的子類型。它們用于存儲(chǔ)文本塊或圖像、聲音文件等二進(jìn)制數(shù)據(jù)。TEXT和BLOB的相同點(diǎn)如下。(1)在TEXT列或BLOB列的存儲(chǔ)或檢索過(guò)程中不存在大小寫轉(zhuǎn)換,當(dāng)未運(yùn)行在嚴(yán)格模式下時(shí),如果為TEXT列或BLOB列分配一個(gè)超過(guò)該列類型的最大長(zhǎng)度的值,則值會(huì)被截取。如果截掉的字符不是空格,將會(huì)產(chǎn)生一條警告。(2)TEXT列或BLOB列都不能有默認(rèn)值,當(dāng)保存或檢索TEXT列或BLOB列的值時(shí),不刪除尾部空格。(3)對(duì)于TEXT列或BLOB列的索引,必須指定索引前綴的長(zhǎng)度。3.2.2字符串類型TEXT和BLOB的不同點(diǎn)如下。(1)TEXT是大小寫不敏感的,而BLOB是大小寫敏感的。(2)TEXT被視為非二進(jìn)制字符串,而BLOB被視為二進(jìn)制字符串。(3)TEXT列有一個(gè)字符集,并且根據(jù)字符集的校對(duì)規(guī)則對(duì)值進(jìn)行排序和比較;BLOB列沒(méi)有字符集。(4)BLOB可以儲(chǔ)存圖片,而TEXT只能儲(chǔ)存純文本。3.2.3日期和時(shí)間類型在處理日期和時(shí)間類型的值時(shí),MySQL有不同的數(shù)據(jù)類型供用戶選擇。這些類型可以劃分為簡(jiǎn)單的日期和時(shí)間類型、混合的日期和時(shí)間類型。根據(jù)要求的精度,子類型在每個(gè)分類型中都可以使用。日期和時(shí)間類型同樣有對(duì)應(yīng)的字節(jié)數(shù)和取值范圍,MySQL所支持的日期和時(shí)間類型如表所示。3.2.3日期和時(shí)間類型日期和時(shí)間類型根據(jù)不同的使用需求可以分為以下4種使用情況。(1)需要表示年月日,使用DATE。(2)需要表示年月日時(shí)分秒,使用DATETIME。(3)需要經(jīng)常插入或者更新日期為當(dāng)前系統(tǒng)時(shí)間,使用TIMESTAMP。(4)需要表示時(shí)分秒,使用TIME。日期和時(shí)間類型的使用方法如例所示。3.2.3日期和時(shí)間類型3.2.3日期和時(shí)間類型例首先創(chuàng)建了一個(gè)包含日期和時(shí)間類型的表,并使用SELECT語(yǔ)句查看相關(guān)函數(shù)的輸出,方便與后面的數(shù)據(jù)進(jìn)行對(duì)比;然后使用INSERT語(yǔ)句插入相關(guān)數(shù)值;最后是對(duì)應(yīng)的輸出格式。通過(guò)此例,讀者可以了解日期和時(shí)間類型的使用方法。3.3存儲(chǔ)引擎3.3.1MySQL的存儲(chǔ)引擎返回目錄3.3.2常用引擎MyISAM與InnoDB的區(qū)別3.3.3存儲(chǔ)引擎的選擇3.3存儲(chǔ)引擎存儲(chǔ)引擎是數(shù)據(jù)庫(kù)底層的組件,是數(shù)據(jù)庫(kù)的核心。使用存儲(chǔ)引擎可以創(chuàng)建、查詢、更新、刪除數(shù)據(jù)庫(kù)。存儲(chǔ)引擎可以理解為數(shù)據(jù)庫(kù)的操作系統(tǒng),不同的存儲(chǔ)引擎提供的存儲(chǔ)方式、索引機(jī)制等也不相同,就像Windows系統(tǒng)和Mac系統(tǒng)一樣。在數(shù)據(jù)庫(kù)開發(fā)時(shí),為了提高M(jìn)ySQL的靈活性和高效性,可以根據(jù)實(shí)際情況來(lái)選擇存儲(chǔ)引擎。3.3.1MySQL的存儲(chǔ)引擎MySQL支持多種不同的存儲(chǔ)引擎,包括處理事務(wù)安全表的引擎和處理非事務(wù)安全表的引擎。在MySQL中不需要使用同樣的引擎,根據(jù)對(duì)數(shù)據(jù)處理的不同需求而選擇合適的存儲(chǔ)引擎不僅可以提高數(shù)據(jù)存儲(chǔ)和檢索的效率,還可以降低高并發(fā)情況下的數(shù)據(jù)壓力。在系統(tǒng)中可以使用SHOWENGINES語(yǔ)句查看所支持的引擎類型,具體操作方法如下。3.3.1MySQL的存儲(chǔ)引擎3.3.1MySQL的存儲(chǔ)引擎在上方的MySQL信息中,Engine列表示所支持的存儲(chǔ)引擎,Support列表示存儲(chǔ)引擎是否可以被使用,其中“YES”表示可以使用,“NO”表示不能使用,“DEFAULT”表示為當(dāng)前數(shù)據(jù)庫(kù)默認(rèn)的存儲(chǔ)引擎。3.3.2常用引擎MyISAM與InnoDB的區(qū)別在實(shí)際生產(chǎn)環(huán)境中,常見(jiàn)的MySQL存儲(chǔ)引擎是MyISAM和InnoDB,二者的區(qū)別如表所示。3.3.2常用引擎MyISAM與InnoDB的區(qū)別1.存儲(chǔ)結(jié)構(gòu)與存儲(chǔ)空間MyISAM在磁盤上會(huì)存儲(chǔ)成3個(gè)文件,可以被壓縮,存儲(chǔ)空間小,支持3種不同的存儲(chǔ)格式。InnoDB所有的表都保存在同一個(gè)數(shù)據(jù)文件中(也可能是多個(gè)文件,或者是獨(dú)立的表空間文件)。需要更多的存儲(chǔ)空間,會(huì)在主內(nèi)存中建立其專用的緩沖池用于高速緩沖數(shù)據(jù)和索引。2.表的具體行數(shù)MyISAM保存有表的總行數(shù),使用SELECTCOUNT(*)FROMTABLE會(huì)直接取出該值。InnoDB沒(méi)有保存表的總行數(shù),使用SELECTCOUNT(*)FROMTABLE會(huì)遍歷整個(gè)表,消耗相當(dāng)大,但是在加了WHERE條件后,兩者處理的方式一樣。3.3.2常用引擎MyISAM與InnoDB的區(qū)別3.速度差異InnoDB的表在使用SELECTCOUNT的時(shí)候,如果表的總行數(shù)不超過(guò)2萬(wàn)條,檢索速度應(yīng)該不會(huì)達(dá)到瓶頸,但是一旦超過(guò)了這個(gè)值,隨著行數(shù)的增加,SELECTCOUNT查詢效率會(huì)迅速下降。經(jīng)測(cè)試,檢索一張表(大約4.3萬(wàn)行)的數(shù)據(jù),MyISAM耗費(fèi)105微秒,InnoDB耗費(fèi)10335微秒。可以看出InnoDB耗時(shí)是MyISAM的90倍!這還是僅僅是4萬(wàn)多行數(shù)據(jù)下測(cè)試的差距,隨著行數(shù)的增加,這個(gè)差距會(huì)越來(lái)越大。3.3.2常用引擎MyISAM與InnoDB的區(qū)別4.生產(chǎn)環(huán)境中的使用MyISAM管理非事務(wù)表,可以提供高速檢索和全文搜索。如果應(yīng)用中需要執(zhí)行大量的SELECT查詢,那么MyISAM是很好的選擇。InnoDB用于事務(wù)處理應(yīng)用程序,具有眾多特性,包括ACID事務(wù)支持。如果應(yīng)用中需要執(zhí)行大量的INSERT命令或者UPDATE命令,則采用InnoDB可以提高多用戶并發(fā)操作的性能。3.3.3存儲(chǔ)引擎選擇MySQL支持的存儲(chǔ)引擎有著不同的特點(diǎn),適用于不同的需求。為了做出正確的選擇,用戶首先需要考慮每個(gè)存儲(chǔ)引擎提供了哪些功能。存儲(chǔ)引擎功能比較如表3.5所示。3.3.3存儲(chǔ)引擎選擇如果只是臨時(shí)存放數(shù)據(jù),數(shù)據(jù)量不大并且不需要較高的數(shù)據(jù)安全性,可以選擇將數(shù)據(jù)保存在內(nèi)存中的Memory。MySQL使用該引擎作為臨時(shí)表存放查詢的中間結(jié)果。如果只有SELECT操作,可以選擇Archive引擎。Archive支持高并發(fā)的插入操作,但是本身并不是事務(wù)安全的。具體使用哪一種引擎需要根據(jù)實(shí)際需求靈活選擇,一個(gè)數(shù)據(jù)庫(kù)中的多個(gè)表可以使用不同引擎以滿足各種性能。使用合適的存儲(chǔ)引擎將提高整個(gè)數(shù)據(jù)庫(kù)的性能。3.4庫(kù)與表的基本操作3.4.1庫(kù)操作返回目錄3.4.2表操作3.4.1庫(kù)操作創(chuàng)建數(shù)據(jù)庫(kù)實(shí)際上是在數(shù)據(jù)庫(kù)系統(tǒng)中劃分出一部分空間,用來(lái)存儲(chǔ)和區(qū)分不同的數(shù)據(jù)。創(chuàng)建數(shù)據(jù)庫(kù)是進(jìn)行表操作的基礎(chǔ),也是進(jìn)行數(shù)據(jù)管理的基礎(chǔ)。庫(kù)與表的關(guān)系如圖所示。3.4.1庫(kù)操作MySQL的庫(kù)操作分為以下四種。1.創(chuàng)建庫(kù)在MySQL中,創(chuàng)建數(shù)據(jù)庫(kù)需要通過(guò)SQL語(yǔ)句CREATEDATABASE實(shí)現(xiàn),其語(yǔ)法形式如下。其中,“數(shù)據(jù)庫(kù)名”表示需要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名稱。數(shù)據(jù)庫(kù)命名需要注意以下幾點(diǎn)。(1)數(shù)據(jù)庫(kù)名稱是唯一的,且區(qū)分大小寫。(2)可以由字母、數(shù)字、下畫線、@、#、$組成。(3)不能使用關(guān)鍵字。(4)不能單獨(dú)使用數(shù)字。(5)最長(zhǎng)128位。3.4.1庫(kù)操作數(shù)據(jù)庫(kù)選項(xiàng)為[CHARACTERSET=<字符集>COLLATE=<排序規(guī)則>]。在安裝MySQL時(shí)默認(rèn)使用的字符編碼為L(zhǎng)atin-1。Latin-1編碼是單字節(jié)編碼,而一般漢字需要兩個(gè)字節(jié)來(lái)存儲(chǔ),所以這個(gè)編碼格式不支持漢字,而UTF-8編碼支持中文顯示。常見(jiàn)的字符集有GBK、UTF-8、Latin-1。字符集的基本使用方法如下。創(chuàng)建數(shù)據(jù)庫(kù),指定默認(rèn)的字符編碼為UTF-8,排序規(guī)則為utf8mb4_general_ci。創(chuàng)建數(shù)據(jù)庫(kù),指定默認(rèn)的字符編碼為GBK,排序規(guī)則為gbk_chinese_ci。3.4.1庫(kù)操作2.查看庫(kù)查看數(shù)據(jù)庫(kù)的SQL語(yǔ)句為SHOWDATABASES。在使用數(shù)據(jù)庫(kù)時(shí),還可以用SELECT命令查看當(dāng)前使用的是哪個(gè)數(shù)據(jù)庫(kù)(用于確定當(dāng)前位置)。兩種情況的語(yǔ)法形式如下。3.使用庫(kù)使用數(shù)據(jù)庫(kù)需要通過(guò)SQL語(yǔ)句USEDATABASE實(shí)現(xiàn),其語(yǔ)法形式如下。3.4.1庫(kù)操作4.刪除庫(kù)刪除數(shù)據(jù)庫(kù)的SQL語(yǔ)句形式如下所示,“數(shù)據(jù)庫(kù)名”同樣是需要?jiǎng)h除的數(shù)據(jù)庫(kù)名稱。讀者可以通過(guò)例更清楚地了解SQL語(yǔ)句在庫(kù)操作中的用法。3.4.1庫(kù)操作3.4.1庫(kù)操作從上方代碼可以看出,在初始情況下,MySQL默認(rèn)的數(shù)據(jù)庫(kù)包括information_schema庫(kù)、mysql庫(kù)、performance_schema庫(kù)、sys庫(kù),關(guān)于這四個(gè)庫(kù)的說(shuō)明如表所示。此處需要注意,MySQL默認(rèn)的庫(kù)文件不可以刪除,刪除后可能會(huì)造成MySQL文件系統(tǒng)的損壞。3.4.1庫(kù)操作在例的代碼可以看出,使用SQL語(yǔ)句分別成功創(chuàng)建了“qianfeng”和“Qianfeng”兩個(gè)庫(kù)文件。SQL語(yǔ)句的輸出結(jié)果也清楚地表現(xiàn)出數(shù)據(jù)庫(kù)的名稱區(qū)分大小寫。隨后的SQL語(yǔ)句成功刪除了Qianfeng庫(kù),最后的反饋表示定位到正在使用數(shù)據(jù)庫(kù)qianfeng。3.4.2表操作表是數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的基本單位,在表中可以存儲(chǔ)不同的字段和數(shù)據(jù)記錄。表的基本操作包括新建表、修改表和刪除表。創(chuàng)建表的過(guò)程是規(guī)定數(shù)據(jù)列屬性的過(guò)程,同時(shí)也是實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)完整性和約束性的過(guò)程。接下來(lái)介紹有關(guān)表的操作。1.創(chuàng)建表創(chuàng)建表的基本格式如下所示。3.4.2表操作創(chuàng)建表格式關(guān)鍵字說(shuō)名明表所示。在創(chuàng)建表之前需要使用“USE數(shù)據(jù)庫(kù)名”切換到要操作的數(shù)據(jù)庫(kù)。2.創(chuàng)建表指定默認(rèn)值在表中設(shè)置列屬性時(shí),列可以指定默認(rèn)值。在表中插入數(shù)據(jù)時(shí)如果未主動(dòng)設(shè)置,則該列會(huì)自動(dòng)添加默認(rèn)值?;居梅ㄈ缦?。3.4.2表操作在上方代碼中null表示為空值,并不是字符串類型。notnull表示不為空值,在添加數(shù)據(jù)時(shí)必須給值。3.創(chuàng)建表指定自增如果設(shè)置某列為自增列,插入數(shù)據(jù)時(shí)無(wú)須設(shè)置此列的值,默認(rèn)此列的數(shù)值自增。需要注意,一個(gè)表中只能存在一個(gè)自增列。使用方法如下。3.4.2表操作其中auto_increment表示自增,primarykey表示外鍵約束。數(shù)據(jù)表的創(chuàng)建如例所示。3.4.2表操作查看數(shù)據(jù)庫(kù)qianfeng是否存在。如果存在,則進(jìn)入qianfeng數(shù)據(jù)庫(kù)來(lái)創(chuàng)建stu表;如果不存在,則創(chuàng)建qianfeng數(shù)據(jù)庫(kù)。3.4.2表操作出現(xiàn)Databasechanged提示表示已經(jīng)成功切換到了數(shù)據(jù)庫(kù)qianfeng。接下來(lái)創(chuàng)建數(shù)據(jù)表stu,SQL語(yǔ)句如下所示。此時(shí)可以查看數(shù)據(jù)表是否創(chuàng)建成功,使用SHOWTABLES語(yǔ)句即可。SQL語(yǔ)句如下所示。3.4.2表操作從上方代碼的執(zhí)行結(jié)果可看出,數(shù)據(jù)庫(kù)qianfeng中已經(jīng)成功創(chuàng)建stu表。4.查看數(shù)據(jù)表屬性數(shù)據(jù)表創(chuàng)建完成后,可以使用SHOWCREATETABLE命令查看數(shù)據(jù)表的屬性,其語(yǔ)法格式如下所示。查看前面創(chuàng)建的stu表,SQL語(yǔ)句如下所示。3.4.2表操作3.4.2表操作從上方執(zhí)行結(jié)果中可看出,SHOWCREATETABLE不僅可以查看表中的列,還可以查看表的字符編碼等信息,但是顯示的格式非常混亂。可以在查詢語(yǔ)句后加上參數(shù)“\G”進(jìn)行格式化,SQL語(yǔ)句如下所示。3.4.2表操作執(zhí)行結(jié)果中,顯示的格式明顯比先前整齊很多。另外,如果只想查看表中列的相關(guān)信息,可以使用DESCRIBE語(yǔ)句,語(yǔ)法格式如下所示。還可以使用DESCRIBE的簡(jiǎn)寫形式DESC進(jìn)行查看,SQL語(yǔ)句如下所示這兩種查詢方式結(jié)果是一樣的,因此一般使用簡(jiǎn)寫的方式來(lái)查詢。3.4.2表操作5.刪除數(shù)據(jù)表在MySQL中使用DROPTABLE語(yǔ)句刪除數(shù)據(jù)表中的內(nèi)容和表結(jié)構(gòu),這里可以理解為徹底刪除表,其語(yǔ)法格式如下所示。將表stu刪除,SQL語(yǔ)句如下所示。3.4.2表操作從上方代碼的執(zhí)行結(jié)果可以看出英雄信息表stu被成功刪除。在實(shí)際生產(chǎn)環(huán)境中,需要對(duì)所刪除的信息核對(duì)無(wú)誤后再進(jìn)行刪除操作,此語(yǔ)句需謹(jǐn)慎執(zhí)行,避免數(shù)據(jù)丟失。3.5表的高級(jí)操作3.5.1數(shù)據(jù)的插入返回目錄3.5.2刪除表內(nèi)容3.5.3修改數(shù)據(jù)表3.5.4更新數(shù)據(jù)3.5表的高級(jí)操作數(shù)據(jù)表基本結(jié)構(gòu)創(chuàng)建完成后,即可在表中插入或者修改數(shù)據(jù)。插入數(shù)據(jù)可以分為向所有列插入數(shù)據(jù)、向指定的列插入數(shù)據(jù)、批量插入數(shù)據(jù)等。修改表可以分為修改表結(jié)構(gòu)、修改表名或刪除表中指定數(shù)據(jù)等。下面將詳細(xì)介紹這些關(guān)于表的高級(jí)操作。3.5.1數(shù)據(jù)的插入關(guān)系型數(shù)據(jù)庫(kù)在操作數(shù)據(jù)時(shí)需要保持?jǐn)?shù)據(jù)的一致性,在數(shù)據(jù)表中插入數(shù)據(jù)需要保持字段與值的一一對(duì)應(yīng),即一個(gè)字段對(duì)應(yīng)一個(gè)值。MySQL數(shù)據(jù)庫(kù)插入數(shù)據(jù)使用INSERT語(yǔ)句,基本用法分為以下兩種。1.為所有列插入數(shù)據(jù)使用INSERT語(yǔ)句列出表的所有字段可以向表中插入數(shù)據(jù),根據(jù)數(shù)據(jù)量不同分為以下兩種情況。(1)插入一條數(shù)據(jù)的語(yǔ)法格式如下。3.5.1數(shù)據(jù)的插入(2)同時(shí)插入多條數(shù)據(jù)的語(yǔ)法格式如下。INSERT語(yǔ)句格式中,“字段名1,字段名2”是數(shù)據(jù)表中的字段名稱,VALUES中的“值1,值2”是對(duì)應(yīng)每個(gè)字段添加的數(shù)據(jù)。需要注意,這里必須列出表中所有字段的名稱,且值的順序、類型必須與語(yǔ)句中的字段名順序?qū)?yīng)。2.查看表內(nèi)容數(shù)據(jù)插入后可以通過(guò)SELECT指令查詢表中的信息。語(yǔ)句的基本格式如下。3.5.1數(shù)據(jù)的插入插入和查看數(shù)據(jù)語(yǔ)句的基本使用方法如例所示。3.5.1數(shù)據(jù)的插入查看數(shù)據(jù)庫(kù)qianfeng中是否存在stu表,SQL語(yǔ)句操作流程如下所示。創(chuàng)建表的具體流程可以參照例。以上執(zhí)行結(jié)果證明表創(chuàng)建完成,為了進(jìn)一步驗(yàn)證,可以使用DESC查看庫(kù)中的stu表的列屬性,SQL語(yǔ)句如下所示。3.5.1數(shù)據(jù)的插入從以上執(zhí)行結(jié)果可看出,stu數(shù)據(jù)表格式滿足需求。接下來(lái)使用INSERT語(yǔ)句將表中的信息插入stu表。具體代碼執(zhí)行過(guò)程如下所示。上方代碼的執(zhí)行結(jié)果證明插入數(shù)據(jù)完成。為了進(jìn)一步驗(yàn)證,使用SELECT語(yǔ)句查看stu表中的內(nèi)容,SQL語(yǔ)句如下所示。3.5.1數(shù)據(jù)的插入從以上執(zhí)行結(jié)果可看出,stu表中的數(shù)據(jù)成功插入。因?yàn)楸碇兄徊迦肓艘粭l記錄,所以只查詢到了一條結(jié)果。3.為指定列插入數(shù)據(jù)在實(shí)際場(chǎng)景中,遇到較多的情況是只需在表中添加某幾個(gè)字段的數(shù)據(jù),即為指定列插入數(shù)據(jù),語(yǔ)法格式如下所示。從上面的代碼可以看出,只需要對(duì)字段1、字段3進(jìn)行數(shù)值插入,字段2不需要插入數(shù)據(jù),在進(jìn)行操作時(shí)字段2的值會(huì)默認(rèn)設(shè)為空值。為stu表插入數(shù)據(jù),且只插入前四個(gè)字段的數(shù)據(jù),SQL語(yǔ)句如下所示。3.5.2刪除表內(nèi)容1.DELETE語(yǔ)句MySQL中可以使用DELETE語(yǔ)句刪除表中數(shù)據(jù),語(yǔ)法格式如下所示。WHERE條件語(yǔ)句是可選的,用于指定要?jiǎng)h除的數(shù)據(jù)滿足的條件。通過(guò)DELETE語(yǔ)句可以實(shí)現(xiàn)刪除全部數(shù)據(jù)或者刪除部分?jǐn)?shù)據(jù),接下來(lái)對(duì)這兩種情況進(jìn)行詳細(xì)講解。(1)使用DELETE刪除全部數(shù)據(jù)當(dāng)DELETE語(yǔ)句中不使用WHERE條件語(yǔ)句時(shí),將會(huì)刪除表中全部數(shù)據(jù)。將stu表中所有數(shù)據(jù)都刪除,首先使用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論