MySQL網(wǎng)絡(luò)數(shù)據(jù)庫(kù)高職PPT完整全套教學(xué)課件_第1頁(yè)
MySQL網(wǎng)絡(luò)數(shù)據(jù)庫(kù)高職PPT完整全套教學(xué)課件_第2頁(yè)
MySQL網(wǎng)絡(luò)數(shù)據(jù)庫(kù)高職PPT完整全套教學(xué)課件_第3頁(yè)
MySQL網(wǎng)絡(luò)數(shù)據(jù)庫(kù)高職PPT完整全套教學(xué)課件_第4頁(yè)
MySQL網(wǎng)絡(luò)數(shù)據(jù)庫(kù)高職PPT完整全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩356頁(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)介

單元一

走進(jìn)數(shù)據(jù)時(shí)代單元1走進(jìn)數(shù)據(jù)時(shí)代.pptx單元2創(chuàng)建數(shù)據(jù).pptx單元3查看數(shù)據(jù).pptx單元4約束數(shù)據(jù).pptx單元5語(yǔ)言結(jié)構(gòu).pptx單元6數(shù)據(jù)庫(kù)編程.pptx單元7管理數(shù)據(jù)庫(kù).pptx全套可編輯PPT課件任務(wù)一

認(rèn)識(shí)數(shù)據(jù)庫(kù)案例:銀河商業(yè)集團(tuán)旗下有多間大型超市,為了統(tǒng)一管理,建設(shè)了一個(gè)銀河集團(tuán)數(shù)據(jù)庫(kù)管理系統(tǒng)。那么,究竟什么是數(shù)據(jù)庫(kù)?什么是數(shù)據(jù)庫(kù)管理系統(tǒng)?這個(gè)系統(tǒng)又是如何被設(shè)計(jì)出來(lái)?我們要如何使用這個(gè)系統(tǒng)?讓我們帶著這些問(wèn)題,一起開(kāi)始學(xué)習(xí)吧!數(shù)據(jù)(Data),是對(duì)客觀事物進(jìn)行抽象描述的結(jié)果。數(shù)據(jù)包括模擬數(shù)據(jù)和數(shù)字?jǐn)?shù)據(jù)。模擬數(shù)據(jù)是連續(xù)的值,例如音頻、視頻;數(shù)字?jǐn)?shù)據(jù)是離散的值,例如數(shù)值、符號(hào)、文字。1.1.1數(shù)據(jù)數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB),顧名思義就是數(shù)據(jù)的倉(cāng)庫(kù)。當(dāng)然這是個(gè)先進(jìn)的、存放有序的倉(cāng)庫(kù),存放有序指的是有良好的數(shù)據(jù)結(jié)構(gòu),目的是更好的存放、管理這些庫(kù)中的數(shù)據(jù)。銀河集團(tuán)的數(shù)據(jù)庫(kù)中就存儲(chǔ)了所有員工的信息數(shù)據(jù)、各種商品的信息數(shù)據(jù)以及每日銷售的信息數(shù)據(jù)。這些數(shù)據(jù)在集團(tuán)的運(yùn)營(yíng)中相關(guān)關(guān)聯(lián),把它們按照一定的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在計(jì)算機(jī)的存儲(chǔ)介質(zhì)中,就構(gòu)成了一個(gè)數(shù)據(jù)庫(kù)。1.1.2數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)管理系統(tǒng)(DatabaseManagementSystem,簡(jiǎn)稱DBMS),是一個(gè)應(yīng)用軟件,作用是管理數(shù)據(jù)庫(kù)中的各項(xiàng)數(shù)據(jù),也就是對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)、處理以及保護(hù)數(shù)據(jù)的安全。數(shù)據(jù)庫(kù)管理員(DatabaseAdministrators,簡(jiǎn)稱DBA)通過(guò)提供的工具對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理。銀河集團(tuán)的數(shù)據(jù)庫(kù)管理系統(tǒng)就是管理它數(shù)據(jù)庫(kù)的軟件,通過(guò)這個(gè)軟件,我們可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行增、刪、改、查等操作,也可以保護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全。1.1.3數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS應(yīng)提供如下功能:(1)數(shù)據(jù)定義功能可定義數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象。(2)數(shù)據(jù)操縱功能可對(duì)數(shù)據(jù)庫(kù)表進(jìn)行基本操作,如插入、刪除、修改、查詢。(3)數(shù)據(jù)的完整性檢查功能保證用戶輸入的數(shù)據(jù)應(yīng)滿足相應(yīng)的約束條件。(4)數(shù)據(jù)庫(kù)的安全保護(hù)功能保證只有賦予權(quán)限的用戶才能訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。(5)數(shù)據(jù)庫(kù)的并發(fā)控制功能使多個(gè)應(yīng)用程序可在同一時(shí)刻并發(fā)地訪問(wèn)數(shù)據(jù)庫(kù)的數(shù)據(jù)。(6)數(shù)據(jù)庫(kù)系統(tǒng)的故障恢復(fù)功能使數(shù)據(jù)庫(kù)運(yùn)行出現(xiàn)故障時(shí)進(jìn)行數(shù)據(jù)庫(kù)恢復(fù),以保證數(shù)據(jù)庫(kù)可靠運(yùn)行。(7)在網(wǎng)絡(luò)環(huán)境下訪問(wèn)數(shù)據(jù)庫(kù)的功能。(8)方便、有效地存取數(shù)據(jù)庫(kù)信息的接口和工具。編程人員通過(guò)程序開(kāi)發(fā)工具與數(shù)據(jù)庫(kù)的接口編寫數(shù)據(jù)庫(kù)應(yīng)用程序。1.1.3數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)(DatabaseSystem,簡(jiǎn)稱DBS),是包括了數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)管理員等的一個(gè)綜合系統(tǒng)。我們要能區(qū)分出數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng)的區(qū)別,數(shù)據(jù)庫(kù)系統(tǒng)中包含了數(shù)據(jù)庫(kù)管理系統(tǒng)。1.1.4數(shù)據(jù)庫(kù)系統(tǒng)模型(Model),是對(duì)現(xiàn)實(shí)世界進(jìn)行的抽象。數(shù)據(jù)模型(DataModel,簡(jiǎn)稱DM),是把數(shù)據(jù)的特征抽象成為模型。數(shù)據(jù)模型從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動(dòng)態(tài)行為和約束條件,為數(shù)據(jù)庫(kù)系統(tǒng)的信息表示與操作提供了一個(gè)抽象的框架。數(shù)據(jù)模型所描述的內(nèi)容有三部分:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。數(shù)據(jù)庫(kù)管理系統(tǒng)根據(jù)數(shù)據(jù)模型對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和管理,數(shù)據(jù)庫(kù)管理系統(tǒng)采用的數(shù)據(jù)模型主要有層次模型、網(wǎng)狀模型和關(guān)系模型。1.1.5數(shù)據(jù)模型1.層次模型層次模型的組織結(jié)構(gòu)為樹(shù)形,由根節(jié)點(diǎn)和子節(jié)點(diǎn)組成,這樣就構(gòu)成了一棵根在上,枝在下的樹(shù)。1.1.5數(shù)據(jù)模型銀河集團(tuán)金星超市木星超市火星超市生鮮組熟食組紙品組……2.網(wǎng)狀模型網(wǎng)狀模型的組織結(jié)構(gòu)為網(wǎng)絡(luò)狀,每個(gè)節(jié)點(diǎn)與其他節(jié)點(diǎn)都有聯(lián)系,這樣就構(gòu)成了一個(gè)復(fù)雜的網(wǎng)絡(luò)。1.1.5數(shù)據(jù)模型員工A員工B員工C員工D商品A商品B商品C商品D商品E3.關(guān)系模型關(guān)系模型的組織結(jié)構(gòu)是表格(二維表),以行、列的形式構(gòu)成。我們把表格中的一行稱為一條記錄,一列稱為一個(gè)字段,每一列的標(biāo)題名稱為字段名。這樣構(gòu)成的結(jié)構(gòu)表示為:表名(字段名1,…,字段名n)。1.1.5數(shù)據(jù)模型員工姓名員工入職日期員工聯(lián)系電話員工家庭住址員工工資獎(jiǎng)金0010001張子婷2018-5-1813303161111新華路3號(hào)470018000010002李偉澤2018-5-1813303161213文明路25號(hào)450011000020001王文諾2019-5-113303162112文華路23號(hào)45009000030002趙天成2019-12-113303163210詹天路5號(hào)4400550……

附錄A的表A.2、表A.4和表A.6描述了銀河集團(tuán)數(shù)據(jù)管理系統(tǒng)中員工、銷售和庫(kù)存三個(gè)信息表的完整數(shù)據(jù)。對(duì)于關(guān)系表,假如有組合一個(gè)或幾個(gè)字段的值,可以對(duì)其對(duì)應(yīng)的記錄起到唯一標(biāo)志的作用,那么我們稱這個(gè)字段或是這幾個(gè)字段的組合為碼。有的時(shí)候,對(duì)于一個(gè)表可能會(huì)出現(xiàn)多個(gè)碼?!爸鞔a”作為最重要的碼,一個(gè)關(guān)系表一般可以指定一個(gè)“主碼”。在關(guān)系模式中,標(biāo)出方式為在主碼下劃出橫線。上述三個(gè)表的關(guān)系模式可以分別表示為:?jiǎn)T工信息表(員工編號(hào),員工姓名,員工入職日期,員工聯(lián)系電話,員工家庭住址,員工工資,獎(jiǎng)金)銷售信息表(銷售編號(hào),銷售日期,銷售員工編號(hào),商品編號(hào),銷售數(shù)量)庫(kù)存信息表(商品編號(hào),商品類型,商品名稱,商品進(jìn)價(jià),商品售價(jià),庫(kù)存數(shù)量)1.1.5數(shù)據(jù)模型從上述表述可以看出,數(shù)據(jù)根據(jù)關(guān)系模型進(jìn)行表達(dá)更加簡(jiǎn)潔、直觀,并且對(duì)于后續(xù)進(jìn)行插入、刪除、修改等操作會(huì)更加的方便。如果數(shù)據(jù)根據(jù)層次模型或是網(wǎng)狀模型進(jìn)行表達(dá)則組織的方式將會(huì)更為復(fù)雜,插入、刪除、修改等操作也會(huì)更加的繁瑣。所以,數(shù)據(jù)庫(kù)管理系統(tǒng)基本上都應(yīng)用了關(guān)系模型,我們將要學(xué)習(xí)的MySQL也是支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫(kù)管理系統(tǒng)。1.1.5數(shù)據(jù)模型任務(wù)二

