MySQL數(shù)據(jù)庫(kù)基礎(chǔ)PPT(高職)完整全套教學(xué)課件_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)PPT(高職)完整全套教學(xué)課件_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)PPT(高職)完整全套教學(xué)課件_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)PPT(高職)完整全套教學(xué)課件_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)PPT(高職)完整全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩200頁(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)介

MySQL數(shù)據(jù)庫(kù)基礎(chǔ)第1章數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)第2章數(shù)據(jù)設(shè)計(jì)第3章數(shù)據(jù)庫(kù)及數(shù)據(jù)表的基本操作第4章數(shù)據(jù)更新第5章數(shù)據(jù)查詢第6章數(shù)據(jù)視圖第7章索引第8章數(shù)據(jù)庫(kù)編程第9章數(shù)據(jù)安全第10章綜合案例

第1章

數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)1.1基本概念1.2關(guān)系數(shù)據(jù)庫(kù)1.3MySQL的安裝與配置011.1.1數(shù)據(jù)與數(shù)據(jù)庫(kù)1.1基本概念數(shù)據(jù)(Data)是對(duì)客觀事物的符號(hào)記錄,是按照一定規(guī)則排列組合的物理符號(hào),可以是數(shù)字、文字、圖像等。在計(jì)算機(jī)中,數(shù)據(jù)是指經(jīng)過(guò)數(shù)字化后能被計(jì)算機(jī)處理的符號(hào)記錄。數(shù)據(jù)是描述和管理信息的有效載體。數(shù)據(jù)庫(kù)(Database)可以理解為存儲(chǔ)數(shù)據(jù)的地方。在計(jì)算機(jī)中,數(shù)據(jù)庫(kù)是指存儲(chǔ)在計(jì)算機(jī)內(nèi),有組織、可共享的數(shù)據(jù)集合。在數(shù)據(jù)庫(kù)中保存的是以一定方式存儲(chǔ)在一起的相互關(guān)聯(lián)的數(shù)據(jù)整體。數(shù)據(jù)庫(kù)既保存了數(shù)據(jù),也保存了數(shù)據(jù)與數(shù)據(jù)之間的相互關(guān)系。通過(guò)數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),可以方便地對(duì)數(shù)據(jù)進(jìn)行查詢、更新、添加和刪除等操作。例如,將一個(gè)班的學(xué)生信息進(jìn)行存儲(chǔ),可以使用如表1-1所示的結(jié)構(gòu)1.1.2數(shù)據(jù)庫(kù)系統(tǒng)1.1基本概念數(shù)據(jù)庫(kù)系統(tǒng)(DatabaseSystem,DBS)通常由硬件、數(shù)據(jù)庫(kù)、管理軟件、用戶4個(gè)部分組成,如圖11所示。1.1.3數(shù)據(jù)庫(kù)管理系統(tǒng)1.1基本概念數(shù)據(jù)庫(kù)管理系統(tǒng)(DatabaseManagementSystem,DBMS)是位于用戶與操作系統(tǒng)之間的一種數(shù)據(jù)管理軟件。使用數(shù)據(jù)庫(kù)管理系統(tǒng)可以創(chuàng)建、使用和維護(hù)數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)管理系統(tǒng)建立在操作系統(tǒng)的基礎(chǔ)上,對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫(kù)的安全和完整性。數(shù)據(jù)庫(kù)管理系統(tǒng)的主要功能包括以下幾點(diǎn)。(1)數(shù)據(jù)定義。數(shù)據(jù)庫(kù)管理系統(tǒng)提供了數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage,DDL),用于定義數(shù)據(jù)庫(kù)的結(jié)構(gòu)、完整性約束條件和觸發(fā)機(jī)制等。(2)數(shù)據(jù)操縱。數(shù)據(jù)操縱語(yǔ)言(DataManipulationLanguage,DML)可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作,包括對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的查詢、添加、修改、刪除等。(3)數(shù)據(jù)庫(kù)的建立與維護(hù)。數(shù)據(jù)庫(kù)管理系統(tǒng)提供了一些管理維護(hù)程序,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)初始數(shù)據(jù)的輸入,對(duì)工作日志進(jìn)行記錄,對(duì)數(shù)據(jù)庫(kù)性能進(jìn)行監(jiān)視,重新組織數(shù)據(jù)庫(kù),修改和更新數(shù)據(jù)庫(kù)及數(shù)據(jù)恢復(fù)等。(4)數(shù)據(jù)庫(kù)控制。數(shù)據(jù)庫(kù)管理系統(tǒng)還提供了一系列運(yùn)行控制程序,可以實(shí)現(xiàn)對(duì)運(yùn)行中的數(shù)據(jù)庫(kù)進(jìn)行管理和控制。對(duì)數(shù)據(jù)庫(kù)的管理和控制主要體現(xiàn)為以下幾點(diǎn)。1.1.4結(jié)構(gòu)化查詢語(yǔ)言1.1基本概念在與數(shù)據(jù)庫(kù)進(jìn)行交互時(shí)通常需要一種語(yǔ)言來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作。目前,被廣泛使用的關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言就是結(jié)構(gòu)化查詢語(yǔ)言(StructuredQueryLanguage,SQL)。使用SQL可以實(shí)現(xiàn)對(duì)關(guān)系數(shù)據(jù)庫(kù)中數(shù)據(jù)的查詢、插入、更新、刪除等,也可以對(duì)關(guān)系數(shù)據(jù)庫(kù)進(jìn)行管理。SQL是一種高級(jí)的非過(guò)程化編程語(yǔ)言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作,既不要求用戶指定數(shù)據(jù)的存放方法,也不需要知道數(shù)據(jù)的具體存放方式,只需要指出“做什么”即可。由于SQL簡(jiǎn)單易學(xué),且功能豐富,因此它已被定為關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的國(guó)際標(biāo)準(zhǔn)。SQL中的語(yǔ)句主要分為以下4類。(1)數(shù)據(jù)定義。數(shù)據(jù)定義語(yǔ)言主要負(fù)責(zé)定義數(shù)據(jù)庫(kù)對(duì)象及數(shù)據(jù)結(jié)構(gòu)。例如,對(duì)數(shù)據(jù)庫(kù)對(duì)象的創(chuàng)建、修改和刪除。常使用的數(shù)據(jù)定義語(yǔ)句包括CREATE、ALTER、DROP等。例如,創(chuàng)建數(shù)據(jù)庫(kù)cjgl可以使用語(yǔ)句:CREATEDATABASEcjgl。(2)數(shù)據(jù)操縱。數(shù)據(jù)操縱語(yǔ)言主要負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行訪問(wèn),包括數(shù)據(jù)的插入、修改、刪除和查詢等。常用的數(shù)據(jù)操縱語(yǔ)句包括:INSERT、UPDATE、DELETE、SELECT等。例如,查詢student表的數(shù)據(jù)可以使用語(yǔ)句:SELECT*fromstudent。(3)數(shù)據(jù)控制。數(shù)據(jù)控制語(yǔ)言(DataControlLanguage,DCL)主要負(fù)責(zé)對(duì)數(shù)據(jù)的訪問(wèn)權(quán)限進(jìn)行控制,可以實(shí)現(xiàn)用戶對(duì)數(shù)據(jù)表、預(yù)存程序和函數(shù)等的使用權(quán)限的管理。(4)事務(wù)處理。數(shù)據(jù)庫(kù)中的事務(wù)指的是一組不可分割的操作,要么都執(zhí)行,要么都不執(zhí)行。事務(wù)處理語(yǔ)句負(fù)責(zé)對(duì)事務(wù)中的操作進(jìn)行控制。1.2.1關(guān)系數(shù)據(jù)模型1.2關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)模型(DataModel)是對(duì)現(xiàn)實(shí)世界數(shù)據(jù)的模擬和抽象,是數(shù)據(jù)庫(kù)的核心與基礎(chǔ),提供了信息表示和操作手段的形式架構(gòu)。數(shù)據(jù)模型的主要作用是確定系統(tǒng)中數(shù)據(jù)的定義和格式,使人更容易理解,以便在數(shù)據(jù)庫(kù)系統(tǒng)上得以更好的實(shí)現(xiàn)。數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束3個(gè)部分組成。(1)數(shù)據(jù)結(jié)構(gòu):是對(duì)數(shù)據(jù)靜態(tài)特征的描述,包括數(shù)據(jù)的類型、內(nèi)容、性質(zhì)和數(shù)據(jù)之間的相互關(guān)系等。(2)數(shù)據(jù)操作:是對(duì)數(shù)據(jù)庫(kù)對(duì)象動(dòng)態(tài)特征的描述,主要包括操作類型和操作方式。(3)完整性約束:是一組完整性規(guī)則的集合,主要用于描述數(shù)據(jù)之間的語(yǔ)法、數(shù)據(jù)之間的相互關(guān)系和制約關(guān)系等,并規(guī)定了數(shù)例如,班級(jí)和學(xué)生之間的關(guān)系可以通過(guò)圖1-2表示。1.2.1關(guān)系數(shù)據(jù)模型1.2關(guān)系數(shù)據(jù)庫(kù)一個(gè)班級(jí)可以有多個(gè)學(xué)生,一個(gè)學(xué)生只能屬于一個(gè)班級(jí)。將班級(jí)與學(xué)生的這種關(guān)系轉(zhuǎn)換為關(guān)系表,可以通過(guò)班級(jí)編號(hào)進(jìn)行關(guān)聯(lián),如表1-2和表1-3所示。1.2.2關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)1.2關(guān)系數(shù)據(jù)庫(kù)針對(duì)關(guān)系數(shù)據(jù)模型設(shè)計(jì)的數(shù)據(jù)庫(kù)管理系統(tǒng)稱為關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RelationalDatabaseManagementSystem,RDBMS)。常見(jiàn)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)包括SQLServer、DB2、Oracle和MySQL等。1.SQLServerSQLServer是Microsoft公司推出的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。2.DB2DB2是IBM公司開(kāi)發(fā)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),主要運(yùn)行在UNIX、Linux等服務(wù)器操作系統(tǒng)上。3.OracleOracle是甲骨文公司開(kāi)發(fā)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。MySQLMySQL由瑞典的MySQLAB公司開(kāi)發(fā),目前是Oracle公司旗下產(chǎn)品。1.2.3關(guān)系的完整性約束1.2關(guān)系數(shù)據(jù)庫(kù)1.實(shí)體完整性實(shí)體完整性也稱為表中行的完整性,指的是能唯一標(biāo)示一個(gè)實(shí)體且屬性不能為空值,也不能有重復(fù)的主碼。在關(guān)系數(shù)據(jù)模型中,將能標(biāo)示一條記錄的屬性或?qū)傩越M稱為候選碼,一般選中其中的一個(gè)作為該關(guān)系的主碼。包含在任何一個(gè)候選碼中的屬性都稱為主屬性。不包含在任何候選碼中的屬性稱為非主屬性。實(shí)體完整性規(guī)則是指關(guān)系中的主屬性不能為空值,也不能重復(fù)。2.參照完整性參照完整性是定義建立關(guān)系之間聯(lián)系的主關(guān)鍵字與外部關(guān)鍵字引用的約束條件。在關(guān)系數(shù)據(jù)模型中,實(shí)體與實(shí)體之間的關(guān)系可以通過(guò)引用對(duì)應(yīng)的實(shí)體關(guān)系模式的主碼來(lái)表示。在上面的關(guān)系中,學(xué)生關(guān)系中的“所屬班級(jí)編號(hào)”對(duì)應(yīng)于班級(jí)關(guān)系中的“班級(jí)編號(hào)”,而“班級(jí)編號(hào)”是班級(jí)關(guān)系的主碼,則“所屬班級(jí)編號(hào)”是學(xué)生關(guān)系的外碼。參照完整性約束規(guī)則為:若屬性F是基本關(guān)系R的外碼,且與基本關(guān)系S的主碼K相對(duì)應(yīng),則R中某條記錄的F值必須與S中某條記錄的主碼值相同,或者取空值。3.用戶定義完整性用戶定義完整性是根據(jù)應(yīng)用環(huán)境的要求和實(shí)際的需要,對(duì)某一具體應(yīng)用所涉及的數(shù)據(jù)提出約束性條件。這一約束機(jī)制一般不應(yīng)由應(yīng)用程序提供,而應(yīng)由關(guān)系數(shù)據(jù)模型提供定義并檢驗(yàn),用戶定義完整性主要包括字段有效性約束和記錄有效性約束。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置MySQL服務(wù)器的安裝包可以到MySQL官網(wǎng)上下載。下載MySQL安裝包文件的具體步驟如下。(1)在瀏覽器地址欄中輸入:/downloads/,按“Enter”鍵進(jìn)入下載頁(yè)面,如圖1-3所示。(2)單擊超鏈接“MySQLInstallerforWindows”,跳轉(zhuǎn)到MySQL版本選擇頁(yè)面。單擊“LookingforthelatestGAversion?”,在“SelectVersion”下拉列表框中選擇“5.7.29”,在“SelectOperatingSystem”下拉列表框中選擇“MicrosoftWindows”,如圖1-4所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(3)單擊“Windows(x86,32-bit),MSIInstaller”右邊的“Download”按鈕,跳轉(zhuǎn)到用戶注冊(cè)頁(yè)面,單擊頁(yè)面下方的“Nothanks,juststartmydownload.”超鏈接,開(kāi)始下載,如圖1-5所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置MySQL安裝包文件下載成功后,便可以安裝MySQL服務(wù)器。安裝MySQL的具體步驟如下。(1)雙擊下載的mysql-installer-community-.msi文件,進(jìn)入安裝向?qū)?。首先需要選擇一種安裝類型。安裝類型包括5種:“DeveloperDefault”(開(kāi)發(fā)者默認(rèn))、“Serveronly”(僅服務(wù)器)、“Clientonly”(僅客戶端)、“Full”(完全)、“Custom”(自定義),如圖1-6所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(2)選擇“DeveloperDefault”單選按鈕,然后單擊“Next”按鈕,進(jìn)入“PathConflicts”對(duì)話框,如圖1-7所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(3)在“InstallDirectory”文本框中設(shè)置MySQL服務(wù)器的安裝位置,在“DataDirectory”文本框中設(shè)置數(shù)據(jù)的存放位置,然后單擊“Next”按鈕,進(jìn)入“CheckRequirements”對(duì)話框。在該對(duì)話框中檢查系統(tǒng)是否具備安裝MySQL所必需的插件,如果不具備,單擊“Execute”按鈕,在線安裝所需的插件,如圖1-8所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(4)插件安裝完成以后,單擊“Next”按鈕,進(jìn)入“Installation”對(duì)話框,如圖1-9所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(5)單擊“Execute”按鈕,開(kāi)始安裝MySQL的各項(xiàng)組件。安裝完成后單擊“Next”按鈕,進(jìn)入“ProductConfiguration”對(duì)話框,如圖1-10所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(6)單擊“Next”按鈕,進(jìn)入“HighAvailability”對(duì)話框,如圖1-11所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(7)保持默認(rèn)設(shè)置,單擊“Next”按鈕,進(jìn)入“TypeandNetworking”對(duì)話框。在該對(duì)話框中配置服務(wù)器類型和網(wǎng)絡(luò)選項(xiàng)。服務(wù)器類型包括:DevelopmentComputer(開(kāi)發(fā)者類型)、ServerComputer(服務(wù)器類型)、DedicatedComputer(致力于MySQL服務(wù)類型)3種。網(wǎng)絡(luò)選項(xiàng)包括連接方式和端口的設(shè)置,如圖1-12所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(8)選擇默認(rèn)的服務(wù)器類型“DevelopmentComputer”和默認(rèn)的網(wǎng)絡(luò)連接方式“TCP/IP”,并保持默認(rèn)端口“3306”。單擊“Next”按鈕,進(jìn)入“AccountsandRoles”對(duì)話框。在該對(duì)話框中可以設(shè)置默認(rèn)用戶root的登錄密碼,也可以添加新的用戶,如圖1-13所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(9)在“MySQLRootPassword”和“RepeatPassword”文本框中輸入相同的密碼,然后單擊“Next”按鈕,進(jìn)入“WindowsService”對(duì)話框。在該對(duì)話框中,配置MySQL服務(wù)器的名稱,是否開(kāi)機(jī)自啟動(dòng)等,如圖1-14所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(10)保持默認(rèn)設(shè)置,單擊“Next”按鈕,進(jìn)入“ApplyConfiguration”對(duì)話框,如圖1-15所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(11)單擊“Execute”按鈕,完成MySQL服務(wù)器的配置,如圖1-16所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(12)單擊“Finish”按鈕,然后在彈出的對(duì)話框中單擊“Next”按鈕,進(jìn)入“MySQLRouterConfiguration”對(duì)話框,如圖1-17所示1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(13)保持默認(rèn)設(shè)置,單擊“Finish”按鈕,然后在彈出的對(duì)話框中單擊“Next”按鈕,進(jìn)入“ConnectToServer”對(duì)話框。在“Password”文本框中輸入密碼,單擊“Check”按鈕,測(cè)試連接,如圖1-18所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(14)單擊“Next”按鈕,進(jìn)入“ApplyConfiguration”對(duì)話框,單擊“Execute”按鈕,應(yīng)用配置,如圖1-19所示。1.3.1MySQL服務(wù)器的安裝與配置1.3MySQL的安裝與配置(15)單擊“Finish”按鈕,進(jìn)入“InstallationComplete”對(duì)話框,完成安裝。在該對(duì)話框中,單擊“Finish”按鈕,完成整個(gè)安裝過(guò)程,如圖1-20所示。1.3.2MySQL基本操作1.3MySQL的安裝與配置1.通過(guò)系統(tǒng)服務(wù)操作MySQL服務(wù)器在Windows的系統(tǒng)服務(wù)中可以啟動(dòng)、暫停、停止和重新啟動(dòng)MySQL服務(wù)器,具體方法如下。執(zhí)行“開(kāi)始”|“控制面板”|“管理工具”|“服務(wù)”命令,打開(kāi)Windows服務(wù)管理器窗口。在該窗口中選擇名稱為“MySQL57”的服務(wù),可以查看該項(xiàng)服務(wù)的狀態(tài)。在窗口左邊單擊相應(yīng)的選項(xiàng),可實(shí)現(xiàn)對(duì)MySQL服務(wù)器的操作。也可以在該項(xiàng)上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇相應(yīng)的命令,實(shí)現(xiàn)對(duì)MySQL服務(wù)的啟動(dòng)、暫停、停止和重新啟動(dòng)等操作,如圖1-21所示。1.3.2MySQL基本操作1.3MySQL的安裝與配置2.通過(guò)命令提示符操作MySQL服務(wù)器通過(guò)在命令提示符窗口中輸入命令,也可以實(shí)現(xiàn)對(duì)MySQL服務(wù)器的操作,具體方法如下。單擊“開(kāi)始”菜單,在彈出的輸入框中輸入“cmd”命令,按“Enter”鍵,打開(kāi)命令提示符窗口。在該窗口中輸入以下命令。3.netstartmysql57按“Enter”鍵,即可啟動(dòng)MySQL服務(wù)器,如圖1-22所示。1.3.3CommandLineClient1.3MySQL的安裝與配置MySQL服務(wù)器啟動(dòng)后,就可以通過(guò)MySQL的CommandLineClient程序來(lái)操作MySQL數(shù)據(jù)了,具體步驟如下。(1)執(zhí)行“開(kāi)始”|“所有程序”|“MySQL”|“MySQLServer5.7”|“MySQL5.7CommandLineClient”命令,打開(kāi)MySQL客戶端命令行窗口,如圖1-23所示。1.3.3CommandLineClient1.3MySQL的安裝與配置(2)在該窗口中輸入root用戶的登錄密碼(該密碼為安裝過(guò)程中配置的密碼),登錄到MySQL服務(wù)器,如圖1-24所示。1.3.3CommandLineClient1.3MySQL的安裝與配置(3)輸入操作的SQL語(yǔ)句,即可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的各項(xiàng)操作,如圖1-25所示。1.3.4MySQL圖形化界面管理工具1.3MySQL的安裝與配置MySQL本身沒(méi)有提供非常方便的圖形化界面管理工具,操作都通過(guò)在客戶端命令行窗口中進(jìn)行,需要對(duì)操作命令非常熟悉,對(duì)于初學(xué)者來(lái)說(shuō)增加了學(xué)習(xí)難度。在學(xué)習(xí)過(guò)程中,可以使用第三方提供的圖形化界面管理工具。常用的圖形化界面管理工具包括使用Navicat操作MySQL數(shù)據(jù)庫(kù)的基本步驟如下。(1)打開(kāi)Navicat,如圖1-26所示。1.3.4MySQL圖形化界面管理工具1.3MySQL的安裝與配置(2)單擊“連接”按鈕,在彈出的“新建連接”對(duì)話框中輸入“連接名”“主機(jī)名或IP地址”“端口”“用戶名”和“密碼”等信息,單擊“連接測(cè)試”按鈕。若彈出“連接成功”對(duì)話框,則表明連接信息正確,如圖1-27所示。1.3.4MySQL圖形化界面管理工具1.3MySQL的安裝與配置(3)單擊該對(duì)話框中的“確定”按鈕,再單擊“新建連接”對(duì)話框中的“確定”按鈕,返回Navicat窗口。在窗口左側(cè)顯示出剛才建立的連接。雙擊該連接,即可查看當(dāng)前MySQL服務(wù)器中已有的數(shù)據(jù)庫(kù),如圖1-28所示。1.3.4MySQL圖形化界面管理工具1.3MySQL的安裝與配置(4)在連接名稱“test”上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“新建數(shù)據(jù)庫(kù)”命令,彈出“新建數(shù)據(jù)庫(kù)”對(duì)話框。在該對(duì)話框中設(shè)置“數(shù)據(jù)庫(kù)名”“字符集”和“排序規(guī)則”信息,如圖1-29所示。1.3.4MySQL圖形化界面管理工具1.3MySQL的安裝與配置(5)單擊“確定”按鈕,返回Navicat窗口。在“test”連接下可以看到新建的數(shù)據(jù)庫(kù)“db_test”。雙擊“db_test”,打開(kāi)該數(shù)據(jù)庫(kù)。在表上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“新建表”命令,打開(kāi)表設(shè)計(jì)窗口。在該窗口中設(shè)置表結(jié)構(gòu)信息,如圖1-30所示。1.3.4MySQL圖形化界面管理工具1.3MySQL的安裝與配置(6)單擊“保存”按鈕,彈出“表名”對(duì)話框。在該對(duì)話框中輸入表名信息,單擊“確定”按鈕,返回Navicat窗口。在窗口中雙擊“db_test”下的“表”,即可查看剛才創(chuàng)建的數(shù)據(jù)表“tb_test”。雙擊“tb_test”,打開(kāi)表,在該表中輸入基本數(shù)據(jù),如圖1-31所示。(7)在Navicat窗口中對(duì)數(shù)據(jù)庫(kù)和數(shù)據(jù)表進(jìn)行其他操作。由于圖形化界面操作相對(duì)比較簡(jiǎn)單,此處不再詳細(xì)介紹,讀者可以在學(xué)習(xí)的過(guò)程中自行研究。MySQL數(shù)據(jù)庫(kù)基礎(chǔ)