設(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)實(shí)體、實(shí)體集、屬性和屬性值。通常,把每一類數(shù)據(jù)對(duì)象的個(gè)體稱為“實(shí)體”,而每一類對(duì)象個(gè)體的集合稱為“實(shí)體集”。與每個(gè)實(shí)體集有關(guān)的信息項(xiàng)稱為屬性。實(shí)體集中的實(shí)體彼此是可區(qū)別的,如果實(shí)體集中的屬性或最小屬性組合的值能唯一標(biāo)志其對(duì)應(yīng)實(shí)體,則將該屬性或?qū)傩越M合稱為碼。對(duì)于每一個(gè)實(shí)體集,可指定一個(gè)碼為主碼。1.2.1概念結(jié)構(gòu)設(shè)計(jì)用圖形來(lái)表達(dá)這些概念:用矩形框表示實(shí)體集;用橢圓或帶半圓的矩形框表示屬性;用線段連接實(shí)體集與屬性;當(dāng)一個(gè)屬性或?qū)傩越M合指定為主碼時(shí),在實(shí)體集與屬性的連接線上標(biāo)記上斜線;這樣我們就得到了實(shí)體集之間的各種關(guān)系,我們把這些關(guān)系稱為“聯(lián)系”,聯(lián)系用菱形表示,通過(guò)直線與實(shí)體相連。這種實(shí)體集和實(shí)體集之間聯(lián)系的圖叫做實(shí)體——聯(lián)系(Entity-Relationship)圖,簡(jiǎn)稱E-R圖。1.2.1概念結(jié)構(gòu)設(shè)計(jì)總的來(lái)說(shuō),對(duì)于兩個(gè)實(shí)體集A和B之間的聯(lián)系分為三種情況:1.一對(duì)一的聯(lián)系(1:1)A中的一個(gè)實(shí)體最多與B中的一個(gè)實(shí)體相聯(lián)系,B中的一個(gè)實(shí)體也最多與A中的一個(gè)實(shí)體相聯(lián)系。例如,“超市”與“店長(zhǎng)”這兩個(gè)實(shí)體集之間的聯(lián)系是一對(duì)一的聯(lián)系,因?yàn)橐婚g超市只有一位店長(zhǎng),反過(guò)來(lái),一位店長(zhǎng)只屬于一間超市。如圖1.5所示,是“超市”與“店長(zhǎng)”這兩個(gè)實(shí)體集的E-R模型。1.2.1概念結(jié)構(gòu)設(shè)計(jì)2.一對(duì)多的聯(lián)系(1:n)A中的一個(gè)實(shí)體可以與B中的多個(gè)實(shí)體相聯(lián)系,而B(niǎo)中的一個(gè)實(shí)體至多與A中的一個(gè)實(shí)體相聯(lián)系。例如,“超市”與“員工”這兩個(gè)實(shí)體集之間的聯(lián)系是一對(duì)多的聯(lián)系,因?yàn)?,一間超市可以雇傭多名員工,反過(guò)來(lái),一名員工卻只能在一間超市工作。如圖1.6所示,是“超市”與“員工”這兩個(gè)實(shí)體集的E-R模型。1.2.1概念結(jié)構(gòu)設(shè)計(jì)3.多對(duì)多的聯(lián)系(m:n)A中的一個(gè)實(shí)體可以與B中的多個(gè)實(shí)體相聯(lián)系,而B(niǎo)中的一個(gè)實(shí)體也可與A中的多個(gè)實(shí)體相聯(lián)系。例如,“員工”與“商品”這兩個(gè)實(shí)體集之間的聯(lián)系是多對(duì)多的聯(lián)系,因?yàn)椋幻麊T工可以銷售多種商品,那么同樣的,一種商品也可以被多名員工進(jìn)行銷售。如圖1.7所示,是“員工”與“商品”這兩個(gè)實(shí)體集的E-R模型。1.2.1概念結(jié)構(gòu)設(shè)計(jì)1.一對(duì)一聯(lián)系(1∶1)的E-R圖到關(guān)系模式的轉(zhuǎn)換對(duì)于一對(duì)一的聯(lián)系(1∶1)可以單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,也可以不單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式。(1)聯(lián)系單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,則由聯(lián)系屬性、參與聯(lián)系的各實(shí)體集的主碼屬性構(gòu)成關(guān)系模式,其主碼可選參與聯(lián)系的實(shí)體集的任一方的主碼。例如,對(duì)于圖1-5所描述的“超市(supermarket)”實(shí)體集與“店長(zhǎng)(manager)”實(shí)體集,它們通過(guò)屬于(belong)聯(lián)系的E-R模型可以設(shè)計(jì)為下面的關(guān)系模式(下橫線表示該字段為主碼):supermarket(編號(hào),店名)manager(編號(hào),姓名)belong(s編號(hào),m編號(hào))。1.2.2邏輯結(jié)構(gòu)設(shè)計(jì)(2)聯(lián)系不單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,則由一方實(shí)體集的主碼加入到另一方實(shí)體集的屬性中,然后共同構(gòu)成關(guān)系模式。例如,對(duì)于圖1-5所描述的“超市(supermarket)”實(shí)體集與“店長(zhǎng)(manager)”實(shí)體集,它們通過(guò)屬于(belong)聯(lián)系的E-R模型可以設(shè)計(jì)為下面的關(guān)系模式(下橫線表示該字段為主碼):supermarket(編號(hào),店名,m編號(hào))manager(編號(hào),姓名)或者supermarket(編號(hào),店名)manager(編號(hào),姓名,s編號(hào))1.2.2邏輯結(jié)構(gòu)設(shè)計(jì)2.一對(duì)多聯(lián)系(1∶n)的E-R圖到關(guān)系模式的轉(zhuǎn)換對(duì)于一對(duì)多聯(lián)系(1∶n)可以單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,也可以不單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式。(1)聯(lián)系單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,則由聯(lián)系的屬性、參與聯(lián)系的各實(shí)體集的主碼屬性構(gòu)成關(guān)系模式,n端的主碼作為該關(guān)系模式的主碼。例如,對(duì)于圖1-6所描述的“超市(supermarket)”實(shí)體集與“員工(employees)”實(shí)體集,它們通過(guò)屬于(belong)聯(lián)系的E-R模型可以設(shè)計(jì)為下面的關(guān)系模式(下橫線表示該字段為主碼):supermarket(編號(hào),店名)employees(編號(hào),姓名)belong(s編號(hào),e編號(hào))1.2.2邏輯結(jié)構(gòu)設(shè)計(jì)(2)聯(lián)系不單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,則由聯(lián)系的屬性及1端的主碼加入n端實(shí)體集對(duì)應(yīng)的關(guān)系模式中,主碼仍為n端的主碼。例如,對(duì)于圖1-6所描述的“超市(supermarket)”實(shí)體集與“員工(employees)”實(shí)體集,它們通過(guò)屬于(belong)聯(lián)系的E-R模型可以設(shè)計(jì)為下面的關(guān)系模式(下橫線表示該字段為主碼):supermarket(編號(hào),店名)employees(編號(hào),姓名,s編號(hào))1.2.2邏輯結(jié)構(gòu)設(shè)計(jì)3.多對(duì)多聯(lián)系(m:n)的E-R圖到關(guān)系模式的轉(zhuǎn)換對(duì)于多對(duì)多聯(lián)系(m∶n),單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式。該關(guān)系模式包括聯(lián)系的屬性、參與聯(lián)系的各實(shí)體集的主碼屬性,該關(guān)系模式的主碼由各實(shí)體集的主碼屬性共同組成。例如,對(duì)于圖1-7所描述的“員工(employees)”實(shí)體集與“商品(goods)”實(shí)體集,它們通過(guò)銷售(sale)聯(lián)系的E-R模型可以設(shè)計(jì)為下面的關(guān)系模式(下橫線表示該字段為主碼):employees(編號(hào),姓名)goods(編號(hào),名稱)sale(e編號(hào),g編號(hào))在一個(gè)關(guān)系模式只能有一個(gè)主碼。以上關(guān)系模式sale的主碼,是一個(gè)主碼,它是由員工的“編號(hào)”和商品的“編號(hào)”兩個(gè)屬性組合起來(lái),共同構(gòu)成的。1.2.2邏輯結(jié)構(gòu)設(shè)計(jì)邏輯結(jié)構(gòu)設(shè)計(jì)就是上述依靠E-R圖來(lái)設(shè)計(jì)關(guān)系模式的設(shè)計(jì)過(guò)程。邏輯結(jié)構(gòu)設(shè)計(jì)的目的是為了設(shè)計(jì)項(xiàng)目中各實(shí)體集的關(guān)系模式,我們只有完成了邏輯結(jié)構(gòu)設(shè)計(jì),才可以在數(shù)據(jù)庫(kù)管理系統(tǒng)的環(huán)境下(例如MySQL軟件),進(jìn)行創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建數(shù)據(jù)表,創(chuàng)建其他數(shù)據(jù)庫(kù)對(duì)象,對(duì)數(shù)據(jù)進(jìn)行增、刪、改、查及其他管理操作。1.2.2邏輯結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)的物理模型即指數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),如對(duì)數(shù)據(jù)庫(kù)物理文件和索引文件的組織方式、文件的存取路徑、內(nèi)存的管理等。物理模型不僅與數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)有關(guān),還和操作系統(tǒng)(OS)甚至硬件有關(guān),物理模型對(duì)用戶是不可見(jiàn)的。數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)是對(duì)已經(jīng)確定的邏輯數(shù)據(jù)結(jié)構(gòu),利用DBMS所提供的方法、技術(shù),以較優(yōu)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)存取路徑、合理的數(shù)據(jù)存放位置以及存儲(chǔ)分配,設(shè)計(jì)出一個(gè)高效的、可以實(shí)現(xiàn)的物理數(shù)據(jù)結(jié)構(gòu)。簡(jiǎn)單的說(shuō),就是針對(duì)已經(jīng)完成的邏輯結(jié)構(gòu)設(shè)計(jì),再進(jìn)一步設(shè)計(jì)出與其相應(yīng)的并且較為優(yōu)化的物理結(jié)構(gòu),設(shè)計(jì)出的物理結(jié)構(gòu)包括實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)存取路徑、數(shù)據(jù)存放位置、存儲(chǔ)分配等。1.2.3物理結(jié)構(gòu)設(shè)計(jì)任務(wù)三