第2章

數(shù)據(jù)設(shè)計(jì)2.1數(shù)據(jù)庫(kù)設(shè)計(jì)概述2.2概念結(jié)構(gòu)設(shè)計(jì)2.3邏輯結(jié)構(gòu)設(shè)計(jì)2.4物理結(jié)構(gòu)設(shè)計(jì)2.5數(shù)據(jù)庫(kù)實(shí)施與維護(hù)022.1.1認(rèn)識(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)2.1數(shù)據(jù)庫(kù)設(shè)計(jì)概述數(shù)據(jù)庫(kù)設(shè)計(jì)分為6個(gè)步驟,包括需求分析(了解和分析用戶需求,包括數(shù)據(jù)和數(shù)據(jù)的特點(diǎn)、存儲(chǔ)方式等)、概念結(jié)構(gòu)設(shè)計(jì)(抽象出來(lái)的現(xiàn)實(shí)世界模型)、邏輯結(jié)構(gòu)設(shè)計(jì)(設(shè)計(jì)實(shí)現(xiàn))、物理結(jié)構(gòu)設(shè)計(jì)(存儲(chǔ)結(jié)構(gòu)和存取方法)、數(shù)據(jù)庫(kù)實(shí)施、運(yùn)行與維護(hù)。2.1.2數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟數(shù)據(jù)庫(kù)設(shè)計(jì)的6個(gè)步驟,如圖2-1所示。2.2.1概念結(jié)構(gòu)設(shè)計(jì)概述2.2認(rèn)識(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)概念結(jié)構(gòu)設(shè)計(jì)也稱概念模型設(shè)計(jì)。概念模型是將現(xiàn)實(shí)世界的事物反映到人的大腦中的一種事物抽象,這種抽象既不依賴計(jì)算機(jī)系統(tǒng),也不與具體的DBMS相關(guān),是現(xiàn)實(shí)世界到機(jī)器世界的中間層次。通過(guò)對(duì)概念模型的設(shè)計(jì)最后轉(zhuǎn)換為計(jì)算機(jī)所支持的DBMS數(shù)據(jù)模型。1.常用的表示概念模型的方法E-R模型也稱為ER實(shí)體聯(lián)系圖(E-R圖),是表示概念模型的工具,包括實(shí)體、聯(lián)系、屬性,其中用矩形表示現(xiàn)實(shí)世界的實(shí)體,用菱形表示實(shí)體間的聯(lián)系,用橢圓表示實(shí)體和聯(lián)系的屬性。ER模型的表示方法如表2-1所示。2.2認(rèn)識(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)2.概念結(jié)構(gòu)設(shè)計(jì)的基本概念(1)實(shí)體:客觀存在并能相互區(qū)分的事物,可以是具體的人、事、物,如一個(gè)學(xué)生、一門課程、一個(gè)系;也可以是抽象的概念或聯(lián)系,如一個(gè)年度學(xué)期、學(xué)生的一次選課等。(2)屬性:實(shí)體所具有的某一特性,用若干屬性來(lái)刻畫某一實(shí)體,如學(xué)生實(shí)體可以由學(xué)生編號(hào)、姓名、性別、出生日期、民族、家庭住址、聯(lián)系電話、入學(xué)時(shí)間、身份證編碼等屬性組成。(3)主碼:能夠?qū)?shí)體進(jìn)行唯一標(biāo)識(shí)的屬性集,可以是單屬性,也可以是多個(gè)屬性。例如,學(xué)生實(shí)體的主碼是學(xué)號(hào),班級(jí)實(shí)體的主碼是班級(jí)號(hào)。主碼不能為空,并且不能取重復(fù)值。(4)域:屬性的取值范圍。例如,身份證的域?yàn)?8位,學(xué)生性別的域?yàn)椋校?。?)聯(lián)系:實(shí)體與實(shí)體之間,以及實(shí)體內(nèi)部之間通過(guò)聯(lián)系來(lái)關(guān)聯(lián)。兩個(gè)實(shí)體間的聯(lián)系可以分為以下3類。2.2認(rèn)識(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)①一對(duì)一聯(lián)系(1∶1)。如果對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有且只有一個(gè)實(shí)體與之聯(lián)系;反之亦然,則實(shí)體集A與實(shí)體集B具有一對(duì)一聯(lián)系,記為1∶1。例如,“學(xué)生”實(shí)體與“身份證”實(shí)體之間屬于一對(duì)一聯(lián)系,一個(gè)學(xué)生只能有一個(gè)身份證號(hào),一個(gè)身份證只能屬于一個(gè)學(xué)生,如圖2-2所示。②一對(duì)多聯(lián)系(1∶n)。如果對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體與之聯(lián)系(n≥0);對(duì)于實(shí)體集B中的每一個(gè)實(shí)體,實(shí)體集A中至多有一個(gè)實(shí)體與之聯(lián)系,則實(shí)體集A與實(shí)體集B具有一對(duì)多聯(lián)系,記為1∶n。例如,“班級(jí)”實(shí)體與“學(xué)生”實(shí)體之間屬于一對(duì)多聯(lián)系,一個(gè)班級(jí)有多個(gè)學(xué)生,一個(gè)學(xué)生只能在一個(gè)班級(jí),如圖2-3所示。③多對(duì)多聯(lián)系(m∶n)。如果對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體與之聯(lián)系(n≥0);對(duì)于實(shí)體集B中的每一個(gè)實(shí)體,實(shí)體集A中有m個(gè)實(shí)體與之聯(lián)系(m≥0),則實(shí)體集A與實(shí)體集B具有多對(duì)多聯(lián)系,記為m∶n。例如,“學(xué)生”實(shí)體與“課程”實(shí)體之間屬于多對(duì)多聯(lián)系,一個(gè)學(xué)生可以選修n個(gè)課程,一個(gè)課程也可以被m個(gè)學(xué)生選修,如圖2-4所示。2.2.2數(shù)據(jù)抽象與局部視圖設(shè)計(jì)2.2認(rèn)識(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)抽象是指通過(guò)概念模型對(duì)現(xiàn)實(shí)世界進(jìn)行抽象,對(duì)人、事、物及概念進(jìn)行人為處理,從而抽取出認(rèn)為重要的共同特征,并對(duì)這些特征進(jìn)行概念描述。例如,本書以學(xué)生成績(jī)管理系統(tǒng)為例,通過(guò)需求分析,獲取數(shù)據(jù)和屬性各自的特點(diǎn);進(jìn)行數(shù)據(jù)抽象,建立抽象的概念數(shù)據(jù)模型,涉及的實(shí)體有系別、班級(jí)、學(xué)生、課程、年度學(xué)期及身份證;這些實(shí)體對(duì)應(yīng)的局部E-R圖分別如圖2-5至圖2-10所示,圖中帶下劃線的屬性表示該實(shí)體的主碼屬性。2.2.3全局概念模式設(shè)計(jì)2.2認(rèn)識(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)一般情況下先設(shè)計(jì)局部E-R圖,如2.2.2節(jié)中給出的學(xué)生成績(jī)管理系統(tǒng)的局部實(shí)體E-R圖,而實(shí)體之間可以通過(guò)聯(lián)系進(jìn)行連接,故可以將局部E-R圖綜合成全局E-R圖,即全局概念模式,如圖2-11所示。在全局E-R圖中,系別和班級(jí)之間是一對(duì)多的聯(lián)系,班級(jí)和學(xué)生之間是一對(duì)多的聯(lián)系,身份證和學(xué)生之間是一對(duì)一的聯(lián)系,學(xué)生和年度學(xué)期之間是多對(duì)多的聯(lián)系,學(xué)生和課程之間是多對(duì)多的聯(lián)系。在合并局部E-R圖時(shí)需要注意,聯(lián)系本身也可以有屬性,因此在合并的E-R圖中給出了。2.3.1邏輯結(jié)構(gòu)設(shè)計(jì)概述2.3邏輯結(jié)構(gòu)設(shè)計(jì)邏輯結(jié)構(gòu)設(shè)計(jì)旨在將概念結(jié)構(gòu)設(shè)計(jì)建立的E-R圖轉(zhuǎn)換成計(jì)算機(jī)系統(tǒng)支持的某一具體的DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))中的數(shù)據(jù)模型。數(shù)據(jù)模型分為層次模型、網(wǎng)狀模型、關(guān)系模型,其中關(guān)系模型是目前比較常用的一種數(shù)據(jù)模型。將E-R圖轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型,即將E-R圖中的實(shí)體及實(shí)體間的聯(lián)系用二維表表示。關(guān)系模型的表現(xiàn)形式如表2-2所示。2.3.1邏輯結(jié)構(gòu)設(shè)計(jì)概述2.3邏輯結(jié)構(gòu)設(shè)計(jì)綜上可知,通過(guò)概念模型轉(zhuǎn)換成關(guān)系模型,關(guān)系模型的表現(xiàn)形式是二維表,最后在關(guān)系數(shù)據(jù)庫(kù)中得以實(shí)現(xiàn),在概念模型、關(guān)系模型、關(guān)系數(shù)據(jù)庫(kù)中,相關(guān)的術(shù)語(yǔ)之間的對(duì)應(yīng)關(guān)系如表2-3所示。2.3.2E-R模型向關(guān)系模型的轉(zhuǎn)換2.3邏輯結(jié)構(gòu)設(shè)計(jì)將信息世界轉(zhuǎn)換成機(jī)器世界的邏輯模型,需要從信息世界抽象出來(lái)的ER模型向關(guān)系模型轉(zhuǎn)換。ER模型向關(guān)系模型轉(zhuǎn)換需要通過(guò)一定的規(guī)則,完成實(shí)體和實(shí)體間的聯(lián)系向關(guān)系模式的轉(zhuǎn)換,轉(zhuǎn)換規(guī)則分為以下兩種。1.獨(dú)立實(shí)體到關(guān)系模型的轉(zhuǎn)換2.實(shí)體和實(shí)體之間的聯(lián)系到關(guān)系模式的轉(zhuǎn)換實(shí)體和實(shí)體之間的聯(lián)系分為3種,對(duì)應(yīng)的轉(zhuǎn)換規(guī)則也分為3種。(1)一對(duì)一聯(lián)系(1∶1)到關(guān)系模式的轉(zhuǎn)換(2)一對(duì)多聯(lián)系(1∶n)到關(guān)系模式的轉(zhuǎn)換(3)多對(duì)多聯(lián)系(m∶n)到關(guān)系模式的轉(zhuǎn)換2.3邏輯結(jié)構(gòu)設(shè)計(jì)圖2-12所示為學(xué)生成績(jī)管理系統(tǒng)的局部E-R圖,它是一個(gè)三元關(guān)系圖。將其轉(zhuǎn)換為關(guān)系模型為選修(學(xué)期編號(hào),學(xué)生編號(hào),課程編號(hào),成績(jī),備注)。當(dāng)多個(gè)屬性構(gòu)成關(guān)系的主碼時(shí),可以增加一個(gè)新的屬性作為關(guān)系的主碼,減少主碼的數(shù)量。在關(guān)系選修中,加入屬性“成績(jī)編號(hào)”作為主碼,即選修(成績(jī)編號(hào),學(xué)期編號(hào),學(xué)生編號(hào),課程編號(hào),成績(jī),備注)。2.3邏輯結(jié)構(gòu)設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)的關(guān)系模型,以及完整性約束還可以用表格直觀地描述,如表2-4至表2-10所示。2.3邏輯結(jié)構(gòu)設(shè)計(jì)2.3邏輯結(jié)構(gòu)設(shè)計(jì)2.3邏輯結(jié)構(gòu)設(shè)計(jì)2.3.3數(shù)據(jù)模型優(yōu)化2.3邏輯結(jié)構(gòu)設(shè)計(jì)E-R模型轉(zhuǎn)換為關(guān)系模型后,還應(yīng)適當(dāng)?shù)匦薷?、調(diào)整數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu),合理地設(shè)計(jì)關(guān)系模型,提高數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的性能,對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化。不好的數(shù)據(jù)庫(kù)設(shè)計(jì)可能存在插入異常、刪除異常、修改異常及數(shù)據(jù)冗余等問(wèn)題。通過(guò)對(duì)關(guān)系模型進(jìn)行規(guī)范化設(shè)計(jì),即關(guān)系模型的規(guī)范化理論可以判斷設(shè)計(jì)的關(guān)系模型是否合理。下面依次對(duì)操作異常、函數(shù)依賴和關(guān)系范式進(jìn)行介紹。表2-11為班級(jí)信息表的表結(jié)構(gòu)和數(shù)據(jù),在該表中假設(shè)將班級(jí)信息和系部信息放在一張表中。2.3.3數(shù)據(jù)模型優(yōu)化2.3邏輯結(jié)構(gòu)設(shè)計(jì)1.操作異常及數(shù)據(jù)冗余(1)插入異常。向數(shù)據(jù)庫(kù)中插入新的數(shù)據(jù)時(shí)插入不成功會(huì)導(dǎo)致異常,如果某實(shí)體隨著另一個(gè)實(shí)體的存在而存在,缺少某個(gè)實(shí)體時(shí)無(wú)法表示這個(gè)實(shí)體,這個(gè)表就存在插入異常。例如,在表中插入一行數(shù)據(jù)(null,null,X009,學(xué)前教育系,null),即某個(gè)系剛剛成立,暫時(shí)還未分配班級(jí),就無(wú)法將系的信息存入數(shù)據(jù)庫(kù),因?yàn)橹麈I不能為空。(2)刪除異常。如果刪除表的某一行來(lái)反映某實(shí)體實(shí)例失效時(shí)導(dǎo)致另一個(gè)不同實(shí)體實(shí)例信息丟失,則表中存在刪除異常。例如,刪除第二行數(shù)據(jù)(該班級(jí)學(xué)生畢業(yè)了),系部的信息就有可能會(huì)丟失。(3)修改異常。如果更改表對(duì)應(yīng)的某個(gè)實(shí)體實(shí)例的單獨(dú)屬性時(shí),需要將多行更新,則這個(gè)表存在更新異常。例如,若要將“會(huì)計(jì)班級(jí)”的系部換到其他系,需要涉及“會(huì)計(jì)班級(jí)”中的系部信息數(shù)據(jù)都要更改,如有遺漏,則造成數(shù)據(jù)不一致。(4)數(shù)據(jù)冗余。如果相同的數(shù)據(jù)在多個(gè)地方存在,或者表中的某列可以由其他列計(jì)算得到,則存在數(shù)據(jù)冗余。例如,“計(jì)算機(jī)系”的班級(jí)比較多時(shí),系部名稱重復(fù)量增多,造成存儲(chǔ)空間浪費(fèi)。2.3邏輯結(jié)構(gòu)設(shè)計(jì)2.函數(shù)依賴(1)函數(shù)依賴的概念。(2)平凡函數(shù)依賴與非平凡函數(shù)依賴。(3)完全函數(shù)依賴和部分函數(shù)依賴。(4)傳遞函數(shù)依賴。2.3邏輯結(jié)構(gòu)設(shè)計(jì)4.關(guān)系范式(1)第一范式。關(guān)系模式R的屬性不可再分,即數(shù)據(jù)庫(kù)表中的所有字段都是單一屬性,不可再分。表2-12符合第一范式,而表2-13不符合第一范式,設(shè)計(jì)不合理。2.3邏輯結(jié)構(gòu)設(shè)計(jì)(2)第二范式。第二范式是指若R∈1NF,且R中除主碼外屬性完全依賴主碼,數(shù)據(jù)庫(kù)表中不存在除主碼以外的其他列對(duì)主碼的部分函數(shù)依賴,即存在聯(lián)合主碼中的某一個(gè)主碼決定非主碼列的情況。表2-14不符合第二范式。解決方法是將表2-14分解成兩個(gè)表,也就是兩個(gè)關(guān)系模式,如表2-15和表2-16所示。當(dāng)操作學(xué)生表時(shí),課程表的數(shù)據(jù)不會(huì)受到影響。2.3邏輯結(jié)構(gòu)設(shè)計(jì)(3)第三范式。若R∈2NF,關(guān)系模式R中不存在非主屬性對(duì)任意候選關(guān)鍵字的傳遞函數(shù)依賴,則稱為符合第三范式,即若關(guān)系R中有屬性A、B、C,存在A確定B,B確定C,那么A通過(guò)B確定C,稱為C傳遞依賴于A。例如,在表211的班級(jí)信息表中,以班級(jí)編號(hào)作為主碼,(班級(jí)編號(hào))→(系別編號(hào))→(系部名稱),即非關(guān)鍵字段“系部名稱”傳遞依賴于關(guān)鍵字段“班級(jí)編號(hào)”,屬于不符合第三范式的表。同時(shí)存在著插入異常、刪除異常、修改異常和數(shù)據(jù)冗余問(wèn)題。解決方法是將表進(jìn)行拆分,拆分后的表為班級(jí)表和系部表,如表2-17和表2-18所示。當(dāng)操作班級(jí)表時(shí),系別表的數(shù)據(jù)就不會(huì)受到影響。2.3邏輯結(jié)構(gòu)設(shè)計(jì)(4)BC范式。BC范式又叫Boyce.Codd范式,由Boyce和Codd提出,數(shù)據(jù)庫(kù)表中如果不存在任何字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴,即一個(gè)關(guān)系模式是復(fù)合關(guān)鍵字,則復(fù)合關(guān)鍵字之間也不能存在函數(shù)依賴關(guān)系,如表2-19所示。在表2-19中,可以以學(xué)生編號(hào),課程編號(hào)作為該關(guān)系的唯一標(biāo)識(shí),也可以以身份證號(hào),課程編號(hào)作為該關(guān)系的唯一標(biāo)識(shí),有兩種組合關(guān)鍵字的選擇,在這兩種組合關(guān)鍵字中存在以下關(guān)系:(學(xué)生編號(hào))P(身份證號(hào)),(身份證號(hào))P(學(xué)生編號(hào)),即學(xué)生編號(hào)可確定身份證號(hào),身份證號(hào)可確定學(xué)生編號(hào),因此不符合BC范式定義的需求,并且存在操作異常和數(shù)據(jù)冗余。2.3邏輯結(jié)構(gòu)設(shè)計(jì)解決方法是將表進(jìn)行拆分,拆分后的表為學(xué)生表和成績(jī)表,如表2-20或表2-21所示。當(dāng)操作成績(jī)表時(shí),學(xué)生表的數(shù)據(jù)不會(huì)受到影響。2.4.1物理結(jié)構(gòu)設(shè)計(jì)概述2.4物理結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)最后要在物理設(shè)備上進(jìn)行存儲(chǔ)。對(duì)上述設(shè)計(jì)的邏輯結(jié)構(gòu)模型選取最適合應(yīng)用要求的物理結(jié)構(gòu)的過(guò)程,稱為數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)。數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)主要包括數(shù)據(jù)庫(kù)在物理結(jié)構(gòu)上的存儲(chǔ)結(jié)構(gòu)與存取方法。2.4.2存取結(jié)構(gòu)與存取方法設(shè)計(jì)1.存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)2.存取方法設(shè)計(jì)(1)索引方法。(2)聚簇方法。①聚簇的用途、②聚簇的適用范圍、③聚簇的局限性、④聚簇索引的適用條件。2.4.1物理結(jié)構(gòu)設(shè)計(jì)概述2.5數(shù)據(jù)庫(kù)實(shí)施與維護(hù)1.數(shù)據(jù)庫(kù)的創(chuàng)建2.數(shù)據(jù)的載入3.數(shù)據(jù)庫(kù)測(cè)試(1)功能測(cè)試是指為了測(cè)試應(yīng)用程序的各種功能,運(yùn)行應(yīng)用程序,對(duì)數(shù)據(jù)庫(kù)執(zhí)行各種操作。(2)性能測(cè)試是指通過(guò)測(cè)量系統(tǒng)的性能指標(biāo),分析數(shù)據(jù)庫(kù)設(shè)計(jì)是否符合設(shè)計(jì)目標(biāo)。如果不符合,需要返回物理結(jié)構(gòu)設(shè)計(jì)階段,做適當(dāng)?shù)恼{(diào)整和修改;若仍不符合,需要返回邏輯結(jié)構(gòu)設(shè)計(jì)階段調(diào)整數(shù)據(jù)模型,這樣可能會(huì)導(dǎo)致數(shù)據(jù)重新入庫(kù),此時(shí)要注意以下兩點(diǎn)。4.運(yùn)行與維護(hù)數(shù)據(jù)庫(kù)測(cè)試結(jié)果達(dá)到設(shè)計(jì)目標(biāo)后,數(shù)據(jù)庫(kù)開(kāi)發(fā)工作就基本完成,數(shù)據(jù)庫(kù)正式投入運(yùn)行,同時(shí)意味著維護(hù)工作的開(kāi)始,數(shù)據(jù)庫(kù)設(shè)計(jì)工作并未結(jié)束。由于應(yīng)用環(huán)境的變化帶來(lái)的物理存儲(chǔ)的變化,需要長(zhǎng)期進(jìn)行數(shù)據(jù)庫(kù)的維護(hù),包括數(shù)據(jù)庫(kù)設(shè)計(jì)的評(píng)價(jià)、調(diào)整、修改等工作。在數(shù)據(jù)庫(kù)運(yùn)行中,維護(hù)工作主要由數(shù)據(jù)庫(kù)管理員(DBA)來(lái)完成,包括數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)和恢復(fù)、數(shù)據(jù)庫(kù)的安全性和完整性控制、數(shù)據(jù)庫(kù)性能的監(jiān)督、分析和改進(jìn)、數(shù)據(jù)庫(kù)的重組織和重構(gòu)造。這里就不再詳細(xì)介紹了。MySQL數(shù)據(jù)庫(kù)基礎(chǔ)

第3章

數(shù)據(jù)庫(kù)及數(shù)據(jù)表的基本操作3.1數(shù)據(jù)庫(kù)的基本操作3.2MySQL存儲(chǔ)引擎3.3數(shù)據(jù)類型3.4數(shù)據(jù)表的基本操作033.1.1創(chuàng)建數(shù)據(jù)庫(kù)3.1數(shù)據(jù)庫(kù)的基本操作創(chuàng)建數(shù)據(jù)庫(kù),是指在計(jì)算機(jī)磁盤上劃分出一塊區(qū)域用于數(shù)據(jù)的存儲(chǔ)和管理。在MySQL中,使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)的基本語(yǔ)法如下:創(chuàng)建一個(gè)名為“cjgl”的數(shù)據(jù)庫(kù),運(yùn)行效果如圖3-1所示。3.1數(shù)據(jù)庫(kù)的基本操作創(chuàng)建一個(gè)名為“cjgl”的數(shù)據(jù)庫(kù),并指定字符集為UTF8,運(yùn)行效果如圖3-2所示。如果創(chuàng)建數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)已經(jīng)存在了,且沒(méi)有進(jìn)行數(shù)據(jù)庫(kù)是否已存在的判斷,則會(huì)報(bào)錯(cuò),如圖3-3所示。如果創(chuàng)建的數(shù)據(jù)庫(kù)已經(jīng)存在,但創(chuàng)建數(shù)據(jù)庫(kù)時(shí)進(jìn)行了數(shù)據(jù)庫(kù)是否已存在的判斷,則不在創(chuàng)建數(shù)據(jù)庫(kù),并給出警告,如圖3-4所示。3.1.2管理數(shù)據(jù)庫(kù)3.1數(shù)據(jù)庫(kù)的基本操作1.數(shù)據(jù)庫(kù)查看顯示當(dāng)前服務(wù)器中,用戶權(quán)限范圍內(nèi)的所有數(shù)據(jù)庫(kù)名稱,運(yùn)行效果如圖3-5所示顯示出數(shù)據(jù)庫(kù)名以s開(kāi)頭的數(shù)據(jù)庫(kù)信息,運(yùn)行效果如圖3-6所示。3.1數(shù)據(jù)庫(kù)的基本操作2.數(shù)據(jù)庫(kù)選擇第1行代碼,選擇world數(shù)據(jù)庫(kù)作為當(dāng)前數(shù)據(jù)庫(kù);第2行代碼,對(duì)當(dāng)前數(shù)據(jù)庫(kù)進(jìn)行操作,查看數(shù)據(jù)表信息。運(yùn)行效果如圖3-7所示。第1行代碼,選擇cjgl數(shù)據(jù)庫(kù)作為當(dāng)前數(shù)據(jù)庫(kù)。運(yùn)行效果如圖3-8所示。3.1數(shù)據(jù)庫(kù)的基本操作3.數(shù)據(jù)庫(kù)修改修改數(shù)據(jù)庫(kù)cjgl的默認(rèn)字符集為gbk,修改字符集的默認(rèn)校對(duì)規(guī)則為gbk_chinese_ci。運(yùn)行效果如圖3-9所示。刪除數(shù)據(jù)庫(kù)cjgl,由于刪除之前,該數(shù)據(jù)庫(kù)是存在的,所以能正常執(zhí)行刪除。運(yùn)行效果如圖3-10所示。在cjgl數(shù)據(jù)庫(kù)被刪除后,再使用DROPDATABASEcjgl語(yǔ)句對(duì)其進(jìn)行刪除,則產(chǎn)生異常,如圖3-11所示。如果在刪除之前進(jìn)行了數(shù)據(jù)庫(kù)是否存在的判斷,則不會(huì)產(chǎn)生錯(cuò)誤,如圖3-12所示。3.2.1查看MySQL存儲(chǔ)引擎3.2MySQL存儲(chǔ)引擎1.查看全部存儲(chǔ)引擎運(yùn)行效果如圖3-13所示。3.2MySQL存儲(chǔ)引擎SHOWENGINES語(yǔ)句以分號(hào)(;)結(jié)束,也可以以“\\g”或“\\G”結(jié)束。使用“\\g”與“;”作用是相同的,使用“\\G”可以以更美觀的方式顯示結(jié)果。使用“\\G”結(jié)束,基本格式如下:SHOWENGINES\\G運(yùn)行效果如圖3-14所示。3.2.1查看MySQL存儲(chǔ)引擎3.2MySQL存儲(chǔ)引擎1.查看默認(rèn)存儲(chǔ)引擎運(yùn)行效果如圖3-15所示。3.2.2InnoDB存儲(chǔ)引擎3.2MySQL存儲(chǔ)引擎MySQL從3.23.34a開(kāi)始包含InnoDB存儲(chǔ)引擎,從5.5開(kāi)始將InnoDB作為默認(rèn)的存儲(chǔ)引擎。3.2.3MyISAM存儲(chǔ)引擎MyISAM存儲(chǔ)引擎曾是MySQL中的默認(rèn)存儲(chǔ)引擎。3.2.4MEMORY存儲(chǔ)引擎擎MEMORY存儲(chǔ)引擎最大的特點(diǎn)是響應(yīng)速度快。3.2.5ARCHIVE存儲(chǔ)引擎ARCHIVE存儲(chǔ)引擎不支持事務(wù),主要用于對(duì)數(shù)據(jù)進(jìn)行歸檔。3.2.6存儲(chǔ)引擎的選擇3.2MySQL存儲(chǔ)引擎一個(gè)數(shù)據(jù)庫(kù)中的表,可以采用不同的存儲(chǔ)引擎。實(shí)際應(yīng)用中,應(yīng)該根據(jù)需求靈活設(shè)置每個(gè)表的存儲(chǔ)引擎。為每個(gè)表設(shè)置合適的存儲(chǔ)引擎,以提高整個(gè)數(shù)據(jù)庫(kù)的性能。每種存儲(chǔ)引擎都有其各自的優(yōu)缺點(diǎn),充分對(duì)比各種存儲(chǔ)引擎的特點(diǎn),才能在實(shí)際應(yīng)用中做出恰當(dāng)?shù)倪x擇。從事務(wù)安全、存儲(chǔ)限制、空間使用、內(nèi)存使用、插入數(shù)據(jù)速度和外鍵支持等幾個(gè)方面,對(duì)常用的InnoDB、MyISAM、MEMORY3種存儲(chǔ)引擎進(jìn)行詳細(xì)對(duì)比,如表3-1所示。3.2.7存儲(chǔ)引擎的設(shè)置3.2MySQL存儲(chǔ)引擎運(yùn)行代碼,并打開(kāi)數(shù)據(jù)庫(kù)文件目錄查看表文件,如圖3-17所示。3.2.7存儲(chǔ)引擎的設(shè)置3.2MySQL存儲(chǔ)引擎運(yùn)行代碼,并打開(kāi)數(shù)據(jù)庫(kù)文件目錄查看表文件,如圖3-18所示。從圖3-18可以看出,teacher表只對(duì)應(yīng)擴(kuò)展名為“.frm”的一個(gè)文件3.3.1數(shù)字類型3.3數(shù)據(jù)類型MySQL中的數(shù)字類型分為整數(shù)類型和小數(shù)類型。整數(shù)類型又包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT等。不同的數(shù)據(jù)類型提供不同的取值范圍,可以存儲(chǔ)的值范圍越大,所需的存儲(chǔ)空間也會(huì)越大。根據(jù)數(shù)據(jù)類型占用的字節(jié)數(shù),可以求出每一種數(shù)據(jù)類型的取值范圍。例如,TINYINT占用1個(gè)字節(jié)(8bit)來(lái)存儲(chǔ),那么TINYINT無(wú)符號(hào)數(shù)的最大值為28-1,即255;TINYINT有符號(hào)數(shù)的最大值為27-1,即127。其他整數(shù)類型的取值范圍計(jì)算方法相同。不同整數(shù)類型占用空間大小及取值范圍,如表3-2所示。3.3數(shù)據(jù)類型小數(shù)類型可以分為浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型。浮點(diǎn)數(shù)類型有兩種,分別是單精度浮點(diǎn)數(shù)(FLOAT)和雙精度浮點(diǎn)數(shù)(DOUBLE)。定點(diǎn)數(shù)類型只有一種,就是DECIMAL。不同小數(shù)類型占用空間大小及取值范圍,如表3-3所示。3.3.2字符串類型3.3數(shù)據(jù)類型1.普通文本字符串類型關(guān)于CHAR和VARCHAR類型的介紹,如表3-4所示。CHAR和VARCHAR類型的區(qū)別如表3-5所示。3.3數(shù)據(jù)類型2.可變類型TEXT和BLOB類型,根據(jù)其存儲(chǔ)空間和數(shù)據(jù)長(zhǎng)度的不同又各分為4種,如表3-6所示。2.可變類型ENUM和SET類型的介紹如表3-7所示。3.3.3日期類型3.3數(shù)據(jù)類型日期類型的介紹如表3-8所示。3.4.1創(chuàng)建數(shù)據(jù)表3.4數(shù)據(jù)表的基本操作創(chuàng)建數(shù)據(jù)表是指在已有的數(shù)據(jù)庫(kù)中建立一張新的數(shù)據(jù)表。其中,第1行代碼,選擇數(shù)據(jù)庫(kù),表示接下來(lái)的操作是在數(shù)據(jù)庫(kù)cjgl中進(jìn)行的;第2行代碼,創(chuàng)建student數(shù)據(jù)表,在創(chuàng)建前先判斷是否已存在同名的數(shù)據(jù)表,避免創(chuàng)建同名數(shù)據(jù)表時(shí)出現(xiàn)錯(cuò)誤;第3~第8行代碼,分別創(chuàng)建數(shù)據(jù)表中的各個(gè)字段。在創(chuàng)建字段時(shí),需要定義字段的類型,類型名后面的括號(hào)內(nèi)給出的是該字段所占的長(zhǎng)度。根據(jù)實(shí)際情況,合理定義各個(gè)字段的長(zhǎng)度,有利于更好地利用計(jì)算機(jī)空間。PRIMARYKEY表示該字段為數(shù)據(jù)表的主鍵,其值不能為空且是唯一的,NOTNULL表明該字段不能為空。運(yùn)行上述代碼,結(jié)果如圖3-19所示。3.4數(shù)據(jù)表的基本操作1.查看數(shù)據(jù)表結(jié)構(gòu)數(shù)據(jù)表定義后,可以通過(guò)DESCRIBE和SHOWCREATETABLE等語(yǔ)句對(duì)其結(jié)構(gòu)進(jìn)行查看,包括字段名、字段類型和完整性約束條件等。運(yùn)行代碼,結(jié)果如圖3-20所示。3.4.2管理數(shù)據(jù)表3.4數(shù)據(jù)表的基本操作除了使用DESCRIBE語(yǔ)句查看表結(jié)構(gòu)外,還可以使用SHOWCREATETABLE語(yǔ)句查看表的詳細(xì)結(jié)構(gòu),包括表的各字段名稱、字段類型、完整性約束和默認(rèn)的存儲(chǔ)引擎、字符編碼等詳細(xì)信息。運(yùn)行代碼,結(jié)果如圖3-21所示。3.4數(shù)據(jù)表的基本操作2.修改數(shù)據(jù)表在MySQL中對(duì)已經(jīng)定義的表可以通過(guò)ALTERTABLE語(yǔ)句對(duì)其修改。修改表包括對(duì)表的名稱、字段的名稱、字段類型等的修改,也可以對(duì)字段進(jìn)行增加和刪除、修改字段的順序,還可以修改默認(rèn)的存儲(chǔ)引擎和外鍵約束等。對(duì)表的修改,不會(huì)影響表中已有的數(shù)據(jù)。3.刪除數(shù)據(jù)表在MySQL中可以使用DROPTABLE語(yǔ)句同時(shí)刪除一個(gè)或多個(gè)數(shù)據(jù)表。數(shù)據(jù)表被刪除后,表的結(jié)構(gòu)和表中的數(shù)據(jù)都會(huì)被刪除。在刪除表時(shí)需要特別注意。MySQL數(shù)據(jù)庫(kù)基礎(chǔ)