安裝MySQL數(shù)據(jù)庫(kù)

及可視化界面工具M(jìn)ySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQLAB公司開(kāi)發(fā),屬于Oracle旗下產(chǎn)品。MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在WEB應(yīng)用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。MySQL所使用的SQL語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),因此一般的中小型網(wǎng)站開(kāi)發(fā)在網(wǎng)站數(shù)據(jù)庫(kù)方面都選擇MySQL。1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL1.下載MySQL8.0.192020年1月,MySQL發(fā)布了本年度的第一個(gè)小版本MySQL8.0.19。同其他版本一樣,下載的地址依然為:/downloads/mysql/。1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL以MicrosoftWindows操作系統(tǒng)為例,安裝版下載后是mysql-installer-community-.msi,壓縮版下載后是mysql-8.0.19-winx64.zip,分別需要進(jìn)行安裝以及解壓縮、配置環(huán)境。1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL2.安裝MySQL8.0.19(1)mysql-installer-community-.msi的安裝1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL2.安裝MySQL8.0.19(1)mysql-installer-community-.msi的安裝1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL2.安裝MySQL8.0.19(2)mysql-8.0.19-winx64.zip的安裝對(duì)mysql-8.0.19-winx64.zip文件進(jìn)行解壓縮,解壓到當(dāng)前文件夾。1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL2.安裝MySQL8.0.19(2)mysql-8.0.19-winx64.zip的安裝在mysql-8.0.19-winx64的目錄下,配置MySQL配置文件,新建my.ini編輯如下配置信息(注意:my.ini需要以ANSI格式編碼)。1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL2.安裝MySQL8.0.19(2)mysql-8.0.19-winx64.zip的安裝以管理員的身份打開(kāi)cmd,切換目錄D:\mysql\mysql-8.0.19-winx64\bin的bin目錄下,即在“命令提示符”界面中輸入:cdD:\mysql\mysql-8.0.19-winx64\bin。然后,使用命令行初始化數(shù)據(jù)庫(kù),即在“命令提示符”界面中輸入:mysqld--initialize–console,初始化完成后會(huì)得到,root用戶初始密碼。1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL3.運(yùn)行和退出MySQL8.0.19安裝完畢后,點(diǎn)擊“開(kāi)始”菜單,找到MySQL下的MySQL8.0CommandLineClient,點(diǎn)擊進(jìn)入,在首行“Enterpassword:”后面輸入設(shè)置好的MySQL登錄密碼,即可登入。輸入:exit,即可退出。1.3.1關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQLMySQLWorkbench是一款專為MySQL設(shè)計(jì)的ER/數(shù)據(jù)庫(kù)建模工具,是MySQLAB發(fā)布的可視化的數(shù)據(jù)庫(kù)設(shè)計(jì)軟件,它的前身是FabForce公司的DBDesigner4。MySQLWorkbench為數(shù)據(jù)庫(kù)管理員、程序開(kāi)發(fā)者和系統(tǒng)規(guī)劃師提供可視化設(shè)計(jì)、模型建立、以及數(shù)據(jù)庫(kù)管理功能。它包含了用于創(chuàng)建復(fù)雜的數(shù)據(jù)建模ER模型,正向和逆向數(shù)據(jù)庫(kù)工程,也可以用于執(zhí)行通常需要花費(fèi)大量時(shí)間和需要的難以變更和管理的文檔任務(wù)。使用者可以利用MySQLWorkbench設(shè)計(jì)和創(chuàng)建新的數(shù)據(jù)庫(kù)圖示,建立數(shù)據(jù)庫(kù)文檔,以及進(jìn)行復(fù)雜的MySQL遷移。MySQLWorkbench同時(shí)具有開(kāi)源和商業(yè)化的兩個(gè)版本,可在Windows、Linux和MacOS等操作系統(tǒng)上使用。最新的版本是2020年發(fā)布的MySQLWorkbench8.0.19。1.3.2可視化界面工具M(jìn)ySQLWorkbench8.0.19MySQLWorkbench可在MySQL的官方網(wǎng)站進(jìn)行下載,具體網(wǎng)址是:/downloads/workbench/,同MySQL的下載頁(yè)面相類似,可以選擇不同的操作系統(tǒng),選擇32位或64位的安裝版。MySQLWorkbench8.0.19的安裝非常簡(jiǎn)單,按照提示即可完成安裝,是MySQLWorkbench軟件運(yùn)行的界面截圖。在此界面上點(diǎn)擊左下方“MySQLConnections”右側(cè)的“+”號(hào),即彈出對(duì)話框。在此對(duì)話框中,可以設(shè)置數(shù)據(jù)庫(kù)連接,包括設(shè)置連接的名稱、連接的方式、主機(jī)號(hào)、端口號(hào)、賬號(hào)和密碼等。按照之前安裝MySQL8.0.19時(shí)設(shè)置的各項(xiàng)內(nèi)容進(jìn)行填寫,最后點(diǎn)擊“TestConnection”。即可完成數(shù)據(jù)庫(kù)連接,看到MySQL8.0.19自帶的數(shù)據(jù)庫(kù)。1.3.2可視化界面工具M(jìn)ySQLWorkbench8.0.191.3.2可視化界面工具M(jìn)ySQLWorkbench8.0.19MySQLWorkbench8.0.19軟件的操作頁(yè)面,可以劃分為五個(gè)區(qū)域,分別是:數(shù)據(jù)庫(kù)及其各對(duì)象的顯示區(qū)域、選擇對(duì)象的相關(guān)信息區(qū)域、SQL命令編輯區(qū)域、SQL命令運(yùn)行結(jié)果顯示區(qū)域和命令執(zhí)行區(qū)域。1.3.2可視化界面工具M(jìn)ySQLWorkbench8.0.19在SQL命令編輯區(qū)中輸入測(cè)試語(yǔ)句,“usesys;”(使用sys數(shù)據(jù)庫(kù))以及“select*fromsys_config;”(查詢sys_config表中的所有數(shù)據(jù)),如圖1.20所示,其中sys數(shù)據(jù)庫(kù)是mysql自帶的系統(tǒng)數(shù)據(jù)庫(kù),然后選擇執(zhí)行(或者使用快捷鍵Ctrl+Enter)。執(zhí)行成功后,查詢結(jié)果會(huì)以列表的形式顯示在下面的運(yùn)行結(jié)果區(qū)域中。使用完畢后,可以直接退出。假如沒(méi)有后續(xù)的數(shù)據(jù)庫(kù)操作,可以關(guān)閉MySQL的服務(wù)。1.3.2可視化界面工具M(jìn)ySQLWorkbench8.0.19NavicatforMySQL是一套管理和開(kāi)發(fā)MySQL或MariaDB的理想解決方案,支持單一程序,可同時(shí)連接到MySQL和MariaDB。這個(gè)功能齊備的前端軟件為數(shù)據(jù)庫(kù)管理、開(kāi)發(fā)和維護(hù)提供了直觀而強(qiáng)大的圖形界面,給MySQL或MariaDB新手以及專業(yè)人士提供了一組全面的工具。NavicatforMySQL可連接到任何本機(jī)或遠(yuǎn)程MySQL和MariaDB服務(wù)器。它可以用于MySQL數(shù)據(jù)庫(kù)服務(wù)器版本3.21或以上和MariaDB5.1或以上,與Drizzle、OurDelta和PerconaServer兼容,并支持大部分最新功能,包括表、視圖、函數(shù)或過(guò)程、事件等。NavicatforMySQL15.0.13主要功能包括SQL創(chuàng)建工具或編輯器、數(shù)據(jù)模型工具、數(shù)據(jù)傳輸、導(dǎo)入或?qū)С?、?shù)據(jù)或結(jié)構(gòu)同步、報(bào)表等。NavicatforMySQL15.0.13可在Navicat的官方網(wǎng)站進(jìn)行下載,具體網(wǎng)址是:/download/navicat-for-mysql,可以選擇14天免費(fèi)全功能的試用版先行試用。NavicatforMySQL15.0.13同樣支持Windows、MacOS和Linux這些不同的操作系統(tǒng),可以選擇32位或64位的安裝版。1.3.3可視化界面工具NavicatforMySQL15.0.13NavicatforMySQL的安裝非常簡(jiǎn)單,按照提示即可完成安裝。1.3.3可視化界面工具NavicatforMySQL15.0.131.3.3可視化界面工具NavicatforMySQL15.0.13MySQL數(shù)據(jù)庫(kù)的圖形化界面工具軟件有很多,其中MySQLWorkbench8.0.19和NavicatforMySQL15.0.13是使用者較多的兩款。綜合比較MySQLWorkbench8.0.19和NavicatforMySQL15.0.13,使用操作都很方便,NavicatforMySQL15.0.13有中文版,對(duì)初學(xué)者來(lái)說(shuō)感覺(jué)更舒適和方便,但其只提供14天的免費(fèi)使用,長(zhǎng)期使用需要付費(fèi)購(gòu)買。MySQLWorkbench8.0.19在MySQL的官方網(wǎng)站上即可進(jìn)行下載,可與MySQL8.0.19的下載一起完成,而且可以長(zhǎng)期免費(fèi)使用。在本教材中,我們將使用MySQLWorkbench8.0.19作為主要的數(shù)據(jù)庫(kù)編輯工具。1.3.3可視化界面工具NavicatforMySQL15.0.13單元二