第4章

數(shù)據(jù)更新4.1插入數(shù)據(jù)4.2數(shù)據(jù)修改4.3數(shù)據(jù)刪除044.1插入數(shù)據(jù)1.向表中所有字段插入數(shù)據(jù)向表中所有字段插入數(shù)據(jù)的兩種方式:①指定表中所有字段,并給出對(duì)應(yīng)字段的值;②不指定字段給出所有字段的值。(1)指定表中所有字段向課程表tb_course中插入一行數(shù)據(jù)(1,'高等數(shù)學(xué)','必修',5,130,'測(cè)試數(shù)據(jù)')。首先查看tb_course的表結(jié)構(gòu),代碼如下:DESCcjgl.tb_course;運(yùn)行結(jié)果如圖4-1所示。4.1.1插入數(shù)據(jù)之INSERT…VALUES語(yǔ)句4.1插入數(shù)據(jù)(2)不指定字段向課程表(tb_course)中插入一行數(shù)據(jù)(2,'MySQL數(shù)據(jù)庫(kù)基礎(chǔ)','必修',5,130,'測(cè)試數(shù)據(jù)'),采用INSERT…VALUES語(yǔ)句,不指定字段給出所有字段的值,對(duì)應(yīng)的SQL語(yǔ)句代碼如下:INSERTINTOtb_courseVALUES(2,'MySQL數(shù)據(jù)庫(kù)基礎(chǔ)','必修',5,130,'測(cè)試數(shù)據(jù)');運(yùn)行效果如圖4-4所示。4.1插入數(shù)據(jù)2.向表中部分字段插入數(shù)據(jù)向表中部分字段插入數(shù)據(jù),即通過(guò)INSERT…VALUES語(yǔ)句,插入給定的部分字段的數(shù)據(jù)。【例4-2】向課程表(tb_course)中插入一行數(shù)據(jù)('大學(xué)英語(yǔ)','必修')。對(duì)應(yīng)的SQL語(yǔ)句代碼如下:INSERTINTOtb_course(name,nature)VALUES('大學(xué)英語(yǔ)','必修');運(yùn)行效果如圖4-6所示。4.1.1插入數(shù)據(jù)之INSERT…VALUES語(yǔ)句4.1插入數(shù)據(jù)通過(guò)查詢語(yǔ)句,查看數(shù)據(jù)的插入結(jié)果,使用以下的SQL語(yǔ)句:SELECT*FROMtb_course;運(yùn)行結(jié)果如圖4-7所示,id為3的記錄為新插入的數(shù)據(jù)。4.1插入數(shù)據(jù)3.向表中插入多條數(shù)據(jù)通過(guò)INSERT…VALUES語(yǔ)句向表中還可以一次插入多條數(shù)據(jù)。【例43】向課程表(tb_course)中插入多條數(shù)據(jù),對(duì)應(yīng)的SQL語(yǔ)句代碼如下:INSERTINTOtb_course(id,name,nature,credits,hours,remarks)VALUES(4,'建筑學(xué)基礎(chǔ)','必修',3,100,'測(cè)試數(shù)據(jù)'),(5,'文言文賞析','必修',6,300,'測(cè)試數(shù)據(jù)'),(6,'Java編程基礎(chǔ)','必修',3,120,'測(cè)試數(shù)據(jù)');運(yùn)行效果如圖4-8所示。4.1插入數(shù)據(jù)通過(guò)查詢語(yǔ)句,查看數(shù)據(jù)的插入結(jié)果,使用以下的SQL語(yǔ)句:SELECT*FROMtb_course;運(yùn)行效果如圖4-9所示,id為4、5、6的記錄為新插入的數(shù)據(jù)。4.1插入數(shù)據(jù)INSERT…SET語(yǔ)句也可以向表中插入數(shù)據(jù),該語(yǔ)句通過(guò)直接給表中的某些字段賦值來(lái)完成指定數(shù)據(jù)的插入,其他未賦值的字段的值為默認(rèn)值。4.1.2插入數(shù)據(jù)之INSERT…SET語(yǔ)句在MySQL中,可通過(guò)INSERT…SELECT語(yǔ)句,向指定表中插入其他表中的數(shù)據(jù),即將一張表的查詢結(jié)果插入指定的數(shù)據(jù)表中,INSERT…SELECT語(yǔ)句的基本語(yǔ)法如下:INSERT[INTO]<數(shù)據(jù)表名1>[(字段名,…)]SELECT字段名1,字段名2,…FROM<數(shù)據(jù)表名2>[ONDUPLICATEKEYUPDATE字段名=表達(dá)式,…]4.1.3插入數(shù)據(jù)之INSERT…SELECT語(yǔ)4.2數(shù)據(jù)修改在插入數(shù)據(jù)時(shí)可能會(huì)遇到將錯(cuò)誤的數(shù)據(jù)插入數(shù)據(jù)庫(kù)的情況,也有可能在后期的工作中要對(duì)數(shù)據(jù)進(jìn)行更新,在此就需要涉及對(duì)表中的數(shù)據(jù)進(jìn)行修改。在MySQL語(yǔ)句中,通過(guò)UPDATE語(yǔ)句來(lái)執(zhí)行修改的操作,該語(yǔ)句即可以修改字段所有的值,也可以修改指定的值。(1)修改所有的值。(2)修改指定的值。在修改數(shù)據(jù)時(shí),一般需要對(duì)修改的字段的數(shù)據(jù)加上限定條件,只修改滿足條件的記錄的該字段,此時(shí)要用到WHERE字句。4.3數(shù)據(jù)刪除(1)刪除指定記錄的數(shù)據(jù)(2)刪除所有數(shù)據(jù)4.3.1刪除數(shù)據(jù)之DELETE語(yǔ)句刪除數(shù)據(jù)庫(kù)中所有的行,還可以使用TRUNCATETABLE語(yǔ)句。4.3.2刪除數(shù)據(jù)之TRUNCATETABLE語(yǔ)句MySQL數(shù)據(jù)庫(kù)基礎(chǔ)