創(chuàng)建數(shù)據(jù)任務(wù)一

操作數(shù)據(jù)庫(kù)MySQL安裝后,系統(tǒng)自動(dòng)地創(chuàng)建information_scema和mysql數(shù)據(jù)庫(kù),MySQL把有關(guān)數(shù)據(jù)庫(kù)的信息存儲(chǔ)在這兩個(gè)數(shù)據(jù)庫(kù)中。如果刪除了這些數(shù)據(jù)庫(kù),MySQL就不能正常工作。對(duì)于用戶的數(shù)據(jù),需要?jiǎng)?chuàng)建新的數(shù)據(jù)庫(kù)來(lái)存放。使用CREATEDATABASE或CREATESCHEMA命令可以創(chuàng)建數(shù)據(jù)庫(kù)。語(yǔ)法格式:CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]db_name[create_specification[,create_specification]...]其中create_specification:[DEFAULT]CHARACTERSETcharset_name|[DEFAULT]COLLATEcollation_name2.1.1創(chuàng)建數(shù)據(jù)庫(kù)【例2.1】創(chuàng)建一個(gè)名為yhdb的數(shù)據(jù)庫(kù)。createdatabaseyhdb;注意:(1)在MySQL中,每一條SQL語(yǔ)句都以“;”作為結(jié)束標(biāo)志。(2)由于MySQL中不允許出現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)命名相同的情況,所以如果再創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)也命名為yhdb,將提示錯(cuò)誤。如果不知道是否有重名的數(shù)據(jù)庫(kù),可以在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)使用IFNOTEXISTS從句,即為:createdatabaseifnotexistsyhdb;意為:如果不存在yhdb數(shù)據(jù)庫(kù)就創(chuàng)建它,這樣不論是否有重名的數(shù)據(jù)庫(kù),均可以不顯示錯(cuò)誤信息。2.1.1創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建了數(shù)據(jù)庫(kù)之后使用USE命令可指定當(dāng)前數(shù)據(jù)庫(kù)。語(yǔ)法格式:USEdb_name;【例2.2】使用yhdb數(shù)據(jù)庫(kù)。useyhdb;說(shuō)明:這個(gè)語(yǔ)句也可以用來(lái)從一個(gè)數(shù)據(jù)庫(kù)“跳轉(zhuǎn)”到另一個(gè)數(shù)據(jù)庫(kù),在用CREATEDATABASE語(yǔ)句創(chuàng)建了數(shù)據(jù)庫(kù)之后,該數(shù)據(jù)庫(kù)不會(huì)自動(dòng)成為當(dāng)前數(shù)據(jù)庫(kù),需要用這條USE語(yǔ)句來(lái)指定。2.1.2使用數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)創(chuàng)建后,如果需要修改數(shù)據(jù)庫(kù)的參數(shù),可以使用ALTERDATABASE命令。語(yǔ)法格式:ALTER{DATABASE|SCHEMA}[db_name]alter_specification[,alter_specification]...其中alter_specification:[DEFAULT]CHARACTERSETcharset_name|[DEFAULT]COLLATEcollation_name2.1.3修改數(shù)據(jù)庫(kù)【例2.3】修改數(shù)據(jù)庫(kù)yhdb的默認(rèn)字符集和校對(duì)規(guī)則。alterdatabaseyhdbdefaultcharactersetgb2312defaultcollategb2312_chinese_ci;說(shuō)明:ALTERDATABASE用于更改數(shù)據(jù)庫(kù)的全局特性,這些特性儲(chǔ)存在數(shù)據(jù)庫(kù)目錄中的db.opt文件中。用戶必須有對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改的權(quán)限,才可以使用ALTERDATABASE。修改數(shù)據(jù)庫(kù)的選項(xiàng)與創(chuàng)建數(shù)據(jù)庫(kù)相同,功能不再重復(fù)說(shuō)明。如果語(yǔ)句中數(shù)據(jù)庫(kù)名稱忽略,則修改當(dāng)前(默認(rèn))數(shù)據(jù)庫(kù)。2.1.3修改數(shù)據(jù)庫(kù)已經(jīng)創(chuàng)建的數(shù)據(jù)庫(kù)需要?jiǎng)h除,使用DROPDATABASE命令。語(yǔ)法格式:DROPDATABASE[IFEXISTS]db_name【例2.4】刪除數(shù)據(jù)庫(kù)yhdb。dropdatabaseyhdb;注意:如果刪除的數(shù)據(jù)庫(kù)不存在,比如完成例2.4后,再次刪除數(shù)據(jù)庫(kù)yhdb,將會(huì)提示錯(cuò)誤。為了避免這種錯(cuò)誤,與創(chuàng)建數(shù)據(jù)庫(kù)相同,可以在刪除數(shù)據(jù)庫(kù)時(shí)使用IFEXISTS從句,即為:dropdatabaseifexistsyhdb;意為:如果存在yhdb數(shù)據(jù)庫(kù)就刪除它,這樣不論這個(gè)數(shù)據(jù)庫(kù)是否存在,均可以不顯示錯(cuò)誤信息。注意:這個(gè)命令必須小心使用,因?yàn)樗鼘h除指定的整個(gè)數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)的所有表(包括其中的數(shù)據(jù))也將永久刪除。2.1.4刪除數(shù)據(jù)庫(kù)任務(wù)二

操作數(shù)據(jù)表1.數(shù)值類型MySQL支持所有標(biāo)準(zhǔn)SQL數(shù)值數(shù)據(jù)類型。嚴(yán)格數(shù)值數(shù)據(jù)類型:INTEGER或INT,SMALLINT,DECIMAL或DEC,NUMERIC近似數(shù)值數(shù)據(jù)類型:FLOAT,REAL,PRECISIONMySQL支持選擇在該類型關(guān)鍵字后面的括號(hào)內(nèi)指定整數(shù)值的顯示寬度(例如,INT(4))。對(duì)于浮點(diǎn)列類型,在MySQL中單精度值使用4個(gè)字節(jié),雙精度值使用8個(gè)字節(jié)。MySQL允許使用FLOAT(M,D)或REAL(M,D)或DOUBLEPRECISION(M,D)格式?!?M,D)”表示該值一共顯示M位整數(shù),其中D位位于小數(shù)點(diǎn)后面。例如,定義為FLOAT(7,4)的一個(gè)列可以顯示為-999.9999。MySQL保存值時(shí)進(jìn)行四舍五入,因此如果在FLOAT(7,4)列內(nèi)插入999.00009,近似結(jié)果是999.0001。2.2.1數(shù)據(jù)類型2.字符串類型:字符串類型的數(shù)據(jù)主要是由字母、漢字、數(shù)字符號(hào)、特殊符號(hào)構(gòu)成的數(shù)據(jù)對(duì)象。按照字符個(gè)數(shù)多少的不同分為以下幾類:(1)CHAR:列的長(zhǎng)度固定為創(chuàng)建表時(shí)聲明的長(zhǎng)度。長(zhǎng)度可以為從0到255的任何值。當(dāng)保存CHAR值時(shí),在它們的右邊填充空格以達(dá)到指定的長(zhǎng)度。例如,在員工信息表中,如果設(shè)定“員工姓名char(8)”,表示“員工姓名”是8個(gè)字符長(zhǎng)度的字符串,可以做賦值引用即:?jiǎn)T工姓名=`高田`,這里員工姓名的值包括8個(gè)字符,其中2個(gè)漢字(按照4個(gè)字符處理)和4個(gè)空格。name右側(cè)會(huì)有若干個(gè)空格占位。這樣浪費(fèi)了磁盤的存儲(chǔ)空間。2.2.1數(shù)據(jù)類型(2)VARCHAR:列中的值為可變長(zhǎng)字符串。長(zhǎng)度可以指定為0到65,535之間的值。(VARCHAR的最大有效長(zhǎng)度由最大行大小和使用的字符集確定。整體最大長(zhǎng)度是65,532字節(jié))。同CHAR對(duì)比,VARCHAR值保存時(shí)只保存需要的字符數(shù)。(3)BLOB:二進(jìn)制字符串(字節(jié)字符串)。BLOB列沒(méi)有字符集,并且排序和比較基于列值字節(jié)的數(shù)值值。這種類型數(shù)據(jù)用于存儲(chǔ)聲音、視頻、圖像等數(shù)據(jù)。(4)TEXT:非二進(jìn)制字符串(字符字符串)。TEXT列有一個(gè)字符集,并且根據(jù)字符集的校對(duì)規(guī)則對(duì)值進(jìn)行排序和比較。在實(shí)際應(yīng)用中像個(gè)人履歷、獎(jiǎng)懲情況、職業(yè)說(shuō)明、內(nèi)容簡(jiǎn)介等設(shè)定為text的數(shù)據(jù)類型。BLOB和TEXT列不能有默認(rèn)值。BLOB或TEXT對(duì)象的最大大小由其類型確定,但在客戶端和服務(wù)器之間實(shí)際可以傳遞的最大值由可用內(nèi)存數(shù)量和通信緩存區(qū)大小確定。你可以通過(guò)更改max_allowed_packet變量的值更改消息緩存區(qū)的大小,但必須同時(shí)修改服務(wù)器和客戶端程序。2.2.1數(shù)據(jù)類型3.日期和時(shí)間類型(1)date:表示日期,輸入數(shù)據(jù)的格式是:yyyy-mm-dd。支持的范圍是'1000-01-01'到'9999-12-31'。例如,在員工信息表中的員工入職日期可以設(shè)定成為date類型。(2)time:表示時(shí)間,輸入數(shù)據(jù)的格式是:hh:mm:ss。TIME值的范圍可以從'-838:59:59'到'838:59:59'。小時(shí)部分會(huì)因此大的原因是TIME類型不僅可以用于表示一天的時(shí)間(必須小于24小時(shí)),還可能為某個(gè)事件過(guò)去的時(shí)間或兩個(gè)事件之間的時(shí)間間隔(可以大于24小時(shí),或者甚至為負(fù))。(3)datetime:表示日期時(shí)間,格式是:yyyy-mm-ddhh:mm:ss。支持的范圍為'1000-01-0100:00:00'到'9999-12-3123:59:59'。2.2.1數(shù)據(jù)類型創(chuàng)建表使用CREATETABLE命令。語(yǔ)法格式:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name[([column_definition],...|[index_definition])][table_option][select_statement];2.2.2創(chuàng)建數(shù)據(jù)表【例2.5】創(chuàng)建數(shù)據(jù)庫(kù)yhdb,并在該數(shù)據(jù)庫(kù)中創(chuàng)建員工信息表employees。2.2.2創(chuàng)建數(shù)據(jù)表createdatabaseyhdb;useyhdb;CREATETABLEemployees(員工編號(hào)CHAR(7)NOTNULLPRIMARYKEY,員工姓名CHAR(8)NOTNULL,員工性別TINYINTNOTNULL,入職日期DATENOTNULL,聯(lián)系電話CHAR(11)NOTNULL,家庭住址CHAR(20),工資收入FLOAT(6,2),獎(jiǎng)金收入FLOAT(6,2))ENGINE=INNODB;2.2.2創(chuàng)建數(shù)據(jù)表“NOTNULL”表示對(duì)應(yīng)的字段如“員工姓名”不允許有空值??罩?NULL)通常表示未知、不可用或?qū)⒃谝院筇砑拥臄?shù)據(jù)。若一個(gè)列允許為空值,則向表中輸入記錄值時(shí)可不為該列給出具體值;而一個(gè)列若不允許為空值,則在輸入時(shí)必須給出該列的具體值??罩挡荒芘c數(shù)值數(shù)據(jù)0或字符類型的空字符混為一談。任意兩個(gè)空值都不相等。“PRIMARYKEY”表示將“員工編號(hào)”字段定義為主鍵。主鍵表示該字段的值不能為空值并且不能出現(xiàn)重復(fù)值,即非空且唯一?!癊NGINE=InnoDB”表示采用的存儲(chǔ)引擎是InnoDB,InnoDB是MySQL在Windows平臺(tái)默認(rèn)的存儲(chǔ)引擎,所以“ENGINE=InnoDB”可以省略?!纠?.6】在數(shù)據(jù)庫(kù)yhdb中創(chuàng)建銷售信息表sales。2.2.2創(chuàng)建數(shù)據(jù)表CREATETABLEsales(銷售編號(hào)CHAR(7)NOTNULL,銷售日期DATENOTNULL,員工編號(hào)CHAR(7)NOTNULL,商品編號(hào)CHAR(4)NOTNULL,銷售數(shù)量TINYINTNOTNULL,PRIMARYKEY(銷售編號(hào),銷售日期,員工編號(hào),商品編號(hào)));注意:對(duì)于一個(gè)數(shù)據(jù)表來(lái)說(shuō),“PRIMARYKEY”只能出現(xiàn)一次,但有4個(gè)字段(銷售編號(hào)、銷售日期、員工編號(hào)、商品編號(hào))的說(shuō)明中寫了“主鍵”,這表明這4個(gè)字段共同構(gòu)成了聯(lián)合主鍵,在SQL命令行中需要在各字段后以“PRIMARYKEY(銷售編號(hào),銷售日期,員工編號(hào),商品編號(hào))”的形式聲明,表明這4個(gè)字段的組合值不能為空值并且不能出現(xiàn)重復(fù)值,也就是說(shuō)這4個(gè)字段的值在一條記錄中最多有3個(gè)是一致的。2.2.2創(chuàng)建數(shù)據(jù)表【例2.7】在數(shù)據(jù)庫(kù)yhdb中創(chuàng)建庫(kù)存信息表stocks。2.2.2創(chuàng)建數(shù)據(jù)表CREATETABLEstocks(商品編號(hào)CHAR(4)NOTNULL,類型編號(hào)CHAR(6)NOTNULL,商品名稱CHAR(50)NOTNULL,商品進(jìn)價(jià)FLOAT(5,2)NOTNULL,商品售價(jià)FLOAT(5,2),庫(kù)存數(shù)量INTNOTNULL,PRIMARYKEY(商品編號(hào),類型編號(hào)));。2.2.2創(chuàng)建數(shù)據(jù)表ALTERTABLE用于更改原有表的結(jié)構(gòu)。例如,可以增加或刪減列,創(chuàng)建或取消索引,更改原有列的類型,重新命名列或表,還可以更改表的評(píng)注和表的類型。語(yǔ)法格式:ALTER[IGNORE]TABLEtbl_namealter_specification[,alter_specification]...2.2.3修改數(shù)據(jù)表【例2.8】在數(shù)據(jù)庫(kù)yhdb中的employees表中增加“備注”列(text類型)。altertableemployeesaddcolumn備注text;【例2.9】在數(shù)據(jù)庫(kù)yhdb中的employees表中刪除“備注”列。altertableemployeesdrop備注;注意:增加字段時(shí)要注明字段類型,刪除字段時(shí)只需注明字段名稱。2.2.3修改數(shù)據(jù)表除了上面的ALTERTABLE命令,還可以直接用RENAMETABLE語(yǔ)句來(lái)更改表的名字。語(yǔ)法格式:RENAMETABLEtbl_nameTOnew_tbl_name[,tbl_name2TOnew_tbl_name2]...【例2.10】將數(shù)據(jù)庫(kù)yhdb中的employees表重命名為員工信息表,將sales表重命名為銷售信息表。renametableemployeesto員工信息表,salesto銷售信息表;2.2.4修改數(shù)據(jù)表名語(yǔ)法格式:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name[()LIKEold_tbl_name[]]|[AS(select_statement)] ;【例2.11】將數(shù)據(jù)庫(kù)yhdb中的員工信息表拷貝,創(chuàng)建一個(gè)名為employees的數(shù)據(jù)表,將銷售信息表拷貝,創(chuàng)建一個(gè)名為sales的數(shù)據(jù)表。createtableemployeeslike員工信息表;【例2.12】創(chuàng)建數(shù)據(jù)表銷售信息表的一個(gè)名為sales的拷貝,并且復(fù)制其內(nèi)容。createtablesalesas(select*from銷售信息表);2.2.5復(fù)制數(shù)據(jù)表需要?jiǎng)h除一個(gè)表時(shí)可以使用DROPTABLE語(yǔ)句。語(yǔ)法格式:DROP[TEMPORARY]TABLE[IFEXISTS]tbl_name[,tbl_name]...【例2.13】刪除表員工信息表。droptable員工信息表;【例2.14】刪除表銷售信息表。droptableifexists銷售信息表;注意:為防止要?jiǎng)h除的數(shù)據(jù)表不存在,出現(xiàn)提示錯(cuò)誤,與創(chuàng)建數(shù)據(jù)庫(kù)相同,可以在刪除數(shù)據(jù)表時(shí)使用IFEXISTS從句。意為:如果存在這個(gè)數(shù)據(jù)表就刪除它,這樣不論這個(gè)數(shù)據(jù)表是否存在,均可以不顯示錯(cuò)誤信息。注意:這個(gè)命令必須小心使用,因?yàn)樗鼘h除指定的整個(gè)數(shù)據(jù)表(包括其中的數(shù)據(jù))。2.2.6刪除數(shù)據(jù)表任務(wù)三