第5章

數(shù)據(jù)查詢5.1MySQL數(shù)據(jù)基本查詢5.2MySQL查詢條件選擇5.3MySQL多表查詢5.4行瀏覽查詢055.1MySQL數(shù)據(jù)基本查詢?cè)跀?shù)據(jù)庫(kù)的查詢中,SELECT*FROMTABLE是查詢的核心要點(diǎn)語(yǔ)句??梢愿鶕?jù)需要,有選擇地使用條件。在MySQL中,使用SELECT語(yǔ)句查詢數(shù)據(jù)庫(kù)的基本語(yǔ)法如下:SELECT[*|<字段列名>][FROM<表1>,<表2>…][WHERE<表達(dá)式>][GROUPBY<groupbydefinition>][HAVING<expression>[{<operator><expression>}…][ORDERBY<orderbydefinition>][LIMIT[<offset>,]<rowcount>];5.1.1SELECT語(yǔ)法格式5.1MySQL數(shù)據(jù)基本查詢?cè)跀?shù)據(jù)庫(kù)的查詢中,我們可以根據(jù)需要,有選擇地查詢輸出相應(yīng)的字段。當(dāng)選擇字段查詢時(shí),各字段之間要用逗號(hào)隔開(kāi);當(dāng)需要查詢所有的字段時(shí),可以使用“*”表示。從表tb_student中查詢字段名分別為id,name,national和telephone的所有數(shù)據(jù),運(yùn)行效果如圖5-1所示。5.1.2查詢選擇字段5.1MySQL數(shù)據(jù)基本查詢查詢表tb_student中所有字段的所有數(shù)據(jù),運(yùn)行效果如圖5-2所示。5.1MySQL數(shù)據(jù)基本查詢?nèi)粝M樵兘Y(jié)果展示時(shí)字段名使用自己想要的名字,可以在字段名后面使用as子句,運(yùn)行效果如圖5-3所示。5.1MySQL數(shù)據(jù)基本查詢當(dāng)電話號(hào)碼顯示沒(méi)有的時(shí)候,替換為“無(wú)”。當(dāng)電話號(hào)碼大于等于10000000000并且小,替換為“移動(dòng)”。當(dāng)電話號(hào)碼大于等且小,替換為“聯(lián)通”。當(dāng)電話號(hào)碼大于等且小于19999999999時(shí),替換為“電信”。當(dāng)電話號(hào)碼不在相應(yīng)的范圍內(nèi)時(shí),替換為“未知”。并把telephone字段顯示為別名“運(yùn)營(yíng)商”。效果如圖5-4所示。5.1MySQL數(shù)據(jù)基本查詢當(dāng)希望對(duì)查詢數(shù)據(jù)進(jìn)行再次加工計(jì)算處理時(shí),可以在相應(yīng)字段進(jìn)行運(yùn)算,如將考試成績(jī)從百分制換算成120分制,再進(jìn)行展示。運(yùn)行效果如圖5-5所示。如果僅對(duì)表中部分字段進(jìn)行查詢,則輸出的結(jié)果可能會(huì)出現(xiàn)重復(fù)的行,如例51中,如果選擇的字段沒(méi)有id,則會(huì)查詢得到兩條重復(fù)的數(shù)據(jù)??梢允褂肈ISTINCT或DISTINCTROW消除圖5-5結(jié)果中的重復(fù)行。運(yùn)行效果如圖5-6所示。5.1MySQL數(shù)據(jù)基本查詢?cè)跀?shù)據(jù)庫(kù)的查詢中,F(xiàn)ROM子句表示從哪個(gè)表中查詢數(shù)據(jù)。既可以從當(dāng)前數(shù)據(jù)庫(kù)中的表查詢相關(guān)數(shù)據(jù),也可以在當(dāng)前數(shù)據(jù)庫(kù)查詢其他庫(kù)中表的數(shù)據(jù),還可以根據(jù)表的個(gè)數(shù)進(jìn)行多表查詢。使用當(dāng)前數(shù)據(jù)庫(kù),并進(jìn)行庫(kù)中表內(nèi)的數(shù)據(jù)查詢。在這種情況下,首先使用USE語(yǔ)句讓使用的庫(kù)作為當(dāng)前數(shù)據(jù)庫(kù),其次使用FROM子句指定相應(yīng)表的查詢。運(yùn)行效果如圖5-7所示。5.13查詢數(shù)據(jù)來(lái)源5.1MySQL數(shù)據(jù)基本查詢使用當(dāng)前庫(kù),查詢其他庫(kù)中的表時(shí),指定表名前面要加上查詢表所在的數(shù)據(jù)庫(kù)名字。在示例中,首先使用USE表示使用WORLD數(shù)據(jù)庫(kù);其次查詢test數(shù)據(jù)庫(kù)中的tb_term表。這時(shí)在表tb_term的前面加上其所在的庫(kù)名test,我們可以正常查詢并得到相應(yīng)的數(shù)據(jù);如果去掉庫(kù)名,則會(huì)提示庫(kù)中不存在相應(yīng)的表。運(yùn)行效果如圖5-8所示。5.1MySQL數(shù)據(jù)基本查詢當(dāng)多個(gè)表中存在字段重名的時(shí)候,進(jìn)行查詢就會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤,提示Column'字段名'infieldlistisambiguous,意思是:重復(fù)的這個(gè)字段名存在于多個(gè)表中,需要使用哪個(gè)表的此字段是模糊不清的。此時(shí)我們?nèi)b_termremarks這個(gè)字段。運(yùn)行效果如圖5-9所示。5.1MySQL數(shù)據(jù)基本查詢使用數(shù)據(jù)庫(kù)查詢時(shí),有時(shí),并不需要返回?cái)?shù)據(jù)本身,而僅僅需要對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)或計(jì)算總結(jié),那么就需要用聚合函數(shù)進(jìn)行查詢。聚合函數(shù)的作用是對(duì)一組數(shù)值進(jìn)行統(tǒng)計(jì)或計(jì)算,并返回確定的單一數(shù)值。所有聚合函數(shù)都具有確定性,任何時(shí)候用一組確定的數(shù)值調(diào)用它們時(shí),都返回相同的值。表5-1列出了一些常用的聚合函數(shù)。5.1.4使用聚合函數(shù)5.1MySQL數(shù)據(jù)基本查詢使用數(shù)據(jù)庫(kù)查詢時(shí),有時(shí),并不需要返回?cái)?shù)據(jù)本身,而僅僅需要對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)或計(jì)算總結(jié),那么就需要用聚合函數(shù)進(jìn)行查詢。聚合函數(shù)的作用是對(duì)一組數(shù)值進(jìn)行統(tǒng)計(jì)或計(jì)算,并返回確定的單一數(shù)值。所有聚合函數(shù)都具有確定性,任何時(shí)候用一組確定的數(shù)值調(diào)用它們時(shí),都返回相同的值。表5-1列出了一些常用的聚合函數(shù)。5.1.4使用聚合函數(shù)5.2MySQL查詢條件選擇常用的操作符包括:比較操作符、邏輯操作符、連接操作符、求反操作符、算術(shù)操作符。1.比較操作符比較操作符用于比較語(yǔ)句中的值。當(dāng)兩個(gè)表達(dá)式的值均不為空時(shí),比較操作符有運(yùn)算結(jié)果,為TRUE(真)或FALSE(假)。2.邏輯操作符邏輯操作符用于對(duì)SQL關(guān)鍵字而不是符號(hào)進(jìn)行比較。3.連接操作符如果我們?cè)诓樵儠r(shí),需要利用多個(gè)條件來(lái)縮小數(shù)據(jù)范圍,則可使用連接操作符。連接操作符可以讓我們?cè)谝粋€(gè)SQL語(yǔ)句中,使用多個(gè)操作符進(jìn)行組合比較,從而得到想要的結(jié)果。4.求反操作符在前文所提到的所有邏輯操作符中,我們都可以顛倒它們的條件要求。5.算術(shù)操作符算術(shù)操作符用于在SQL語(yǔ)句中執(zhí)行算術(shù)功能。5.2.1WHERE子句5.2MySQL查詢條件選擇數(shù)據(jù)分組是按照邏輯次序把具有重復(fù)數(shù)值的字段進(jìn)行合并。例如,一個(gè)數(shù)據(jù)庫(kù)包含關(guān)于雇員的信息,有些雇員住在同一個(gè)城市。如果我們需要知道每個(gè)指定城市的雇員信息,就可以根據(jù)不同的城市對(duì)雇員進(jìn)行分組。數(shù)據(jù)分組是通過(guò)SELECT語(yǔ)句使用GROUPBY子句來(lái)實(shí)現(xiàn)的。5.2.2分組GROUPBY我們需要讓輸出結(jié)果以某種方式進(jìn)行排序時(shí),可以使用ORDERBY子句,它能夠以用戶指定的列表格式對(duì)查詢結(jié)果進(jìn)行排序。ORDERBY子句的默認(rèn)次序是升序,也就是說(shuō),如果對(duì)輸出的結(jié)果為字符的結(jié)果進(jìn)行排序,就是A—Z的次序;反之,降序就是Z—A的次序顯示字符結(jié)果。對(duì)于數(shù)值而言,升序是1—9,降序是9—1。5.2.3排序ORDERBY5.2MySQL查詢條件選擇LIMIT子句的作用是限制查詢結(jié)果的條數(shù)。其語(yǔ)法格式:LIMIT[位置偏移量,]行數(shù);其中,中括號(hào)里面的參數(shù)是可選參數(shù)。位置偏移量是指MySQL查詢分析器要從哪一行開(kāi)始顯示,索引值從0開(kāi)始,即第一條記錄的位置偏移量是0,第二條記錄的位置偏移量是1,依此類推……第二個(gè)參數(shù)為“行數(shù)”,即指示返回的記錄條數(shù)。5.2.4行限制LIMIT5.3MySQL多表查詢子查詢也被稱為嵌套查詢,是位于另一個(gè)查詢的WHERE子句里的查詢,它返回的數(shù)據(jù)通常在主查詢里作為一個(gè)條件,從而進(jìn)一步限制數(shù)據(jù)庫(kù)返回的數(shù)據(jù)。子查詢可用于SELECT,INSERT,UPDATE和DELETE語(yǔ)句。5.3.1子查詢要從不同的表中查詢數(shù)據(jù),必須在FROM子句中指定多個(gè)表,這時(shí)要用到連接,將不同的數(shù)據(jù)組合到一個(gè)表中叫作表的連接。將各個(gè)表用逗號(hào)隔開(kāi),就指定了一個(gè)全連接。FROM子句產(chǎn)生的中間結(jié)果是一個(gè)新表。5.3.2連接查詢使用UNION語(yǔ)句,可以把來(lái)自多個(gè)SELECT語(yǔ)句的結(jié)果組合到一個(gè)結(jié)果集中。UNION操作符組合多個(gè)語(yǔ)句結(jié)果時(shí),不包含重復(fù)的記錄。如果某行的輸出存在一個(gè)查詢結(jié)果中,那么其他查詢結(jié)果同一行的記錄就不會(huì)再輸出顯示。5.3.3聯(lián)合查詢5.4行瀏覽查詢使用HANDLER語(yǔ)句時(shí),首先使用HANDLER表名OPEN語(yǔ)句打開(kāi)一個(gè)表,再使用HANDLER表名READ語(yǔ)句瀏覽已打開(kāi)表的數(shù)據(jù)行,最后使用HANDLER表名CLOSE關(guān)閉表。5.4.1HANDLER神秘的非SQL標(biāo)準(zhǔn)語(yǔ)法HANDLER命令,使用如此方便,而且可以降低優(yōu)化器對(duì)SQL語(yǔ)句的解析與優(yōu)化開(kāi)銷,從而提升查詢性能。那么,為什么這么好的東西未被廣泛推廣呢?我們把它與SELECT進(jìn)行對(duì)比,就會(huì)發(fā)現(xiàn)以下不同點(diǎn):(1)HANDLER每次返回一行,SELECT一次返回所有行。(2)HANDLER每次返回索引中的所有字段,SELECT可以返回需要的具體字段。(3)HANDLER涉及分析較少,比SELECT較快。當(dāng)指定具體表中特定字段數(shù)值查詢時(shí),HANDLER語(yǔ)句涉及的分析句柄和索引比SELECT相對(duì)少得多,因此速度較快。(4)HANDLER語(yǔ)句完成后,必須使用CLOSE語(yǔ)句關(guān)閉表。打5.4.2說(shuō)明MySQL數(shù)據(jù)庫(kù)基礎(chǔ)