數(shù)據(jù)表記錄操作通過(guò)INSERT或REPLACE語(yǔ)句完成向數(shù)據(jù)表中插入一行或多行數(shù)據(jù)的操作。語(yǔ)法格式:INSERT[LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name,...)]VALUES({expr|DEFAULT},...),(...),...|SETcol_name={expr|DEFAULT},...[ONDUPLICATEKEYUPDATEcol_name=expr,...]2.3.1插入表數(shù)據(jù)從INSERT的語(yǔ)法格式可以看到,使用INSERT語(yǔ)句可以向表中插入一行數(shù)據(jù),也可以插入多行數(shù)據(jù),插入的行可以給出每列的值,也可只給出部分列的值,還可以向表中插入其他表的數(shù)據(jù)。使用INSERTINTO…SELECT…,可以快速地從一個(gè)或多個(gè)表中向一個(gè)表插入多個(gè)行。語(yǔ)法格式如下:INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name,...)]SELECT...[ONDUPLICATEKEYUPDATEcol_name=expr,...]2.3.1插入表數(shù)據(jù)從INSERT的語(yǔ)法格式可以看到,使用INSERT語(yǔ)句可以向表中插入一行數(shù)據(jù),也可以插入多行數(shù)據(jù),插入的行可以給出每列的值,也可只給出部分列的值,還可以向表中插入其他表的數(shù)據(jù)。使用INSERTINTO…SELECT…,可以快速地從一個(gè)或多個(gè)表中向一個(gè)表插入多個(gè)行。語(yǔ)法格式如下:INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name,...)]SELECT...[ONDUPLICATEKEYUPDATEcol_name=expr,...]2.3.1插入表數(shù)據(jù)【例2.13】向yhdb數(shù)據(jù)庫(kù)的數(shù)據(jù)表employees中(表中列包括員工編號(hào)、員工姓名、員工性別、入職日期、聯(lián)系電話、家庭住址、工資收入、獎(jiǎng)金收入)中插入如下的一行:0010001張子婷02018-5-1813303161111 新華路3號(hào) 4700 1800insertintoemployeesvalues('0010001','張子婷',0,'2018-5-18',,'新華路3號(hào)',4700,1800);注意:(1)此例中,employees表中有8個(gè)字段,在values值的括號(hào)中要按照這8個(gè)字段的順序依次插入數(shù)據(jù)值,不能顛倒順序,也不能有字段不插入值。(2)數(shù)據(jù)值為字符串類型(如char、varchar、text等)和日期時(shí)間類型(如date、time等),要把值用引號(hào)括起來(lái)。數(shù)據(jù)值為數(shù)值型(如tinyint、int、float等),可以直接寫值。(3)各數(shù)據(jù)字段值用“,”間隔,這里的標(biāo)點(diǎn)符號(hào)為英文標(biāo)點(diǎn)。2.3.1插入表數(shù)據(jù)【例2.14】向yhdb數(shù)據(jù)庫(kù)的數(shù)據(jù)表employees中(表中列包括員工編號(hào)、員工姓名、員工性別、入職日期、聯(lián)系電話、家庭住址、工資收入、獎(jiǎng)金收入)中插入如下的一行:0000000 張三 1 2018-5-18null null null(null表示家庭住址、工資收入、獎(jiǎng)金收入這3個(gè)字段為空值,暫不插入內(nèi)容。)第一種:insertintoemployeesvalues('0000000','張三',1,'2018-5-18',,null,null,null);第二種:insertintoemployees(員工編號(hào),員工姓名,員工性別,入職日期,聯(lián)系電話)values('0000000','張三',1,'2018-5-18',);第三種:(使用set子句)insertintoemployeesset員工編號(hào)='0000000',員工姓名='張三',員工性別=1,入職日期='2018-5-18',聯(lián)系電話=;2.3.1插入表數(shù)據(jù)【例2.15】完成例2.14之后,如果要插入如下一行數(shù)據(jù)庫(kù):其中學(xué)號(hào)為主鍵(PRIMARYKEY),現(xiàn)在想再插入下列一行數(shù)據(jù):0000000 李四 1 2018-6-18null null nullinsertintoemployeesvalues('0000000','李四',1,'2018-6-18',,null,null,null);命令行將提示錯(cuò)誤。replaceintoemployeesvalues('0000000','李四',1,'2018-6-18',,null,null,null);命令行沒(méi)有提示錯(cuò)誤。2.3.1插入表數(shù)據(jù)MySQL也支持圖片信息的插入存儲(chǔ)。圖片信息的插入存儲(chǔ)方式有兩種:(1)圖片信息插入存儲(chǔ)在數(shù)據(jù)表中,可以采用直接插入要存儲(chǔ)的圖片的路徑,也就是以路徑的形式來(lái)存儲(chǔ)。(2)圖片信息插入存儲(chǔ)的數(shù)據(jù)表中,也可以使用LOAD_FILE函數(shù),也就是以直接插入要存儲(chǔ)的圖片本身。第一種,采用直接插入要存儲(chǔ)的圖片的路徑:insertintotest(圖片)values('D:\IMAGE\picOne.jpg');第二種,采用直接插入要存儲(chǔ)的圖片本身:insertintotest(圖片)values(LOAD_FILE('D:\IMAGE\picture.jpg'));要說(shuō)明的是:不論采用哪種方法,我們并不能在MySQL運(yùn)行的過(guò)程中看到這個(gè)圖片的圖像,只能結(jié)合其他的開(kāi)發(fā)語(yǔ)言,如PHP、JSP、python,在開(kāi)發(fā)出的網(wǎng)站或信息系統(tǒng)中才能顯示數(shù)據(jù)表中存儲(chǔ)的圖片圖像。2.3.1插入表數(shù)據(jù)1.使用DELETE語(yǔ)句刪除數(shù)據(jù)從單個(gè)表中刪除,語(yǔ)法格式:DELETE[LOW_PRIORITY][QUICK][IGNORE]FROMtbl_name[WHEREwhere_definition][ORDERBY...][LIMITrow_count]2.3.2刪除表數(shù)據(jù)【例2.16】目前數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中有如下數(shù)據(jù):2.3.2刪除表數(shù)據(jù)要?jiǎng)h除第一條記錄員工姓名為“李四”的信息可使用DELETE語(yǔ)句:useyhdb;deletefromemployeeswhere員工姓名='李四';要全部刪除此表中的數(shù)據(jù)記錄是:deletefromemployees;2.使用TRUNCATETABLE語(yǔ)句刪除表數(shù)據(jù)刪除指定表中的所有數(shù)據(jù),也可以使用TRUNCATETABLE語(yǔ)句,因此該語(yǔ)句也被稱為是清除表數(shù)據(jù)語(yǔ)句。語(yǔ)法格式:TRUNCATETABLEtable_name;說(shuō)明:使用TRUNCATETABLE語(yǔ)句要謹(jǐn)慎,因?yàn)槭褂么苏Z(yǔ)句將刪除數(shù)據(jù)表中的所有數(shù)據(jù),該語(yǔ)句的操作是不能恢復(fù)的。2.3.2刪除表數(shù)據(jù)TRUNCATETABLE在功能上與不帶WHERE子句的DELETE語(yǔ)句相同,即:deletefromemployees;等價(jià)于truncatetableemployees;這兩條語(yǔ)句都表示刪除數(shù)據(jù)表中的所有記錄行。區(qū)別在于TRUNCATETABLE比DELETE刪除的速度更快,并且使用的系統(tǒng)和事務(wù)日志資源更少。DELETE語(yǔ)句每次刪除一行,需要在事務(wù)日志中為所刪除的每行記錄一項(xiàng)。而TRUNCATETABLE通過(guò)釋放存儲(chǔ)表數(shù)據(jù)所用的數(shù)據(jù)頁(yè)來(lái)刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁(yè)的釋放。使用TRUNCATETABLE,AUTO_INCREMENT計(jì)數(shù)器被重新設(shè)置為該列的初始值。對(duì)于參與了索引和視圖的表,不能使用TRUNCATETABLE刪除數(shù)據(jù),而應(yīng)使用DELETE語(yǔ)句。2.3.2刪除表數(shù)據(jù)要更新數(shù)據(jù)表中的一行數(shù)據(jù),可以使用UPDATE語(yǔ)句,UPDATE可以用來(lái)更新一個(gè)表,也可以更新多個(gè)表。更新單個(gè)表,語(yǔ)法格式:UPDATE[LOW_PRIORITY][IGNORE]tbl_nameSETcol_name1=expr1[,col_name2=expr2...][WHEREwhere_definition][ORDERBY...][LIMITrow_count]2.3.3更新表數(shù)據(jù)【例2.17】更新數(shù)據(jù)庫(kù)yhdb中的數(shù)據(jù)表employees的數(shù)據(jù)記錄,將員工編號(hào)“0010001”的員工姓名更新為“張婷”,再將其工資收入增加500元。updateemployeesset員工姓名='張婷',工資收入=工資收入+500where員工編號(hào)='0010001';然后,可以使用查詢語(yǔ)句:select*fromemployees;進(jìn)行查看,發(fā)現(xiàn)已經(jīng)更新完畢。如果上述的更新語(yǔ)句不添加where子句,即:updateemployeesset員工姓名='張婷',工資收入=工資收入+500;如果employees數(shù)據(jù)表中有多條記錄,將所有記錄行都變成員工姓名為“張婷”,并且工資收入都增加500元。2.3.3更新表數(shù)據(jù)1.SHOW語(yǔ)句SHOWTABLES或SHOWTABLESFROMDATABASE_NAME:顯示當(dāng)前數(shù)據(jù)庫(kù)中所有表的名稱。SHOWDATABASES:顯示MySQL中所有數(shù)據(jù)庫(kù)的名稱。SHOWCOLUMNSFROMtable_nameFROMdatabase_name或SHOWCOLUMNSFROMdatabase_name.table_name:顯示表中各字段的名稱。SHOWGRANTSFORuser_name:顯示一個(gè)用戶的權(quán)限,顯示結(jié)果類似于GRANT命令。SHOWINDEXFROMtable_name:顯示表的索引。SHOWSTATUS:顯示一些系統(tǒng)特定資源的信息,例如,正在運(yùn)行的線程數(shù)量。SHOWVARIABLES:顯示系統(tǒng)變量的名稱和值。SHOWPROCESSLIST:顯示系統(tǒng)中正在運(yùn)行的所有進(jìn)程,也就是當(dāng)前正在執(zhí)行的查詢。大多數(shù)用戶可以查看他們自己的進(jìn)程,但是如果他們擁有PROCESS權(quán)限,就可以查看所有人的進(jìn)程,包括密碼。SHOWTABLESTATUS:顯示當(dāng)前使用或者指定的DATABASE中的每個(gè)表的信息。信息包括表類型和表的最新更新時(shí)間。2.3.4SHOW和DESCRIBE語(yǔ)句1.SHOW語(yǔ)句SHOWPRIVILEGES:顯示服務(wù)器所支持的不同權(quán)限。SHOWCREATEDATABASEdatabase_name:顯示創(chuàng)建某一個(gè)數(shù)據(jù)庫(kù)的CREATEDATABASE語(yǔ)句SHOWCREATETABLEtable_name:顯示創(chuàng)建一個(gè)表的CREATETABLE語(yǔ)句。SHOWEVENTS:顯示所有事件的列表。SHOWINNODBSTATUS:顯示InnoDB存儲(chǔ)引擎的狀態(tài)。SHOWLOGS:顯示BDB存儲(chǔ)引擎的日志。SHOWWARNINGS:顯示最后一個(gè)執(zhí)行的語(yǔ)句所產(chǎn)生的錯(cuò)誤、警告和通知。SHOWERRORS:只顯示最后一個(gè)執(zhí)行語(yǔ)句所產(chǎn)生的錯(cuò)誤。SHOW[STORAGE]ENGINES:顯示安裝后的可用存儲(chǔ)引擎和默認(rèn)引擎。SHOWPROCEDURESTATUS:顯示數(shù)據(jù)庫(kù)中所有存儲(chǔ)過(guò)程基本信息,包括所屬數(shù)據(jù)庫(kù)、存儲(chǔ)過(guò)程名稱、創(chuàng)建時(shí)間等。SHOWCREATEPROCEDUREsp_name:顯示某一個(gè)存儲(chǔ)過(guò)程的詳細(xì)信息。2.3.4SHOW和DESCRIBE語(yǔ)句【例2.19】使用SHOW語(yǔ)句,顯示當(dāng)前所有數(shù)據(jù)庫(kù)的名稱,顯示數(shù)據(jù)庫(kù)yhdb中的各個(gè)數(shù)據(jù)表的名稱,顯示數(shù)據(jù)庫(kù)yhdb中數(shù)據(jù)表employees的各個(gè)字段的名稱。顯示當(dāng)前所有數(shù)據(jù)庫(kù)的名稱:showdatabases;使用數(shù)據(jù)庫(kù)yhdb,顯示其中各個(gè)數(shù)據(jù)表的名稱:useyhdb;showtables;顯示數(shù)據(jù)表employees的各個(gè)字段的名稱:showcolumnsfromemployees;2.3.4SHOW和DESCRIBE語(yǔ)句2.DESCRIBE語(yǔ)句DESCRIBE語(yǔ)句用于顯示表中各列的信息,結(jié)果等于SHOWcolumnsfrom語(yǔ)句。語(yǔ)法格式:{DESCRIBE|DESC}tb1_name[col_name|wild]【例2.20】使用DESCRIBE語(yǔ)句查看yhdb數(shù)據(jù)庫(kù)中的employees表結(jié)構(gòu)信息,也就是各字段的信息。useyhdb;describeemployees;【例2.21】使用DESC語(yǔ)句查看yhdb數(shù)據(jù)庫(kù)中的employees表中員工姓名列的信息。descemployees員工姓名;2.3.4SHOW和DESCRIBE語(yǔ)句單元三

查看數(shù)據(jù)任務(wù)一

單表查詢使用數(shù)據(jù)庫(kù)和表的主要目的是存儲(chǔ)數(shù)據(jù)以便在需要時(shí)進(jìn)行檢索、統(tǒng)計(jì)或組織輸出,通過(guò)SQL語(yǔ)句的查詢可以從表或視圖中迅速方便地檢索數(shù)據(jù)。SQL的SELECT語(yǔ)句可以實(shí)現(xiàn)對(duì)表的選擇、投影及連接操作。SELECT語(yǔ)句可以從一個(gè)或多個(gè)表中選取特定的行和列,結(jié)果通常是生成一個(gè)臨時(shí)表。在執(zhí)行過(guò)程中系統(tǒng)根據(jù)用戶的標(biāo)準(zhǔn)從數(shù)據(jù)庫(kù)中選出匹配的行和列,并將結(jié)果放到臨時(shí)的表中,這就是實(shí)現(xiàn)選擇和投影運(yùn)算的一個(gè)形式。下面介紹SELECT語(yǔ)句,它是SQL的核心。查詢SELECT[ALL|DISTINCT|DISTINCTROW][HIGH_PRIORITY][STRAIGHT_JOIN][SQL_SMALL_RESULT][SQL_BIG_RESULT][SQL_BUFFER_RESULT][SQL_CACHE|SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]select_expr,...[INTOOUTFILE'file_name'export_options|INTODUMPFILE'file_name'][FROMtable_reference[,table_reference]…] /*FROM子句*/[WHEREwhere_definition] /*WHERE子句*/[GROUPBY{col_name|expr|position}[ASC|DESC],...[WITHROLLUP]] /*GROUPBY子句*/[HAVINGwhere_definition] /*HAVING子句*/[ORDERBY{col_name|expr|position} [ASC|DESC],...] /*ORDERBY子句*/[LIMIT{[offset,]row_count|row_countOFFSEToffset}] /*LIMIT子句*/查詢使用SELECT語(yǔ)句選擇一個(gè)表中的某些列,各列名之間要以逗號(hào)分隔。【例3.1】查詢數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中所有員工的員工姓名、入職日期和工資收入。語(yǔ)句如下:useyhdb;select員工姓名,入職日期,工資收入fromemployees;【例3.2】查詢數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中所有員工的全部信息。語(yǔ)句如下:select*fromemployees;說(shuō)明:上述語(yǔ)句中的“*”號(hào),表示數(shù)據(jù)表中的所有字段。3.1.1選擇指定的列當(dāng)希望查詢結(jié)果中的某些列或所有列顯示時(shí)且使用自己選擇的列標(biāo)題時(shí),可以在列名之后使用AS子句來(lái)更改查詢結(jié)果的列別名。語(yǔ)法格式為:SELECTcolumn_name[AS]column_alias【例3.3】查詢數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中所有員工的員工姓名、家庭住址和工資收入,結(jié)果中的各字段名分別定義為employeesname、address和income。語(yǔ)句如下:select員工姓名as'employeesname',家庭住址asaddress,工資收入incomefromemployees;注意:(1)字段名稱當(dāng)自定義的列標(biāo)題中含有空格時(shí),必須使用引號(hào)將標(biāo)題括起來(lái),如'employeesname'。(2)“AS”可以省略。3.1.2定義新的字段名在對(duì)表進(jìn)行查詢時(shí),有時(shí)對(duì)所查詢的某些字段,希望得到的是一種概念而不是具體的數(shù)據(jù)。例如查詢數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中所有員工的工資收入,所希望知道的是工資收入的總體情況,這時(shí),就可以用等級(jí)來(lái)替換工資收入的具體數(shù)字。要替換查詢結(jié)果中的數(shù)據(jù),則要使用查詢中的CASE表達(dá)式,格式為:CASEWHEN條件1THEN表達(dá)式1WHEN條件2THEN表達(dá)式2……ELSE表達(dá)式END3.1.3替換查詢結(jié)果中的數(shù)據(jù)【例3.4】查詢數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中所有員工的員工姓名,入職日期和工資收入,對(duì)其工資收入按以下規(guī)則進(jìn)行替換:若工資收入小于等于4000元,替換為“較低工資”;若工資收入大于4000元并且小于4500元,替換為“中等工資”;若工資收入大于等于4500元,替換為“較高工資”,并將工資收入字段名更改為“工資等級(jí)”。select員工姓名,入職日期,casewhen工資收入<=4000then'較低工資'when工資收入>4000and工資收入<4500then'中等工資'else'較高工資'endas'工資等級(jí)'fromemployees;3.1.3替換查詢結(jié)果中的數(shù)據(jù)使用SELECT對(duì)列進(jìn)行查詢時(shí),在結(jié)果中可以輸出對(duì)列值計(jì)算后的值,即SELECT子句可使用表達(dá)式作為結(jié)果,格式為:SELECTexpression[,expression]【例3.5】計(jì)算數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中所有員工的總收入(總收入=工資收入+獎(jiǎng)金收入)。select員工姓名,工資收入+獎(jiǎng)金收入as'總收入'fromemployees;3.1.4計(jì)算列值對(duì)表只選擇其某些列時(shí),可能會(huì)出現(xiàn)重復(fù)行。例如,若對(duì)數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中只選擇工資收入,則出現(xiàn)多行重復(fù)的情況。可以使用DISTINCT或DISTINCTROW關(guān)鍵字消除結(jié)果集中的重復(fù)行,其格式是:SELECTDISTINCT|DISTINCTROWcolumn_name[,column_name…]其含義是對(duì)結(jié)果集中的重復(fù)行只選擇一個(gè),保證行的唯一性?!纠?.6】對(duì)數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中只選擇工資收入,消除結(jié)果集中的重復(fù)行。selectdistinct工資收入fromemployees;3.1.5消除結(jié)果集中的重復(fù)行SELECT子句的表達(dá)式中還可以包含所謂的聚合函數(shù)。聚合函數(shù)常常用于對(duì)一組值進(jìn)行計(jì)算,然后返回單個(gè)值。除COUNT函數(shù)外,聚合函數(shù)都會(huì)忽略空值。聚合函數(shù)通常與GROUPBY子句一起使用。如果SELECT語(yǔ)句中有一個(gè)GROUPBY子句,則這個(gè)聚合函數(shù)對(duì)所有列起作用,如果沒(méi)有,則SELECT語(yǔ)句只產(chǎn)生一行作為結(jié)果。3.1.6聚合函數(shù)1.COUNT函數(shù)聚合函數(shù)中最經(jīng)常使用的是COUNT()函數(shù),用于統(tǒng)計(jì)組中滿足條件的行數(shù)或總行數(shù),返回SELECT語(yǔ)句檢索到的行中非NULL值的數(shù)目,若找不到匹配的行,則返回0。語(yǔ)法格式為:COUNT({[ALL|DISTINCT]expression}|*)其中,expression是一個(gè)表達(dá)式,其數(shù)據(jù)類型是除BLOB或TEXT之外的任何類型。ALL表示對(duì)所有值進(jìn)行運(yùn)算,DISTINCT表示去除重復(fù)值,默認(rèn)為ALL。使用COUNT(*)時(shí)將返回檢索行的總數(shù)目,不論其是否包含NULL值?!纠?.7】求數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中員工的總?cè)藬?shù)。selectcount(*)as'員工總?cè)藬?shù)'fromemployees;【例3.8】統(tǒng)計(jì)數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中有獎(jiǎng)金收入的員工人數(shù)。selectcount(獎(jiǎng)金收入)as有獎(jiǎng)金人數(shù)fromemployees;3.1.6聚合函數(shù)2.MAX和MINMAX和MIN分別用于求表達(dá)式中所有值項(xiàng)的最大值與最小值,語(yǔ)法格式為:MAX/MIN([ALL|DISTINCT]expression)其中,expression是常量、列、函數(shù)或表達(dá)式,其數(shù)據(jù)類型可以是數(shù)字、字符和時(shí)間日期類型?!纠?.9】求數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中員工的最高工資收入和最低工資收入。SELECTMAX(成績(jī)),MIN(成績(jī))selectmax(工資收入)最高工資,min(工資收入)最低工資fromemployees;注意:當(dāng)給定字段上只有空值或檢索出的中間結(jié)果為空時(shí),MAX和MIN函數(shù)的值也為空。3.1.6聚合函數(shù)3.SUM函數(shù)和AVG函數(shù)SUM和AVG分別用于求表達(dá)式中所有值項(xiàng)的總和與平均值,語(yǔ)法格式為:SUM/AVG([ALL|DISTINCT]expression)其中,expression是常量、列、函數(shù)或表達(dá)式,其數(shù)據(jù)類型只能是數(shù)值型數(shù)據(jù)?!纠?.10】求數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中員工的總工資收入和總獎(jiǎng)金收入。selectsum(工資收入)總工資收入,sum(獎(jiǎng)金收入)總獎(jiǎng)金收入fromemployees;【例3.11】求數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中員工的平均工資收入和平均獎(jiǎng)金收入。selectavg(工資收入)平均工資收入,avg(獎(jiǎng)金收入)平均獎(jiǎng)金收入fromemployees;3.1.6聚合函數(shù)4.VARIANCE和STDDEV(STD)函數(shù)VARIANCE和STDDEV函數(shù)分別用于計(jì)算特定的表達(dá)式中的所有值的方差和標(biāo)準(zhǔn)差。語(yǔ)法格式:VARIANCE/STDDEV([ALL|DISTINCT]expression)【例3.12】求數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中員工工資收入的方差。selectvariance(工資收入)工資收入方差fromemployees;說(shuō)明:方差的計(jì)算按照以下幾個(gè)步驟進(jìn)行。①計(jì)算相關(guān)列的平均值;②求列中的每一個(gè)值和平均值的差;③計(jì)算差值的平方的總和;④用總和除以(列中的)值得結(jié)果。STDDEV函數(shù)用于計(jì)算標(biāo)準(zhǔn)差。標(biāo)準(zhǔn)差等于方差的平均根。所以,STDDEV(…)和SQRT(VARIANCE(…))這兩個(gè)表達(dá)式是相等的。3.1.6聚合函數(shù)【例3.13】求數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中員工工資收入的標(biāo)準(zhǔn)差。selectstd(工資收入)工資收入標(biāo)準(zhǔn)差fromemployees;STDDEV可以縮寫為STD,這對(duì)結(jié)果沒(méi)有影響。3.1.6聚合函數(shù)5.GROUP_CONCAT函數(shù)MySQL支持一個(gè)特殊的聚合函數(shù)GROUP_CONCAT函數(shù)。該函數(shù)返回來(lái)自一個(gè)組指定列的所有非NULL值,這些值一個(gè)接著一個(gè)放置,中間用逗號(hào)隔開(kāi),并表示為一個(gè)長(zhǎng)長(zhǎng)的字符串。這個(gè)字符串的長(zhǎng)度是有限制的,標(biāo)準(zhǔn)值是1024。語(yǔ)法格式為:GROUP_CONCAT({[ALL|DISTINCT]expression}|*)【3.14】求數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中所有工資收入是4500元的員工姓名。selectgroup_concat(員工姓名)fromemployeeswhere工資收入=4500;3.1.6聚合函數(shù)6.BIT_AND、BIT_OR和BIT_XOR與二進(jìn)制運(yùn)算符|(或)、&(與)和^(異或)相對(duì)應(yīng)的聚合函數(shù)也存在,分別是BIT_OR、BIT_AND、BIT_XOR。例如,函數(shù)BIT_OR在一字段中的所有值上執(zhí)行一個(gè)二進(jìn)制OR。語(yǔ)法格式為:BIT_AND|BIT_OR|BIT_XOR({[ALL|DISTINCT]expression}|*)例如,有一個(gè)數(shù)據(jù)表demo,其中有一數(shù)據(jù)類型為int型的字段column,該字段有2個(gè)數(shù)據(jù)值,分別是1、3,如執(zhí)行:selectbin(bit_or(column))fromdemo;則結(jié)果為:011。其中BIN函數(shù)用于將結(jié)果轉(zhuǎn)換為二進(jìn)制位。因?yàn)椤?”對(duì)應(yīng)的二進(jìn)制值是“001”,“3”對(duì)應(yīng)的二進(jìn)制值是“011”,bit_or(column)的含義是“001|011”,則為“011”。如果把bit_or替換為bit_and,則結(jié)果為:001。如果把bit_or替換為bit_xor,則結(jié)果為:010。3.1.6聚合函數(shù)任務(wù)二