第6章

數(shù)據(jù)視圖6.1視圖的基本概念6.2視圖的操作6.3對(duì)性能的影響066.1視圖的基本概念當(dāng)創(chuàng)建一個(gè)視圖時(shí),實(shí)際上是在數(shù)據(jù)庫(kù)里執(zhí)行了一個(gè)SELECT語(yǔ)句,它定義了這個(gè)視圖。這個(gè)SELECT語(yǔ)句可能只包含表里的字段名稱,也可能包含各種函數(shù)和運(yùn)算來(lái)操作或匯總給用戶顯示的數(shù)據(jù)。6.1.1什么是視圖(1)簡(jiǎn)化數(shù)據(jù)訪問(wèn)。(2)一種安全形式。(3)維護(hù)摘要數(shù)據(jù)。6.1.2視圖的作用6.2視圖的操作視圖是通過(guò)CREATEVIEW語(yǔ)句創(chuàng)建的。為了創(chuàng)建視圖我們可以從一個(gè)表創(chuàng)建視圖;可以從多個(gè)表創(chuàng)建視圖;可以從視圖創(chuàng)建視圖;也可以通過(guò)視圖創(chuàng)建表。通過(guò)單表創(chuàng)建視圖。創(chuàng)建的視圖為表的全部字段和數(shù)據(jù)。運(yùn)行結(jié)果如圖6-1所示。6.2.1創(chuàng)建視圖6.2視圖的操作視圖的查詢基本和表的查詢(SELECT)相同?!纠?-7】SELECTvv.Stu_id,vvname,Count(*)FROMvv1_tb_scorestudentASvvGROUPBYvv.name;通過(guò)視圖查詢數(shù)據(jù)。通過(guò)分組查詢視圖vv1_tb_scorestudent統(tǒng)計(jì)數(shù)據(jù)。運(yùn)行結(jié)果如圖6-7所示。6.2.2查詢視圖6.2視圖的操作在一定條件下,視圖的底層數(shù)據(jù)可以進(jìn)行更新,主要表現(xiàn)在以下幾個(gè)方面。(1)視圖不包含結(jié)合。(2)視圖不包含GROUPBY子句。(3)視圖不包含UNION語(yǔ)句。(4)視圖不包含對(duì)偽字碼ROWNUM的任何引用。(5)視圖不包含任何組函數(shù)。(6)不能使用DISTINCT子句。(7)WHERE子句包含的嵌套表的表達(dá)式不能與FROM引用同一個(gè)表。(8)視圖可以執(zhí)行INSERT、UPDATE和DELETE等語(yǔ)句。6.2.3更新視圖6.2視圖的操作DROPVIEW命令用于從數(shù)據(jù)庫(kù)里刪除視圖。它有兩個(gè)選項(xiàng):RESTRICT和CASCADE。如果使用了RESTRICT選項(xiàng)進(jìn)行刪除操作,而其他視圖在約束里有所引用,刪除操作就會(huì)出錯(cuò);如果使用CASCADE選項(xiàng),而且其他視圖或被約束引用了,DROPVIEW也會(huì)成功,而且底層的視圖或約束也會(huì)被刪除。刪除視圖v1_tb_course。運(yùn)行結(jié)果如圖6-9所示。6.2.4刪除視圖6.3對(duì)性能的影響(1)為用戶集中數(shù)據(jù),簡(jiǎn)化用戶的數(shù)據(jù)查詢和處理。有時(shí)所需的數(shù)據(jù)分布在多張表中,定義視圖可以將他們集中起來(lái),從而方便查詢和處理。(2)屏蔽數(shù)據(jù)庫(kù)的復(fù)雜性。用戶不必去了解復(fù)雜的數(shù)據(jù)庫(kù)表的結(jié)構(gòu),并且數(shù)據(jù)庫(kù)的表更改也不會(huì)影響用戶對(duì)數(shù)據(jù)庫(kù)的使用。(3)簡(jiǎn)化用戶權(quán)限的管理。只需授權(quán)用戶使用視圖的權(quán)限,而不必指定只能使用表的特定列或特定權(quán)限。(4)便于數(shù)據(jù)共享。各用戶不必都定義和存儲(chǔ)自己所需的數(shù)據(jù),這樣數(shù)據(jù)只存儲(chǔ)一次,共享同一數(shù)據(jù)庫(kù)資源即可。(5)可以重新組織數(shù)據(jù)以便輸出到其他應(yīng)用程序中。6.3.1視圖的優(yōu)點(diǎn)6.3對(duì)性能的影響視圖中隱藏的復(fù)雜邏輯,會(huì)導(dǎo)致系統(tǒng)需要查詢底層來(lái)分析并組合數(shù)據(jù);在進(jìn)行性能調(diào)整的時(shí)候,視圖需要和其他SQL語(yǔ)句一樣被調(diào)整。如果構(gòu)成視圖的查詢沒(méi)有經(jīng)過(guò)事先設(shè)計(jì),那么視圖本身就會(huì)對(duì)性能產(chǎn)生影響。有些用戶將查詢分解為各種視圖構(gòu)成的多個(gè)單元,以便簡(jiǎn)化復(fù)雜的查詢。這種方法在簡(jiǎn)化復(fù)雜邏輯方面看起來(lái)是個(gè)好辦法,但卻會(huì)降低性能。因?yàn)?,搜索引擎需要分析每一次的視圖來(lái)確定為了完成搜索需要進(jìn)行哪些工作。嵌套的層數(shù)越多,搜索引擎為了獲得執(zhí)行計(jì)劃而需要進(jìn)行的分析工作就越多。實(shí)際上,大多數(shù)的搜索引擎無(wú)法確保獲得一個(gè)完美的執(zhí)行計(jì)劃,而只能保證一個(gè)耗時(shí)最短的計(jì)劃。因此,最好的辦法就是盡量減少代碼的嵌套層數(shù),測(cè)試并調(diào)整創(chuàng)建視圖所用到的語(yǔ)句。6.3.2視圖的不足MySQL數(shù)據(jù)庫(kù)基礎(chǔ)