子查詢WHERE子句必須緊跟FROM子句之后,在WHERE子句中,使用一個(gè)條件從FROM子句的中間結(jié)果中選取行。WHERE子句會(huì)根據(jù)條件對(duì)FROM子句的中間結(jié)果中的行一行一行地進(jìn)行判斷,當(dāng)條件為TRUE的時(shí)候,一行就被包含到WHERE子句的中間結(jié)果中。說(shuō)明:IN關(guān)鍵字既可以指定范圍,也可以表示子查詢。在SQL中,返回邏輯值(TRUE或FALSE)的運(yùn)算符或關(guān)鍵字都可稱為謂詞。判定運(yùn)算包括比較運(yùn)算、模式匹配、范圍比較、空值比較和子查詢。WHERE子句比較運(yùn)算符用于比較兩個(gè)表達(dá)式值,MySQL支持的比較運(yùn)算符有:=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<=>(相等或都等于空)、<>(不等于)、!=(不等于)。比較運(yùn)算的語(yǔ)法格式為:expression{=|<|<=|>|>=|<=>|<>|!=}expression其中expression是除TEXT和BLOB外類型的表達(dá)式。當(dāng)兩個(gè)表達(dá)式值均不為空值(NULL)時(shí),除了“<=>”運(yùn)算符,其他比較運(yùn)算返回邏輯值TRUE(真)或FALSE(假);而當(dāng)兩個(gè)表達(dá)式值中有一個(gè)為空值或都為空值時(shí),將返回UNKNOWN。3.2.1比較運(yùn)算【例3.15】查詢數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中員工編號(hào)為0020002的員工姓名、家庭住址和聯(lián)系電話。select員工姓名,家庭住址,聯(lián)系電話fromemployeeswhere員工編號(hào)='0020002';【例3.16】查詢數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中工資收入大于等于4600的員工姓名、員工性別和入職日期。select員工姓名,員工性別,入職日期fromemployeeswhere工資收入>=4600;3.2.1比較運(yùn)算MySQL有一個(gè)特殊的等于運(yùn)算符“<=>”,當(dāng)兩個(gè)表達(dá)式彼此相等或都等于空值時(shí),它的值為TRUE,其中有一個(gè)空值或都是非空值但不相等,這個(gè)條件就是FALSE。沒(méi)有UNKNOWN的情況?!纠?.17】查詢數(shù)據(jù)庫(kù)yhdb的數(shù)據(jù)表employees中獎(jiǎng)金收入是NULL的情況。select*fromemployeeswhere獎(jiǎng)金收入<=>null;執(zhí)行結(jié)果如下:Emptyset這里的執(zhí)行結(jié)果“Emptyset”表示沒(méi)有查詢出符合要求的數(shù)據(jù)記錄,沒(méi)有獎(jiǎng)金收入是NULL的情況?!?lt;=>”是一個(gè)MySQL的特殊的等于運(yùn)算符,表示“是”的含義,也

溫馨提示

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