第7章

索引7.1索引簡(jiǎn)介7.2創(chuàng)建索引7.3刪除索引077.1索引簡(jiǎn)介在MySQL中,索引是十分重要的數(shù)據(jù)庫(kù)對(duì)象。通過(guò)索引的創(chuàng)建,可以大大提MySQL的查詢速度,同時(shí)可降低服務(wù)器的負(fù)載。在使用時(shí),索引主要是根據(jù)表中建立索引單列或多列的值與原表中記錄行之間一一對(duì)應(yīng)關(guān)系的有序表。索引的建立對(duì)于MySQL的高效運(yùn)行是很重要的,索引可以大大提高M(jìn)ySQL的檢索速度。例如,根據(jù)我們前面創(chuàng)建的學(xué)生成績(jī)管理系統(tǒng),如果要查找學(xué)號(hào)為“3”的學(xué)生的學(xué)習(xí)成績(jī),這時(shí)只需要?jiǎng)?chuàng)建學(xué)生信息表中學(xué)號(hào)列的索引,迅速在學(xué)號(hào)索引列查找學(xué)號(hào)為“3”的值,即可返回該行對(duì)應(yīng)的數(shù)據(jù)。在查詢過(guò)程中,一般過(guò)程的數(shù)據(jù)查詢,需要遍歷數(shù)據(jù)表中的所有數(shù)據(jù)。建立索引后,通過(guò)索引可以實(shí)現(xiàn)優(yōu)化查詢,進(jìn)一步提高查詢速度。但是使用時(shí)也需要注意,過(guò)多地使用索引也會(huì)造成濫用。因?yàn)閯?chuàng)建索引時(shí)會(huì)降低更新表的速度和占用一定的物理空間,如對(duì)表進(jìn)行INSERT、UPDATE和DELETE。在更新表時(shí),MySQL除了要保存數(shù)據(jù),還要保存索引文件,建立的索引還會(huì)占用磁盤空間的索引文件,進(jìn)而給數(shù)據(jù)的操作和維護(hù)帶來(lái)一定影響。7.1.1索引簡(jiǎn)介7.1索引簡(jiǎn)介1.普通索引普通索引是最基本的索引,沒(méi)有任何限制,可以在任何數(shù)據(jù)類型中創(chuàng)建。創(chuàng)建普通索引時(shí),只需添加關(guān)鍵字INDEX即可。創(chuàng)建時(shí)只需要根據(jù)表的某一字段進(jìn)行創(chuàng)建,創(chuàng)建好普通索引后,通過(guò)創(chuàng)建的該索引字段即可進(jìn)行查詢。2.唯一索引創(chuàng)建唯一索引時(shí),索引列的所有值都必須是唯一的,即只能出現(xiàn)一次。創(chuàng)建時(shí)使用關(guān)鍵字UNIQUE進(jìn)行設(shè)置。3.全文索引全文索引可以使用FULLTEXT參數(shù)進(jìn)行設(shè)置。只能在VARCHAR、CHAR、TEXT類型的列上創(chuàng)建,主要針對(duì)數(shù)據(jù)量較大的字符串類型字段進(jìn)行查詢,可以提高查詢速度和效率。跟普通索引稍有不同,全文索引一般以詞為基礎(chǔ),全文搜索可能存在文字、字母和數(shù)字等,對(duì)于一些大小寫敏感的字母,可以使用二進(jìn)制排序后再執(zhí)行全文索引。4.空間索引空間索引主要是針對(duì)空間數(shù)據(jù)類型做的索引,主要使用SPATIAL參數(shù)進(jìn)行設(shè)置。7.1.2索引分類7.2創(chuàng)建索引CREATEINDEX語(yǔ)句用于在已有表上創(chuàng)建索引,一個(gè)表可以創(chuàng)建多個(gè)索引,一個(gè)索引可以包含多個(gè)列,中間需用逗號(hào)隔開(kāi)。但該語(yǔ)句不能創(chuàng)建主鍵?!纠?-1】在tb_student表中的id字段上建立一個(gè)名為stu_id的普通索引。CREATEINDEXstu_idontb_student(id);輸入上述命令后,即可查看剛才創(chuàng)建的stu_id的普通索引,運(yùn)行結(jié)果如圖7-1所示。7.2.1通過(guò)CREATEINDEX語(yǔ)句7.2創(chuàng)建索引通過(guò)ALTERTABLE語(yǔ)句可以修改已有數(shù)據(jù)表結(jié)構(gòu)及向表中添加索引,語(yǔ)法格式如下:ALTERTABLE表名ADD[索引類型]INDEX<索引名>(<列名>[<長(zhǎng)度>][ASC|DESC])【例7-3】在表tb_department中的name字段上,使用altertable語(yǔ)句創(chuàng)建名為index_name的全文索引,具體代碼如下。ALTERTABLEtb_departmentaddfulltextindex_name(name);創(chuàng)建的索引信息,運(yùn)行如圖7-3所示。7.2.2使用ALTERTABLE語(yǔ)句7.2創(chuàng)建索引在創(chuàng)建表時(shí)創(chuàng)建索引?!纠?-4】在cjgl數(shù)據(jù)庫(kù)中創(chuàng)建成績(jī)表tb_score,并在該表的score列上創(chuàng)建普通索引。usecjglCREATETABLEtb_score(idbigint(10)PRIMARYKEYNOTNULLAUTO_INCREMENT,scoreint(4)DEFAULTNULL,stu_idbigint(10)DEFAULTNULL,course_idbigint(10)DEFAULTNULL,term_idbigint(10)DEFAULTNULL,remarksvarchar(50)DEFAULTNULL,index(score));創(chuàng)建索引信息如圖7-4所示。7.2.3在創(chuàng)建表時(shí)創(chuàng)建索引7.3刪除索引索引創(chuàng)建完后,如果是用戶不需要或不常用的索引,可以通過(guò)DROPINDEX語(yǔ)句進(jìn)行刪除。刪除索引后,將會(huì)減少系統(tǒng)資源的占用,從而提高更新速度。語(yǔ)法格式如下:DROPINDEX索引名ON表名【例7-5】刪除例7-3中在表tb_department中的name字段上創(chuàng)建的名為index_name的全文索引,具體代碼如下:DROPINDEXindex_nameONtb_department;刪除后效果如圖7-5所示。MySQL數(shù)據(jù)庫(kù)基礎(chǔ)

第8章

數(shù)據(jù)庫(kù)編程8.1存儲(chǔ)過(guò)程的基本操作8.2MySQL存儲(chǔ)函數(shù)8.3觸發(fā)器088.1存儲(chǔ)過(guò)程的基本操作存儲(chǔ)過(guò)程是一個(gè)完成特定功能的SQL語(yǔ)句的集合,是根據(jù)業(yè)務(wù)功能需要而保存的一條或多條SQL語(yǔ)句的集合。存儲(chǔ)過(guò)程通常有以下優(yōu)點(diǎn):(1)可重用性。存儲(chǔ)過(guò)程被創(chuàng)建后,可通過(guò)名字在程序中被多次調(diào)用,而不必重新編寫該存儲(chǔ)過(guò)程的SQL語(yǔ)句。后續(xù)可以對(duì)存儲(chǔ)過(guò)程封裝的SQL語(yǔ)句進(jìn)行修改,而不會(huì)影響調(diào)用它的應(yīng)用程序。(2)擴(kuò)展SQL語(yǔ)句的編程性。存儲(chǔ)過(guò)程可以采用流程控制語(yǔ)句編寫,有很強(qiáng)的邏輯靈活性,因此可完成復(fù)雜的判斷和較復(fù)雜的運(yùn)算。(3)降低網(wǎng)絡(luò)負(fù)載。存儲(chǔ)過(guò)程是在服務(wù)器端運(yùn)行,且執(zhí)行速度較快。當(dāng)客戶端機(jī)調(diào)用該存儲(chǔ)過(guò)程時(shí),網(wǎng)絡(luò)只需要傳送該調(diào)用語(yǔ)句即可,減少了網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸,從而降低了網(wǎng)絡(luò)負(fù)載。(4)提高安全性。存儲(chǔ)過(guò)程可以完成所有針對(duì)數(shù)據(jù)庫(kù)的操作,并且開(kāi)發(fā)人員可以通過(guò)編程的方式控制訪問(wèn)數(shù)據(jù)庫(kù)信息的權(quán)限。8.1存儲(chǔ)過(guò)程的基本操作存儲(chǔ)過(guò)程的參數(shù)詳解:(1)IN:修飾輸入?yún)?shù),用于傳入?yún)?shù)值給存儲(chǔ)過(guò)程。(2)OUT:修飾輸出參數(shù),用于接收存儲(chǔ)過(guò)程返回的參數(shù)值。(3)INOUT:修飾輸入/輸出參數(shù),可以傳入值,也可以接收存儲(chǔ)過(guò)程的返回值。(4)<參數(shù)名>:可選項(xiàng),命名規(guī)范同存儲(chǔ)過(guò)程名稱。(5)<類型>:參數(shù)的數(shù)據(jù)類型。(即MySQL數(shù)據(jù)類型)8.1.1存儲(chǔ)過(guò)程基本操作8.1存儲(chǔ)過(guò)程的基本操作1.創(chuàng)建無(wú)參數(shù)存儲(chǔ)過(guò)程根據(jù)語(yǔ)法提示,創(chuàng)建一個(gè)簡(jiǎn)單的存儲(chǔ)過(guò)程,名稱為pro_test,功能是完成查詢學(xué)生表tb_student的信息。2.有參數(shù)存儲(chǔ)過(guò)程在實(shí)際開(kāi)發(fā)應(yīng)用中,存儲(chǔ)過(guò)程基本都需要參數(shù)。參數(shù)的使用可以使存儲(chǔ)過(guò)程更加靈活和有用。在MySQL中參數(shù)有3種模式:IN,OUT或INOUT。3.查看存儲(chǔ)過(guò)程在實(shí)際的應(yīng)用過(guò)程中,我們會(huì)想要了解在數(shù)據(jù)庫(kù)下創(chuàng)建了哪些存儲(chǔ)過(guò)程,因此我們需要在MySQL中查看存儲(chǔ)過(guò)程的語(yǔ)法。4.修改存儲(chǔ)過(guò)程MySQL修改存儲(chǔ)過(guò)程的語(yǔ)法。5.刪除存儲(chǔ)過(guò)程當(dāng)我們?cè)趯?shí)際應(yīng)用中不再需要一些存儲(chǔ)過(guò)程時(shí),我們可以通過(guò)命令刪除掉。8.1.1存儲(chǔ)過(guò)程基本操作8.1存儲(chǔ)過(guò)程的基本操作1.MySQL聲明變量編輯復(fù)雜的存儲(chǔ)過(guò)程,我們首先要清楚MySQL變量的定義與賦值。在MySQL中有兩種定義變量的方式,分別為DECLARE命令和SET命令加“@”符號(hào)。2.存儲(chǔ)過(guò)程的條件語(yǔ)句MySQL的存儲(chǔ)過(guò)程提供了兩種條件判斷語(yǔ)句,一種是IF…ELSE…,另一種是CASE,下面我們來(lái)詳細(xì)講解這兩種語(yǔ)法的用法。3.存儲(chǔ)過(guò)程的循環(huán)語(yǔ)句在MySQL存儲(chǔ)過(guò)程中支持以下3種循環(huán)結(jié)構(gòu):1)WHILE…DO…ENDWHILE結(jié)構(gòu);2)REPEAT…UNTIL…ENDREPEAT結(jié)構(gòu);3)LOOP…LEAVE…ITERATE…ENDLOOP結(jié)構(gòu)。8.1.2存儲(chǔ)過(guò)程高級(jí)應(yīng)用8.2MySQL存儲(chǔ)函數(shù)MySQL存儲(chǔ)函數(shù)(自定義函數(shù)),函數(shù)的功能一般用于接收參數(shù),完成計(jì)算,返回結(jié)果。因此,我們可以將使用頻率較高的計(jì)算邏輯寫成一個(gè)函數(shù)。存儲(chǔ)函數(shù)與存儲(chǔ)過(guò)程一樣,也是由SQL語(yǔ)句和過(guò)程式語(yǔ)句組成的代碼片段。8.2.1存儲(chǔ)函數(shù)8.2MySQL存儲(chǔ)函數(shù)存儲(chǔ)函數(shù)和存儲(chǔ)過(guò)程本質(zhì)上是一樣的,都是一組SQL語(yǔ)句的集合,但在使用場(chǎng)景上還是有區(qū)別的,存儲(chǔ)過(guò)程一般用于業(yè)務(wù)邏輯比較復(fù)雜的情況,而存儲(chǔ)函數(shù)的應(yīng)用功能往往更有針對(duì)性,而且MySQL提供非常多的內(nèi)置存

溫馨提示

  • 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)論