《MySQL教程(第4版)》高職全套教學(xué)課件_第1頁(yè)
《MySQL教程(第4版)》高職全套教學(xué)課件_第2頁(yè)
《MySQL教程(第4版)》高職全套教學(xué)課件_第3頁(yè)
《MySQL教程(第4版)》高職全套教學(xué)課件_第4頁(yè)
《MySQL教程(第4版)》高職全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩559頁(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í)用教程(第4版)》第1章

數(shù)據(jù)庫(kù)基礎(chǔ)第2章

數(shù)據(jù)類(lèi)型第3章

數(shù)據(jù)庫(kù)和表第4章

查詢(xún)和視圖第5章

索引與數(shù)據(jù)完整性第6章SQL擴(kuò)展語(yǔ)言和系統(tǒng)函數(shù)第7章

過(guò)程式數(shù)據(jù)庫(kù)對(duì)象第8章

數(shù)據(jù)庫(kù)備份與恢復(fù)第9章

用戶管理和權(quán)限控制第10章

事務(wù)管理和多用戶操作全套可編輯PPT課件

第1章

數(shù)據(jù)庫(kù)基礎(chǔ)——數(shù)據(jù)庫(kù)基本概念全套可編輯PPT課件

01數(shù)據(jù)庫(kù)及其系統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)及其系統(tǒng)1.?dāng)?shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱(chēng)DB)是存放數(shù)據(jù)的倉(cāng)庫(kù),而且這些數(shù)據(jù)存在一定的關(guān)聯(lián),并按一定的格式存放在計(jì)算機(jī)內(nèi)。例如,把一個(gè)學(xué)校的學(xué)生、課程、成績(jī)等數(shù)據(jù)有序地組織并存放在計(jì)算機(jī)內(nèi),就構(gòu)成一個(gè)數(shù)據(jù)庫(kù)。2.?dāng)?shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagementSystem,簡(jiǎn)稱(chēng)DBMS)按一定的數(shù)據(jù)模型組織數(shù)據(jù)形成數(shù)據(jù)庫(kù),并對(duì)其進(jìn)行管理。簡(jiǎn)單地說(shuō),DBMS就是管理數(shù)據(jù)庫(kù)的系統(tǒng)(軟件)。數(shù)據(jù)庫(kù)管理員(DataBaseAdministrator,簡(jiǎn)稱(chēng)DBA)通過(guò)DBMS對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理。數(shù)據(jù)庫(kù)及其系統(tǒng)3.?dāng)?shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)與操作數(shù)據(jù)庫(kù)的應(yīng)用程序,加上支撐它們的硬件平臺(tái)、軟件平臺(tái)和與數(shù)據(jù)庫(kù)有關(guān)的人員一起構(gòu)成一個(gè)完整的數(shù)據(jù)庫(kù)系統(tǒng)。如圖所示描述了數(shù)據(jù)庫(kù)系統(tǒng)的構(gòu)成。02數(shù)

據(jù)

型層次模型網(wǎng)狀模型關(guān)系模型數(shù)據(jù)模型1.層次模型層次模型將數(shù)據(jù)組織成一對(duì)多關(guān)系的結(jié)構(gòu),采用關(guān)鍵字來(lái)訪問(wèn)其中每一層次的每一部分。它存取方便且速度快;結(jié)構(gòu)清晰,容易理解;容易實(shí)現(xiàn)數(shù)據(jù)修改和數(shù)據(jù)庫(kù)擴(kuò)展;檢索關(guān)鍵屬性十分方便。但缺點(diǎn)是結(jié)構(gòu)不夠靈活;同一屬性的數(shù)據(jù)要存儲(chǔ)多次,冗余大;不適合拓?fù)淇臻g數(shù)據(jù)的組織。如圖所示為按層次模型組織的數(shù)據(jù)示例。數(shù)據(jù)模型2.網(wǎng)狀模型網(wǎng)狀模型是具有多對(duì)關(guān)系的數(shù)據(jù)組織方式。它能明確而方便地表示數(shù)據(jù)間的復(fù)雜關(guān)系;數(shù)據(jù)冗余小。但網(wǎng)狀結(jié)構(gòu)的復(fù)雜,增加了用戶查詢(xún)和定位的困難;需要存儲(chǔ)數(shù)據(jù)間聯(lián)系的指針,使得數(shù)據(jù)量增大;數(shù)據(jù)的修改不方便。如圖所示為按網(wǎng)狀模型組織的數(shù)據(jù)示例。數(shù)據(jù)模型3.關(guān)系模型關(guān)系模型以記錄組或二維數(shù)據(jù)表的形式組織數(shù)據(jù)。例如,在學(xué)生成績(jī)管理系統(tǒng)的3個(gè)表中,“學(xué)生”表涉及的主要信息有學(xué)號(hào)、姓名、性別、出生時(shí)間、專(zhuān)業(yè)、總學(xué)分和備注;“課程”表涉及的主要信息有課程號(hào)、課程名、開(kāi)課學(xué)期、學(xué)時(shí)和學(xué)分;“成績(jī)”表涉及的主要信息有學(xué)號(hào)、課程號(hào)和成績(jī)。如表1、表2和表3所示分別描述了這3個(gè)表的部分?jǐn)?shù)據(jù)。表1“學(xué)生”表學(xué)號(hào)姓名性別出生時(shí)間專(zhuān)業(yè)總學(xué)分備注081101王林男1994-02-10計(jì)算機(jī)50

081103王燕女1993-10-06計(jì)算機(jī)50

081108林一帆男1993-08-05計(jì)算機(jī)52已提前修完一門(mén)課程081202王林男1993-01-29通信工程40有一門(mén)課程不及格,待補(bǔ)考081204馬琳琳女1993-02-10通信工程42

數(shù)據(jù)模型表2“課程”表課程號(hào)課程名開(kāi)課學(xué)期學(xué)時(shí)學(xué)分0101計(jì)算機(jī)基礎(chǔ)18050102程序設(shè)計(jì)與語(yǔ)言26840206離散數(shù)學(xué)4684表3“成績(jī)”表學(xué)號(hào)課程號(hào)成績(jī)學(xué)號(hào)課程號(hào)成績(jī)08110110180081108101850811011027808110810264081101206760811082068708110310162081202101650811031027008120410191數(shù)據(jù)模型表中的一行稱(chēng)為一個(gè)記錄,一列稱(chēng)為一個(gè)字段,每列的標(biāo)題(列名)稱(chēng)為字段名。如果給每個(gè)關(guān)系表起一個(gè)名字,則有若干個(gè)字段的關(guān)系表可表示為如下形式:表名(字段名,...)通常把關(guān)系表的結(jié)構(gòu)稱(chēng)為關(guān)系模式。在關(guān)系表中,如果一個(gè)字段或幾個(gè)字段組合的值可唯一標(biāo)識(shí)其對(duì)應(yīng)的記錄,則稱(chēng)該字段或字段組合為碼。03關(guān)

數(shù)

據(jù)

庫(kù)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)1.關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)從當(dāng)前國(guó)際數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagementSystem,簡(jiǎn)稱(chēng)DBMS)排名中可以看出來(lái),關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RelationalDatabaseManagementSystem,簡(jiǎn)稱(chēng)RDBMS)絕對(duì)是DBMS的主流。RDBMS就是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),其中使用最多的RDBMS分別是Oracle、MySQL和SQLServer。MySQL是目前流行的開(kāi)放關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)之一。2.關(guān)系型數(shù)據(jù)庫(kù)語(yǔ)言結(jié)構(gòu)化查詢(xún)語(yǔ)言(StructuredQueryLanguage,簡(jiǎn)稱(chēng)SQL)就是關(guān)系型數(shù)據(jù)庫(kù)的查詢(xún)語(yǔ)言,用于定義數(shù)據(jù)庫(kù)及其對(duì)象,操作數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)和控制操作數(shù)據(jù)庫(kù)的安全性等,所有提供數(shù)據(jù)庫(kù)產(chǎn)品的廠商都支持SQL語(yǔ)言,但它們又各有其特點(diǎn)。為了在各個(gè)數(shù)據(jù)庫(kù)廠商之間取得更大的統(tǒng)一性,美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)(AmericanNationalStandardsInstitute,簡(jiǎn)稱(chēng)ANSI)于1986年發(fā)布了第一個(gè)SQL標(biāo)準(zhǔn),并于1989年發(fā)布了第二個(gè)版本,該版本已經(jīng)被廣泛地采用。ANSI在1992年更新了SQL標(biāo)準(zhǔn)的版本,即SQL92和SQL2,并于1999年再次更新為SQL99和SQL3標(biāo)準(zhǔn)。第1章

數(shù)據(jù)庫(kù)基礎(chǔ)——數(shù)據(jù)庫(kù)設(shè)計(jì)01概念模型一對(duì)一的聯(lián)系(1∶1)一對(duì)多的聯(lián)系(1∶n)多對(duì)多的聯(lián)系(m∶n)概念模型概念模型用于信息世界的建模,常用的E-R模型、擴(kuò)充的E-R模型、面向?qū)ο竽P图爸^詞模型。通常,E-R模型把每一類(lèi)數(shù)據(jù)對(duì)象的個(gè)體稱(chēng)為“實(shí)體”,把每一類(lèi)對(duì)象個(gè)體的集合稱(chēng)為“實(shí)體集”。例如,在學(xué)生成績(jī)管理系統(tǒng)中主要涉及“學(xué)生”和“課程”兩個(gè)實(shí)體集,其他非主要的實(shí)體可以很多,如班級(jí)、班長(zhǎng)、任課教師、輔導(dǎo)員。每個(gè)實(shí)體集涉及的信息項(xiàng)稱(chēng)為屬性。就“學(xué)生”實(shí)體集而言,它的屬性有學(xué)號(hào)、姓名、性別、出生時(shí)間、專(zhuān)業(yè)、總學(xué)分和備注。“課程”實(shí)體集屬性有課程號(hào)、課程名、開(kāi)課學(xué)期、學(xué)時(shí)和學(xué)分。實(shí)體集中的實(shí)體彼此是可區(qū)別的。如果實(shí)體集中的屬性或最小屬性組合的值能唯一標(biāo)識(shí)其對(duì)應(yīng)實(shí)體,則將該屬性或?qū)傩越M合稱(chēng)為碼。碼可能有多個(gè),對(duì)于每一個(gè)實(shí)體集,可指定一個(gè)碼為主碼。實(shí)體集A和實(shí)體集B之間存在各種關(guān)系,通常把這些關(guān)系稱(chēng)為“聯(lián)系”,將實(shí)體集及實(shí)體集聯(lián)系的圖示稱(chēng)為實(shí)體-聯(lián)系(EntityRelationship,E-R)模型。概念模型E-R圖就是E-R模型的描述方法,即實(shí)體-聯(lián)系圖。通常,關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)者使用E-R圖來(lái)對(duì)信息世界建模。在E-R圖中,使用矩形表示實(shí)體集,使用橢圓表示屬性,使用菱形表示聯(lián)系,用線段連接實(shí)體集與屬性,當(dāng)一個(gè)屬性或?qū)傩越M合指定為主碼時(shí),在實(shí)體集與屬性的連接線上標(biāo)記一條斜線。如圖所示,其中屬性用圓角矩形表示。概念模型1.一對(duì)一的聯(lián)系(1∶1)A中的一個(gè)實(shí)體最多與B中的一個(gè)實(shí)體相聯(lián)系,B中的一個(gè)實(shí)體也最多與A中的一個(gè)實(shí)體相聯(lián)系。例如,“班級(jí)”與“班長(zhǎng)”這兩個(gè)實(shí)體集之間的聯(lián)系是一對(duì)一的聯(lián)系,因?yàn)橐粋€(gè)班級(jí)只有一個(gè)班長(zhǎng),反過(guò)來(lái),一個(gè)班長(zhǎng)只屬于一個(gè)班級(jí)。“班級(jí)”與“班長(zhǎng)”兩個(gè)實(shí)體集的E-R模型如圖。概念模型2.一對(duì)多的聯(lián)系(1∶n)A中的一個(gè)實(shí)體可以與B中的多個(gè)實(shí)體相聯(lián)系,而B(niǎo)中的一個(gè)實(shí)體最多與A中的一個(gè)實(shí)體相聯(lián)系。例如,“班級(jí)”與“學(xué)生”這兩個(gè)實(shí)體集之間的聯(lián)系是一對(duì)多的聯(lián)系,因?yàn)橐粋€(gè)班級(jí)可有若干學(xué)生,反過(guò)來(lái),一個(gè)學(xué)生只能屬于一個(gè)班級(jí)?!鞍嗉?jí)”與“學(xué)生”兩個(gè)實(shí)體集的E-R模型如圖。概念模型3.多對(duì)多的聯(lián)系(m∶n)A中的一個(gè)實(shí)體可以與B中的多個(gè)實(shí)體相聯(lián)系,而B(niǎo)中的一個(gè)實(shí)體也可與A中的多個(gè)實(shí)體相聯(lián)系。例如,“學(xué)生”與“課程”這兩個(gè)實(shí)體集之間的聯(lián)系是多對(duì)多的聯(lián)系,因?yàn)橐粋€(gè)學(xué)生可選修多門(mén)課程,反過(guò)來(lái),一門(mén)課程可被多個(gè)學(xué)生選修。“學(xué)生”與“課程”兩個(gè)實(shí)體集的E-R模型如圖。02邏

型(1∶1)聯(lián)系的E-R圖到關(guān)系模式的轉(zhuǎn)換(1∶n)聯(lián)系的E-R圖到關(guān)系模式的轉(zhuǎn)換(m∶n)聯(lián)系的E-R圖到關(guān)系模式的轉(zhuǎn)換邏

型1.(1∶1)聯(lián)系的E-R圖到關(guān)系模式的轉(zhuǎn)換對(duì)于(1∶1)聯(liá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)系模式,其主碼可選參與聯(lián)系的實(shí)體集的任一方的主碼。例如,考慮圖描述的“班級(jí)(bj)”與“班長(zhǎng)(bz)”實(shí)體集通過(guò)屬于(sy)聯(lián)系的E-R模型,可設(shè)計(jì)如下關(guān)系模式(下橫線表示該字段為主碼):bj(班級(jí)編號(hào),院系,專(zhuān)業(yè),人數(shù))bz(學(xué)號(hào),姓名)sy(學(xué)號(hào),班級(jí)編號(hào))(2)聯(lián)系不單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,聯(lián)系的屬性及一方的主碼加入另一方實(shí)體集對(duì)應(yīng)的關(guān)系模式中。例如,考慮圖描述的“班級(jí)(bj)”與“班長(zhǎng)(bz)”實(shí)體集通過(guò)屬于(sy)聯(lián)系的E-R模型,可設(shè)計(jì)如下關(guān)系模式:bj(班級(jí)編號(hào),院系,專(zhuān)業(yè),人數(shù))bz(學(xué)號(hào),姓名,班級(jí)編號(hào))或者:bj(班級(jí)編號(hào),院系,專(zhuān)業(yè),人數(shù),學(xué)號(hào))bz(學(xué)號(hào),姓名)邏

型2.(1∶n)聯(lián)系的E-R圖到關(guān)系模式的轉(zhuǎn)換對(duì)于(1∶n)的聯(liá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)系模式的主碼。例如,考慮圖描述的“班級(jí)(bj)”與“學(xué)生(xs)”實(shí)體集E-R模型可設(shè)計(jì)如下關(guān)系模式:bj(班級(jí)編號(hào),院系,專(zhuān)業(yè),人數(shù))xs(學(xué)號(hào),姓名,性別,出生時(shí)間,專(zhuān)業(yè),總學(xué)分,備注)sy(學(xué)號(hào),班級(jí)編號(hào))(2)聯(lián)系不單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,則將聯(lián)系的屬性及1端的主碼加入n端實(shí)體集對(duì)應(yīng)的關(guān)系模式中,主碼仍為n端的主碼。例如,圖描述的“班級(jí)(bj)”與“學(xué)生(xs)”實(shí)體集E-R模型可設(shè)計(jì)如下關(guān)系模式:bj(班級(jí)編號(hào),院系,專(zhuān)業(yè),人數(shù))xs(學(xué)號(hào),姓名,性別,出生時(shí)間,專(zhuān)業(yè),總學(xué)分,備注,班級(jí)編號(hào))邏

型3.(m∶n)聯(lián)系的E-R圖到關(guān)系模式的轉(zhuǎn)換對(duì)于(m∶n)聯(lián)系,單獨(dú)對(duì)應(yīng)一個(gè)關(guān)系模式,該關(guān)系模式包括聯(lián)系的屬性、參與聯(lián)系的各實(shí)體集的主碼屬性,該關(guān)系模式的主碼由各實(shí)體集的主碼屬性共同組成。例如,圖描述的“學(xué)生(xs)”與“課程(kc)”實(shí)體集之間的聯(lián)系可設(shè)計(jì)如下關(guān)系模式:xs(學(xué)號(hào),姓名,性別,出生時(shí)間,專(zhuān)業(yè),總學(xué)分,備注)kc(課程號(hào),課程名,開(kāi)課學(xué)期,學(xué)時(shí),學(xué)分)xs_kc(學(xué)號(hào),課程號(hào),成績(jī))關(guān)系模式xs_kc的主碼是由“學(xué)號(hào)”和“課程號(hào)”兩個(gè)屬性組合起來(lái)構(gòu)成的,一個(gè)關(guān)系模式只能有一個(gè)主碼。03物

型物

型物理模型是面向計(jì)算機(jī)物理表示的模型,描述了數(shù)據(jù)在儲(chǔ)存介質(zhì)上的組織結(jié)構(gòu),它不但與具體的DBMS有關(guān),而且與操作系統(tǒng)和硬件有關(guān)。每一種邏輯數(shù)據(jù)模型在實(shí)現(xiàn)時(shí)都有其對(duì)應(yīng)的物理數(shù)據(jù)模型。DBMS為了保證其獨(dú)立性與可移植性,大部分物理數(shù)據(jù)模型的實(shí)現(xiàn)工作由系統(tǒng)自動(dòng)完成,而設(shè)計(jì)者只設(shè)計(jì)索引、聚集等特殊結(jié)構(gòu)。第1章

數(shù)據(jù)庫(kù)基礎(chǔ)——MySQL安裝、配置和運(yùn)行01MySQL安裝和配置MySQL安裝和配置MySQL5.7可以通過(guò)安裝包方式,也可以通過(guò)壓縮包方式安裝和配置。安裝包和壓縮包可從MySQL官網(wǎng)(/downloads)免費(fèi)下載。在安裝MySQL前,須確保系統(tǒng)中已安裝了最新的Microsoft.NETFramework。02MySQL數(shù)據(jù)庫(kù)試運(yùn)行啟動(dòng)MySQL服務(wù)登錄MySQL實(shí)例設(shè)置MySQL擴(kuò)展中文字符集賦予用戶root所有權(quán)限MySQL數(shù)據(jù)庫(kù)試運(yùn)行1.啟動(dòng)MySQL服務(wù)打開(kāi)“Windows任務(wù)管理器”,在“進(jìn)程”頁(yè)可以看到MySQL進(jìn)程mysqld.exe,在“服務(wù)”頁(yè)可以看到對(duì)應(yīng)的“MySQL57”服務(wù)已經(jīng)啟動(dòng)了,如圖。MySQL數(shù)據(jù)庫(kù)試運(yùn)行2.登錄MySQL實(shí)例右擊Windows開(kāi)始按鈕,選擇“運(yùn)行(R)”,在“運(yùn)行”對(duì)話框中輸入“cmd”后按“Enter”鍵,進(jìn)入Windows命令行窗口。說(shuō)明:Windows命令行窗口是默認(rèn)黑色背景白字,可以設(shè)置窗口屬性修改為白色背景黑字。在Windows命令行窗口中輸入下列命令(加黑文本)改變當(dāng)前目錄到指定目錄:C:\...>cdC:\ProgramFiles\MySQL\MySQLServer5.7\bin輸入下列命令(加黑文本)連接MySQL實(shí)例,登錄MySQL:C:\ProgramFiles\MySQL\MySQLServer5.7\bin>mysql-uroot-p回車(chē)后,在系統(tǒng)提示“Enterpassword:”處輸入密碼(安裝MySQL時(shí)設(shè)置):Enterpassword:123456MySQL數(shù)據(jù)庫(kù)試運(yùn)行顯示如圖所示的歡迎信息。顯示提示符“mysql>”表示進(jìn)入了MySQL的命令行模式。在“mysql>”下輸入“quit”,可退出MySQL返回Windows命令行模式。MySQL數(shù)據(jù)庫(kù)試運(yùn)行3.設(shè)置MySQL擴(kuò)展中文字符集為了讓MySQL數(shù)據(jù)庫(kù)能夠支持中文,必須設(shè)置系統(tǒng)字符集編碼。輸入MySQL的SQL命令:SETCHARACTER_SET_DATABASE='gbk';SETCHARACTER_SET_SERVER='gbk';STATUS;將數(shù)據(jù)庫(kù)和服務(wù)器的字符集均設(shè)為gbk(中文),系統(tǒng)顯示修改后MySQL的狀態(tài)信息,可查看當(dāng)前系統(tǒng)字符集如圖。MySQL數(shù)據(jù)庫(kù)試運(yùn)行4.賦予用戶root所有權(quán)限操作MySQL時(shí),由于不同操作系統(tǒng)默認(rèn)的權(quán)限存在差異,有些功能無(wú)法使用,建議進(jìn)行下列操作權(quán)限設(shè)置。mysql>USEmysql;GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'123456'WITHGRANTOPTION;FLUSHPRIVILEGES;說(shuō)明:USEmysql:打開(kāi)系統(tǒng)數(shù)據(jù)庫(kù)mysql。GRANT…:賦予root用戶(登錄密碼123456)所有權(quán)限,這樣才能操作該MySQL實(shí)例所有功能,否則不能操作部分功能。執(zhí)行結(jié)果如圖。第1章

數(shù)據(jù)庫(kù)基礎(chǔ)——常用MySQL界面工具01界面工具簡(jiǎn)介圖形化客戶端基于Web的管理工具界面工具簡(jiǎn)介1.圖形化客戶端這類(lèi)工具采用C/S架構(gòu),用戶通過(guò)安裝在計(jì)算機(jī)中的客戶端軟件連接并操作后臺(tái)的MySQL數(shù)據(jù)庫(kù),原理如圖,客戶端是圖形化用戶界面(GUI)。除了MySQL官方提供的管理工具M(jìn)ySQLAdministrator和MySQLWorkbench外,還有很多第三方開(kāi)發(fā)的優(yōu)秀工具,比較著名的有Navicat、SequelPro、HeidiSQL、SQLMaestroMySQLToolsFamily、SQLWave、dbForgeStudio、DBToolsManager、MyDBStudio、AquaDataStudio、SQLyog、MySQL-Front、SQLBuddy等。界面工具簡(jiǎn)介2.基于Web的管理工具這類(lèi)工具采用B/S架構(gòu),用戶無(wú)須在計(jì)算機(jī)中安裝客戶端,管理工具運(yùn)行于Web服務(wù)器上,如圖所示。用戶機(jī)器只要帶有瀏覽器,就能以訪問(wèn)Web頁(yè)面的方式操作MySQL數(shù)據(jù)庫(kù)。02圖形化界面工具創(chuàng)建MySQL服務(wù)器實(shí)例連接Navicat界面和功能簡(jiǎn)介MySQL語(yǔ)句的執(zhí)行圖形化界面工具1.創(chuàng)建MySQL服務(wù)器實(shí)例連接首先需要連接MySQL服務(wù)器實(shí)例,然后在該連接下操作MySQL。啟動(dòng)Navicat,單擊“連接”按鈕,創(chuàng)建MySQL服務(wù)器實(shí)例連接,如圖。其中:連接名:是用戶自己定義的連接MySQL服務(wù)器的名稱(chēng)。主機(jī):指定MySQL服務(wù)器對(duì)應(yīng)的計(jì)算機(jī)。如果MySQL服務(wù)器就在本機(jī)(筆者主機(jī)名HUAWEI)上,主機(jī)名可以使用HUAWEI,也可使用localhost或IP地址。端口:在安裝MySQL時(shí),選擇默認(rèn)通過(guò)“TCP/IP”協(xié)議3306端口號(hào)訪問(wèn)MySQL服務(wù)器,所以這里指定端口號(hào)3306。圖形化界面工具2.Navicat界面和功能簡(jiǎn)介Navicat創(chuàng)建上述連接后,界面顯示如圖。圖形化界面工具3.MySQL語(yǔ)句的執(zhí)行MySQL語(yǔ)句在查詢(xún)編輯器窗口輸入和執(zhí)行。單擊“新建查詢(xún)”按鈕,系統(tǒng)新建一個(gè)查詢(xún)編輯器窗口頁(yè)。已經(jīng)創(chuàng)建的查詢(xún)編輯器窗口頁(yè)仍然存在,但可以隨時(shí)關(guān)閉。查詢(xún)編輯器窗口系統(tǒng)除了顯示子功能外,還顯示連接和數(shù)據(jù)庫(kù)下拉列表框供用戶選擇,表示查詢(xún)指定連接下選擇的數(shù)據(jù)庫(kù)。也就是說(shuō),在不同的查詢(xún)編輯器窗口下,可以使用不同用戶連接的MySQL實(shí)例中的不同數(shù)據(jù)庫(kù)。圖形化界面工具在文本編輯區(qū)輸入SQL語(yǔ)句,單擊“”,在其下部“結(jié)果”選項(xiàng)卡顯示SQL語(yǔ)句的執(zhí)行結(jié)果。如圖。第2章

數(shù)

據(jù)

類(lèi)

型——數(shù)

型01整

數(shù)

類(lèi)

型整數(shù)類(lèi)型整數(shù)類(lèi)型包括的數(shù)據(jù)類(lèi)型如表。數(shù)據(jù)類(lèi)型字節(jié)數(shù)有符號(hào)范圍無(wú)符號(hào)范圍(含)tinyint1-128~127(-27~27-1)0~255(0~28-1)smallint2-32768~32767(-215~215-1)0~65535(0~216-1)mediumint3-8388608~8388607(-223~223-1)0~16777215(0~224-1)intinteger4-2147483648~2147483647(-231~231-1)0~4294967295(0~232-1)bigint8±9.22×1018(-263~263-1)0~1.84×1019(0~264-1)02實(shí)

數(shù)

類(lèi)

型單精度浮點(diǎn)類(lèi)型雙精度浮點(diǎn)類(lèi)型定點(diǎn)類(lèi)型實(shí)數(shù)類(lèi)型實(shí)數(shù)類(lèi)型包括浮點(diǎn)類(lèi)型和定點(diǎn)類(lèi)型,浮類(lèi)點(diǎn)類(lèi)型分為單精度浮點(diǎn)型(float和real)和雙精度浮點(diǎn)型(double),它們遵循IEEE754標(biāo)準(zhǔn);而定點(diǎn)型為decimal或者numeric型,實(shí)數(shù)類(lèi)型定義格式如下:實(shí)數(shù)類(lèi)型名(長(zhǎng)度.小數(shù)位)1.單精度浮點(diǎn)類(lèi)型表達(dá)單精度浮點(diǎn)數(shù)的float或real類(lèi)型數(shù)據(jù)占4字節(jié),其中1位表示符號(hào)位,8位表示指數(shù),23位表示尾數(shù)。其中:有符號(hào)數(shù)表示范圍:(-3.402823466E+38~1.175494351E-38),0,(1.175494351E-38~3.402823466351E+38);無(wú)符號(hào)數(shù)表示范圍:0,(1.175494351E-38~3.402823466E+38)。float可以用含小數(shù)的數(shù)值表示,也可以用科學(xué)記數(shù)法表示,但只保證6位有效數(shù)字的準(zhǔn)確性。定義float(m,d)表示數(shù)值總長(zhǎng)為m位,其中有d位小數(shù)。例如,列設(shè)置為float(10,2),輸入-3584678.268,查詢(xún)結(jié)果為-3584678.25。實(shí)數(shù)類(lèi)型2.雙精度浮點(diǎn)類(lèi)型表達(dá)雙精度浮點(diǎn)數(shù)double類(lèi)型數(shù)據(jù)占8字節(jié),其中1位表示符號(hào)位,11位表示指數(shù),52位表示尾數(shù)。其中:有符號(hào)數(shù)表示范圍:(-1.7976931348623157E+308~2.2250738585072014E-308),0,(2.2250738585072014E-308~1.7976931348623157E+308);無(wú)符號(hào)數(shù)表示范圍:0,(2.2250738585072014E-308~1.7976931348623157E+308)。定義double(m,d)表示數(shù)值總長(zhǎng)為m位,其中有d位小數(shù)。double只保證16位有效數(shù)字的準(zhǔn)確性。實(shí)數(shù)類(lèi)型3.定點(diǎn)類(lèi)型定點(diǎn)類(lèi)型為decimal或者numeric類(lèi)型,它們是同義詞,用于存儲(chǔ)定點(diǎn)數(shù),保存必須為確切精度的值,例如會(huì)計(jì)系統(tǒng)中的貨幣數(shù)據(jù)。定點(diǎn)類(lèi)型數(shù)值總長(zhǎng)度范圍為1~65,默認(rèn)為10位數(shù)字,沒(méi)有小數(shù)位。定義decimal(m,d)表示總長(zhǎng)度m位,其中有d位小數(shù)。decimal(m)沒(méi)有小數(shù)。小數(shù)部分超出d位,若四舍五入后,整數(shù)部分沒(méi)有超出范圍,則只給出警告,但能成功操作并四舍五入刪除多余的小數(shù)位后保存;若四舍五入后,整數(shù)部分超出范圍,則會(huì)報(bào)錯(cuò),并拒絕處理。例如,列設(shè)置為decimal(10,2),輸入-3584678.268,查詢(xún)結(jié)果為-3584678.27。03位

類(lèi)

型位

類(lèi)

型位類(lèi)型就是bit類(lèi)型,bit(n)型允許存儲(chǔ)n位二進(jìn)制位值(n取值為1~64,默認(rèn)為1)。與tinyint相比,即使僅僅存儲(chǔ)0和1兩種狀態(tài)的值,也需要1個(gè)字節(jié),而bit(1)存儲(chǔ)0和1兩種狀態(tài)的值只需要1個(gè)二進(jìn)制位。如果我們存儲(chǔ)的狀態(tài)不超過(guò)2n,就可以使用bit(n)。另外,向位類(lèi)型列輸入的值只要<2n,就可以表達(dá)為二進(jìn)制、十進(jìn)制、十六進(jìn)制等(例如0b10011、63、0x41),但bit(n)查詢(xún)顯示輸出的是二進(jìn)制值。第2章

數(shù)

據(jù)

類(lèi)

型——字符串和二進(jìn)制串型01字符串類(lèi)型字符串描述字符集字符排序規(guī)則字符串類(lèi)型1.字符串描述字符串?dāng)?shù)據(jù)類(lèi)型如表。數(shù)據(jù)類(lèi)型最多存放字符個(gè)數(shù)(字節(jié))char(n)255varchar(n)65535(2)tinytext255(1)text65535(2)mediumtext16777215(3)longtext4294967295(4)字符串類(lèi)型說(shuō)明:(1)char(n)和varchar(n)括號(hào)中的n代表字符的個(gè)數(shù),不是字節(jié)數(shù)。例如,采用UTF8字符集,存放n個(gè)純ASCII碼字符,占用n個(gè)字節(jié)。(2)實(shí)際上,tinytext、text、mediumtext、longtexttext類(lèi)型就相當(dāng)于varchar(n),n就是該類(lèi)型最大可存放的字符個(gè)數(shù)。例如:text類(lèi)型相當(dāng)于varchar(65535)。(3)如果一個(gè)表中的任何列都有可變長(zhǎng)度,結(jié)果會(huì)使整個(gè)行變長(zhǎng)。如果一張表包含任何變長(zhǎng)的列(varchar、text等),則所有大于3個(gè)字符的char列都將被改變?yōu)関archar列。(4)可變長(zhǎng)度實(shí)際存儲(chǔ)空間除了字符本身外,還需要額外存儲(chǔ)當(dāng)前字符占用的空間字節(jié)數(shù),而它本身占的字節(jié)為其數(shù)據(jù)類(lèi)型最大字符數(shù)。例如:varchar(60000),當(dāng)前值'abc',占用空間為3+2=5,前者是內(nèi)容占用,后者為長(zhǎng)度占用,因?yàn)樽畲箝L(zhǎng)度60000需要用2個(gè)字節(jié)才能存放。(5)字符串?dāng)?shù)據(jù)類(lèi)型數(shù)據(jù)用單引號(hào)和雙引號(hào)括起,內(nèi)容可以是平臺(tái)字符,也可以是轉(zhuǎn)義字符。例如“\'”為單引號(hào),“\n”為回車(chē)。字符串類(lèi)型2.字符集ASCII碼及其字符集ASCII碼即美國(guó)標(biāo)準(zhǔn)信息交換碼,是目前世界上的計(jì)算機(jī)中使用最廣泛的西文字符集編碼。西文字符集由拉丁字母、數(shù)字、標(biāo)點(diǎn)符號(hào)及一些特殊符號(hào)組成。在標(biāo)準(zhǔn)ASCII碼表中,20H~7EH部分屬于可打印字符,共95個(gè)。GB2312-80編碼及其字符集1981年,我國(guó)頒布信息交換漢字編碼的第一個(gè)國(guó)家標(biāo)準(zhǔn),稱(chēng)為GB2312-80。其字符集由以下3部分組成。(1)字母、數(shù)字和各種符號(hào),包括拉丁字母、俄文、日文平假名與片假名、希臘字母、漢語(yǔ)拼音等,共682個(gè)。(2)一級(jí)常用漢字,共3755個(gè),按漢語(yǔ)拼音排列。(3)二級(jí)常用漢字,共3008個(gè),按偏旁部首排列。GB2312-80字符集構(gòu)成一個(gè)二維碼表,它分成94行和94列,行號(hào)稱(chēng)為區(qū)號(hào),列號(hào)稱(chēng)為位號(hào),如圖。字符串類(lèi)型GB2312-80字符集的每個(gè)漢字或符號(hào)在碼表中都有各自的位置,即所在的區(qū)號(hào)及位號(hào)。用區(qū)號(hào)及位號(hào)組合在一起的編碼就是該漢字區(qū)位碼。例如,“中”字的區(qū)號(hào)是54,位號(hào)是48,區(qū)位碼是(54,48),用十六進(jìn)制表示為(36H,30H)。為了與西文字符共存,漢字內(nèi)碼不能與ASCII碼沖突。因?yàn)锳SCII碼用一個(gè)字節(jié)表示,最高位為0;漢字內(nèi)碼用2個(gè)字節(jié)表示,每個(gè)字節(jié)的最高位為1。如圖。字符串類(lèi)型GBK編碼及其字符集GB2312編碼漢字太少,缺少繁體字,無(wú)法滿足人名、地名、古籍整理、古典文獻(xiàn)研究等應(yīng)用的需要。于是在1995年推出了“漢字內(nèi)碼擴(kuò)充規(guī)范”,稱(chēng)為GBK標(biāo)準(zhǔn),它在GB2312的基礎(chǔ)上增加了大量的漢字(包括繁體字)和符號(hào),共21003個(gè)漢字和883個(gè)圖形符號(hào)。GB2312中的字符仍然采用原來(lái)的編碼,僅僅對(duì)新增加的符號(hào)和漢字進(jìn)行另外編碼。GBK漢字內(nèi)碼也使用雙字節(jié)表示,但僅第1字節(jié)最高位為“1”,如圖。字符串類(lèi)型Unicode編碼及UTF8字符集Unicode只是字符集,卻沒(méi)有規(guī)定該如何存儲(chǔ)、傳輸,而UTF規(guī)定了字符如何傳輸和存儲(chǔ)。UTF又分為UTF-8、UTF-16和UTF-32,它們都可以完全表示Unicode標(biāo)準(zhǔn)中的所有字符,而UTF-8使用較多。UTF-8為單字節(jié)可變長(zhǎng)編碼,它根據(jù)Huffman編碼的思想(最常出現(xiàn)的字符編碼盡量短),以及不同符號(hào)使用不同的字節(jié)長(zhǎng)度表示,因此UTF-8采用了1~4個(gè)字節(jié)表示一個(gè)符號(hào)變長(zhǎng)的編碼方式。從Unicode到UTF-8的編碼方式如表。Unicode編碼(十六進(jìn)制)UTF-8字節(jié)流(二進(jìn)制)字符000000-00007F0xxxxxxxASCII字符000080-0007FF110xxxxx10xxxxxx拉丁、希臘、阿拉伯……000800-00FFFF1110xxxx10xxxxxx10xxxxxx中、日、韓統(tǒng)一整理出來(lái)的稱(chēng)為CJK漢字010000-10FFFF11110xxx10xxxxxx10xxxxxx10xxxxxx其他字符。字符串類(lèi)型3.字符排序規(guī)則字符排序又稱(chēng)字符序,MySQL中眾多的排序規(guī)則可以歸納為以下兩大類(lèi)排序集:(1)字符集_語(yǔ)言/other_ci/cs這是默認(rèn)的排序集,當(dāng)字符無(wú)須區(qū)分大小寫(xiě)時(shí)采用該集合中的規(guī)則,規(guī)則命名以其對(duì)應(yīng)的字符集作為前綴,例如:字符序utf8_general_ci,表明它是字符集utf8的字符序。ci對(duì)大小寫(xiě)不敏感,而cs對(duì)大小寫(xiě)敏感。utf8字符集對(duì)應(yīng)的collation沒(méi)有cs。(2)字符集_bin當(dāng)字符需要區(qū)分大小寫(xiě)時(shí),選擇該排序集。每個(gè)字符集對(duì)應(yīng)一定數(shù)量的排序規(guī)則,可以指定數(shù)據(jù)集如何排序以及字符串的排序規(guī)則。MySQL提供了4個(gè)等級(jí)的默認(rèn)字符集以及排序規(guī)則,分別是服務(wù)器、數(shù)據(jù)庫(kù)、表和列級(jí)別。02二進(jìn)制串類(lèi)型二進(jìn)制數(shù)據(jù)類(lèi)型大二進(jìn)制數(shù)據(jù)類(lèi)型二進(jìn)制串類(lèi)型1.二進(jìn)制數(shù)據(jù)類(lèi)型二進(jìn)制數(shù)據(jù)類(lèi)型包括binary和varbinary,它們類(lèi)似于字符串類(lèi)型char和varchar,但不同的是,它們存儲(chǔ)的不是字符串,而是二進(jìn)制串。所以它們沒(méi)有字符集,并且排序和比較需要基于列字節(jié)的數(shù)值。二進(jìn)制數(shù)據(jù)類(lèi)型列可以保存數(shù)值,也可以保存字符串,均變成對(duì)應(yīng)的字節(jié)保存。而且經(jīng)常將聲音、圖像、視頻等文件用系統(tǒng)函數(shù)轉(zhuǎn)換成字節(jié)數(shù)據(jù)保存在其中。當(dāng)保存binary值時(shí),在它們右側(cè)填充0x00值以達(dá)到指定長(zhǎng)度。取值時(shí)不刪除尾部的字節(jié)。二進(jìn)制串類(lèi)型2.大二進(jìn)制數(shù)據(jù)類(lèi)型大二進(jìn)制數(shù)據(jù)類(lèi)型為blob類(lèi)型,是一個(gè)二進(jìn)制對(duì)象,可以存儲(chǔ)數(shù)據(jù)量很大的二進(jìn)制數(shù)據(jù),也可視為足夠大的varbinary列,可用于存儲(chǔ)大的圖片、視頻等。有4種blob類(lèi)型:tinyblob、blob、mediumblob和longblob,它們可容納值的最大長(zhǎng)度不同。tinyblob類(lèi)型:最大長(zhǎng)度為255(28-1)字節(jié)。blob類(lèi)型:最大長(zhǎng)度為65535(216-1)字節(jié)。mediumblob類(lèi)型:最大長(zhǎng)度為16777215(224-1)字節(jié)。longblob類(lèi)型:最大長(zhǎng)度為4294967295(232-1)字節(jié)。實(shí)際長(zhǎng)度與編碼有關(guān),比如UTF8編碼,長(zhǎng)度會(huì)減半。二進(jìn)制串類(lèi)型說(shuō)明:(1)當(dāng)保存或檢索blob和text列的值時(shí)不刪除尾部空格,這與varbinary和varchar列相同。(2)比較時(shí)將用空格對(duì)text進(jìn)行擴(kuò)充以適合比較的對(duì)象,正如char和varchar。(3)對(duì)于blob和text列的索引,必須指定索引前綴的長(zhǎng)度。對(duì)于char和varchar,前綴長(zhǎng)度是可選的。(4)blob和text列不能有默認(rèn)值。(5)mysqlconnector/odbc將blob值定義為longvarbinary,將text值定義為longvarchar。(6)blob或text對(duì)象的最大值由其類(lèi)型確定,但在客戶端和服務(wù)器之間實(shí)際可以傳遞的最大值由可用內(nèi)存數(shù)量和通信緩存區(qū)大小確定。(7)每個(gè)blob或text值分別由內(nèi)部分配的對(duì)象表示。第2章

數(shù)

據(jù)

類(lèi)

型——日期時(shí)間型日期時(shí)間型1.日期類(lèi)型日期類(lèi)型包含datetime、date和timestamp類(lèi)型,這3者都用來(lái)表示日期/時(shí)間。(1)datetime類(lèi)型:以'yyyy-mm-ddhh:mm:ss'(年-月-日時(shí):分:秒)格式檢索和顯示。支持的范圍為'1000-01-0100:00:00'~'9999-12-3123:59:59'。(2)date類(lèi)型:用'yyyy-mm-dd'(年-月-日)格式檢索和顯示。支持的范圍為'1000-01-01'~'9999-12-31'。(3)timestamp類(lèi)型:包含日期和時(shí)間,范圍為'1970-01-0100:00:01'utc~'2038-01-1903:14:07'utc。該類(lèi)型能夠自動(dòng)存儲(chǔ)記錄修改的時(shí)間。timestamp的顯示尺寸必須是偶數(shù)且在2~14范圍內(nèi)。如果指定0顯示尺寸或比14大,尺寸被強(qiáng)制設(shè)定為14。在1~13范圍內(nèi)的奇數(shù)值尺寸被強(qiáng)制設(shè)定為下一個(gè)更大的偶數(shù)。將它設(shè)為NULL,默認(rèn)為當(dāng)前的日期和時(shí)間??梢允褂萌魏纬R?jiàn)格式指定datetime、date和timestamp值。對(duì)于包括日期部分間隔符的字符串值,如果日和月的值都小于10,則不需要指定兩位數(shù),例如'1979-6-9'與'1979-06-09'相同。如果一個(gè)數(shù)值是8位或14位長(zhǎng),則假定為'yyyymmdd'或'yyyymmddhhmmss'格式,前4位數(shù)表示年。如果為一個(gè)datetime或timestamp對(duì)象分配一個(gè)date值,結(jié)果值的時(shí)間部分被設(shè)置為'00:00:00'。函數(shù)返回的結(jié)果,其值適合datetime、date或者timestamp上下文,如now()或current_date。日期時(shí)間型2.時(shí)間類(lèi)型time值的范圍為'-838:59:59'~'838:59:59'。(1)可以用各種格式指定time值,如下。'dhh:mm:ss.fraction'格式的字符串。還可以用'hh:mm:ss.fraction'、'hh:mm:ss'、'hh:mm'、'dhh:mm:ss'、'dhh:mm'、'dhh'或'ss'。這里d表示日期,取值范圍為0~31。'hhmmss'格式的沒(méi)有間隔符的字符串,假定是有意義的時(shí)間。例如,'101112'被理解為'10:11:12'。hhmmss格式的數(shù)值,假定是有意義的時(shí)間。例如,101112被理解為'10:11:12'。(2)函數(shù)返回的結(jié)果,其值適合time上下文,如current_time。(3)對(duì)于指定為包括時(shí)間部分間隔符的字符串的time值,如果時(shí)、分或者秒值小于10,則不需要指定兩位數(shù)。例如,'8:3:2'與'08:03:02'相同。(4)如果time值沒(méi)有冒號(hào),則最右側(cè)的兩位數(shù)表示秒,time值表示過(guò)去的時(shí)間而不是當(dāng)天的時(shí)間。例如,'1112'和1112被解釋為'00:11:12'(11分12秒),'12'和12被解釋為'00:00:12'。相反,如果time值中使用冒號(hào),則肯定被看作當(dāng)天的時(shí)間。例如,'11:12'表示'11:12:00',而不是'00:11:12'。(5)無(wú)效time值被轉(zhuǎn)換為'00:00:00'。由于'00:00:00'本身是一個(gè)合法的time值,所以只從一個(gè)'00:00:00'值還不能判斷原來(lái)的值是'00:00:00'還是不合法的。日期時(shí)間型3.年類(lèi)型年類(lèi)型就是year類(lèi)型,是一個(gè)單字節(jié)類(lèi)型,用于表示年。MySQL以yyyy格式檢索和顯示year值,范圍為1901~2155。(1)可以指定各種格式的year值,如下。4位字符串:如'2018'。4位數(shù)字:如2018。2位字符串:'00'~69'轉(zhuǎn)換為2000~2069,'70'~'99'轉(zhuǎn)換為1970~1999。例如,'18'表示2018。一個(gè)字符串'0'或'00'可能被解釋為0000。2位整數(shù):范圍為1~99。1~69轉(zhuǎn)換為2001~2069,70~99轉(zhuǎn)換為1970~1999。不能直接將零指定為數(shù)字并將它解釋為2000。(2)函數(shù)返回的結(jié)果,其值適合year上下文,如now()。(3)非法year值被轉(zhuǎn)換為0000。第2章

數(shù)

據(jù)

類(lèi)

型——枚舉、集合、鍵值和空間型01枚舉類(lèi)型和集合類(lèi)型枚舉類(lèi)型:enum集合類(lèi)型:set枚舉類(lèi)型和集合類(lèi)型1.枚舉類(lèi)型:enum(1)定義enum('值1','值2','值3'...,'值n')定義需要enum需要設(shè)置成員表,成員為字符串(尾部空格將自動(dòng)被刪除),即使成員是數(shù)字,也必須是加引號(hào)的字符串。成員之間用“,”分隔。enum類(lèi)型創(chuàng)建時(shí)指定的成員就是枚舉值,每個(gè)枚舉值位置對(duì)應(yīng)一個(gè)索引編號(hào),MySQL存儲(chǔ)的就是這個(gè)索引編號(hào)。(2)存儲(chǔ)enum類(lèi)型存儲(chǔ)的不是成員的字符串,而是成員的索引編號(hào),定義1~255個(gè)成員的枚舉索引編號(hào)需要1個(gè)字節(jié)存儲(chǔ);對(duì)于256~65535個(gè)成員,索引編號(hào)需要2個(gè)字節(jié)存儲(chǔ)。例如,“專(zhuān)業(yè)”枚舉定義enum('計(jì)算機(jī)','通信工程','人工智能'),該列可以取的值和對(duì)應(yīng)的索引編號(hào)如表。成員索引編號(hào)NULLNULL“0'計(jì)算機(jī)'1'通信工程'2'人工智能'3枚舉類(lèi)型和集合類(lèi)型2.集合類(lèi)型:set(1)定義SET('值1','值2','值3'...,'值n')set類(lèi)型成員不能為空,最少需要一個(gè)成員,最多包含64個(gè)成員。實(shí)際內(nèi)容為這些成員構(gòu)成的組合,1~8個(gè)成員的集合占1個(gè)字節(jié),9~16個(gè)成員的集合占2個(gè)字節(jié),17~24個(gè)成員的集合占3個(gè)字節(jié),25~32個(gè)成員的集合占4個(gè)字節(jié),33~64個(gè)成員的集合占8個(gè)字節(jié)。(2)存儲(chǔ)set類(lèi)型存儲(chǔ)的不是成員的字符串,而是其二進(jìn)制位信息。例如:“興趣”集合定義set('唱歌','跳舞','智力游戲','足球運(yùn)動(dòng)','書(shū)法')?!芭d趣”成員和存儲(chǔ)值表示如表。成員二進(jìn)制值十進(jìn)制值'唱歌'11'跳舞'102'智力游戲'1004'足球運(yùn)動(dòng)'10008'書(shū)法'100001602鍵值(JSON)類(lèi)型JSON對(duì)象JSON數(shù)組鍵值(JSON)類(lèi)型1.JSON對(duì)象JSON類(lèi)型的數(shù)據(jù)是以JSON對(duì)象的形式提供的,一個(gè)標(biāo)準(zhǔn)的JSON對(duì)象包含一組鍵值對(duì),用逗號(hào)分隔,以“{”和“}”字符括起來(lái):{"鍵1":"值1",...}創(chuàng)建JSON對(duì)象采用JSON_OBJECT系統(tǒng)函數(shù)格式如下:JSON_OBJECT(鍵1,值1,鍵2,值2,...)創(chuàng)建JSON對(duì)象和存儲(chǔ)遵循的規(guī)則基本如下:(1)鍵名(無(wú)論中英文)都必須以雙引號(hào)(")括起來(lái)。(2)鍵值是字符串型(無(wú)論中英文)必須加雙引號(hào)(")或單引號(hào)(')括起來(lái)。(3)鍵值是數(shù)值型(整數(shù)或?qū)崝?shù)類(lèi)型),可以以數(shù)值或字符串兩種格式存儲(chǔ)。當(dāng)以數(shù)值存儲(chǔ)時(shí),直接寫(xiě)出數(shù)值即可;而以字符串存儲(chǔ)時(shí),鍵值需加雙引號(hào)或單引號(hào)。(4)鍵值是日期時(shí)間型,可以用兩種方式給出:一種是直接以字符串形式寫(xiě)出;另一種是通過(guò)系統(tǒng)內(nèi)置的日期時(shí)間函數(shù)獲得。JSON對(duì)象構(gòu)建的數(shù)據(jù)如圖。鍵值(JSON)類(lèi)型2.JSON數(shù)組當(dāng)需要同時(shí)存儲(chǔ)很多JSON對(duì)象或者標(biāo)量值時(shí),可將它們集中在一起構(gòu)造出一個(gè)數(shù)組數(shù)據(jù)結(jié)構(gòu)來(lái)統(tǒng)一管理。JSON數(shù)組包含多個(gè)值,這些值由逗號(hào)分隔格式如下:JSON_ARRAY(值,...)JSON數(shù)組元素顯示包含在“[”和“]”中如下:[{鍵1":"值1",...},...]JSON數(shù)組構(gòu)建的數(shù)據(jù)如圖。03空

類(lèi)

型單一空間類(lèi)空間集合類(lèi)空

類(lèi)

型1.單一空間類(lèi)(1)點(diǎn)類(lèi)型:point(xy)存放一個(gè)坐標(biāo)值,用空格分隔。例如:point(18206)。point(經(jīng)度,維度)存放一個(gè)地理位置。例如:point(121.81534239.224632)。(2)線類(lèi)型:linestring(點(diǎn),…)由一系列點(diǎn)連接而成,點(diǎn)與point格式一致。如果線從頭至尾沒(méi)有交叉,那就是簡(jiǎn)單的;如果起點(diǎn)和終點(diǎn)重疊,那就是封閉的。例如:linestring(1025,1530,6840)。(3)多邊形類(lèi)型:polygon(點(diǎn),…)可以是一個(gè)實(shí)心平面形,即沒(méi)有內(nèi)部邊界,也可以有空洞,類(lèi)似紐扣。最簡(jiǎn)單的就是只有一個(gè)外邊界的情況。例如:polygon((010,1020),(2030,3010))。(4)geometry類(lèi)型:它是單一空間類(lèi)型的基類(lèi),point、linestring、polygon都是geometry的子類(lèi)。例如:geometry(point(4010),linestring(1010,2020,1040),polygon((4040,2045,4530,4040))空間類(lèi)型幾何圖形圖例如圖???/p>

類(lèi)

型2.空間集合類(lèi)multipoint、multilinestring、multipolygon、geometrycollection數(shù)據(jù)類(lèi)型都是空間集合類(lèi),由多個(gè)point、linestring或polygon組合而成。(1)multipoint描述多個(gè)點(diǎn)。例如:multipoint(1040),(4030),(2020),(3010),或者multipoint(1040,4030,2020,3010)。(2)multilinestring描述多條線。例如:multilinestring((1010,2020,1040),(4040,3030,4020,3010))。(3)multipolygon描述多個(gè)多邊形。例如:multipolygon(((4040,2045,4530,4040)),((2035,1030,1010,305,4520,2035),(3020,2015,2025,3020)))。geometrycollection描述任何類(lèi)型的對(duì)象的集合??臻g集合類(lèi)型圖例如圖。第3章

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

MySQL

系統(tǒng)時(shí),就生成了系統(tǒng)使用的數(shù)據(jù)庫(kù),包括information_schema、mysql和performance_schema等,MySQL把有關(guān)DBMS自身的管理信息都保存在這幾個(gè)數(shù)據(jù)庫(kù)中,如果刪除了它們,MySQL將無(wú)法正常工作,故請(qǐng)讀者操作時(shí)千萬(wàn)留神!如果安裝時(shí)選擇安裝實(shí)例數(shù)據(jù)庫(kù),則系統(tǒng)還有另外兩個(gè)實(shí)例數(shù)據(jù)庫(kù)sakila和world。通過(guò)以下命令可以查看MySQL已有的數(shù)據(jù)庫(kù):SHOWDATABASES;命令執(zhí)行結(jié)果如圖。01創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)語(yǔ)句如下:CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]數(shù)據(jù)庫(kù)名[創(chuàng)建選項(xiàng),...]其中,創(chuàng)建選項(xiàng):[DEFAULT]CHARACTERSET字符集名|[DEFAULT]COLLATE校對(duì)規(guī)則名IFNOTEXISTS:在創(chuàng)建數(shù)據(jù)庫(kù)前須進(jìn)行判斷,只有該數(shù)據(jù)庫(kù)目前尚不存在時(shí)才可執(zhí)行CREATEDATABASE操作。用此選項(xiàng)可以避免出現(xiàn)數(shù)據(jù)庫(kù)已經(jīng)存在卻再新建的錯(cuò)誤。DEFAULT:指定默認(rèn)值。CHARACTERSET:指定數(shù)據(jù)庫(kù)字符集。COLLATE:指定字符集的校對(duì)規(guī)則。說(shuō)明:如果在MySQL環(huán)境下采用下列命令設(shè)置了字符集,每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建時(shí)不需要單獨(dú)重新設(shè)置:SETCHARACTER_SET_DATABASE='gbk';SETCHARACTER_SET_SERVER='gbk';創(chuàng)建數(shù)據(jù)庫(kù)【例】創(chuàng)建test數(shù)據(jù)庫(kù)。CREATEDATABASEtest;說(shuō)明:如果創(chuàng)建數(shù)據(jù)庫(kù)不指定選項(xiàng)就使用默認(rèn)選項(xiàng)參數(shù)。如果已經(jīng)創(chuàng)建了名為test的數(shù)據(jù)庫(kù),重復(fù)創(chuàng)建時(shí)系統(tǒng)將會(huì)提示數(shù)據(jù)庫(kù)已經(jīng)存在的錯(cuò)誤信息,不能再創(chuàng)建。使用IFNOTEXISTS子句可不顯示錯(cuò)誤信息:CREATEDATABASEIFNOTEXISTStest;SHOWDATABASES; #顯示的數(shù)據(jù)庫(kù)中多了test02修改數(shù)據(jù)庫(kù)修改數(shù)據(jù)庫(kù)修改數(shù)據(jù)庫(kù)語(yǔ)句如下:ALTER{DATABASE|SCHEMA}[數(shù)據(jù)庫(kù)名]修改選項(xiàng)[,修改選項(xiàng)]...其中,修改選項(xiàng):[DEFAULT]CHARACTERSET字符集名|[DEFAULT]COLLATE校對(duì)規(guī)則名說(shuō)明:ALTERDATABASE用于更改數(shù)據(jù)庫(kù)的全局特性,這些特性?xún)?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ù)名稱(chēng)忽略,則修改當(dāng)前(默認(rèn))數(shù)據(jù)庫(kù)?!纠啃薷臄?shù)據(jù)庫(kù)test的默認(rèn)字符集和校對(duì)規(guī)則。ALTERDATABASEtestDEFAULTCHARACTERSETgb2312DEFAULTCOLLATEgb2312_chinese_ci;03刪除數(shù)據(jù)庫(kù)刪除數(shù)據(jù)庫(kù)刪除數(shù)據(jù)庫(kù)語(yǔ)句如下:DROPDATABASE[IFEXISTS]數(shù)據(jù)庫(kù)名使用IFEXISTS子句,可避免刪除不存在的數(shù)據(jù)庫(kù)時(shí)出現(xiàn)MySQL錯(cuò)誤信息。例如,刪除test數(shù)據(jù)庫(kù):DROPDATABASEtest;SHOWDATABASES; #顯示數(shù)據(jù)庫(kù)中沒(méi)有test04打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)創(chuàng)建后,在同一個(gè)會(huì)話中就自動(dòng)打開(kāi)。下列語(yǔ)句打開(kāi)指定數(shù)據(jù)庫(kù),使其成為當(dāng)前數(shù)據(jù)庫(kù):USE數(shù)據(jù)庫(kù)名關(guān)閉數(shù)據(jù)庫(kù),其后會(huì)話就沒(méi)有當(dāng)前數(shù)據(jù)庫(kù)了。第3章

數(shù)據(jù)庫(kù)和表——MySQL表01創(chuàng)

表列定義及基本屬性列鍵屬性列其他屬性列數(shù)據(jù)類(lèi)型虛擬列(生成列)由原有的表創(chuàng)建新表創(chuàng)

表創(chuàng)建表語(yǔ)句如下:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]表名(列定義,...[表索引][完整性約束])[表選項(xiàng)]說(shuō)明:TEMPORARY:包含此關(guān)鍵字表示新建的表為臨時(shí)表,否則創(chuàng)建的表通常稱(chēng)為持久表。IFNOTEXISTS:在創(chuàng)建表前加上一個(gè)判斷,只有該表目前尚不存在時(shí)才創(chuàng)建。列定義:列又稱(chēng)字段。列定義包括列名、數(shù)據(jù)類(lèi)型和寬度等,還可包含是否允許空值和完整性約束。表索引:UNIQUEKEY(...)|PRIMARYKEY(...)|INDEX(...):第1項(xiàng)指定部分列(或單列)值的唯一性,第2項(xiàng)列作為主鍵,第3項(xiàng)列創(chuàng)建索引。完整性約束:CHECK、FOREIGNKEY(…):前者定義部分列(或單列)值數(shù)據(jù)完整性,后者定義本表與參考表的記錄完整性。表選項(xiàng):指定表的屬性。創(chuàng)

表1.列定義及基本屬性列按照下列形式定義:列名數(shù)據(jù)類(lèi)型[(長(zhǎng)度和小數(shù))][空值][鍵][字符集][列其他屬性][注釋]其中:列名:必須符合標(biāo)識(shí)符規(guī)則,長(zhǎng)度不能超過(guò)64個(gè)字符,而且在表中要唯一。如果有MySQL保留字則必須用單引號(hào)括起來(lái)。數(shù)據(jù)類(lèi)型[(長(zhǎng)度和小數(shù))]:列保存數(shù)據(jù)類(lèi)型。整數(shù)型、實(shí)數(shù)型和字符串型需要指定長(zhǎng)度,實(shí)數(shù)型還需要指定小數(shù)位??罩担篘OTNULL|NULL:指定該列是否允許為空,前者為不允許為空,后者為可以為空。如果不指定,則默認(rèn)為NULL。字符集:如果列數(shù)據(jù)類(lèi)型為字符串型,可以指定存儲(chǔ)字符的字符集和校對(duì)規(guī)則:CHARACTERSET字符集名COLLATE校對(duì)規(guī)則名注釋?zhuān)篊OMMENT'注釋內(nèi)容',列的描述內(nèi)容,說(shuō)明列的作用。創(chuàng)

表2.列鍵屬性列鍵屬性如下:PRIMARYKEY:列設(shè)置為主鍵。一個(gè)表只能定義一個(gè)主鍵,主鍵一定要為NOTNULL。UNIQUE:列設(shè)置為唯一鍵。將確保所有值都有不同的值,只有NULL值可以重復(fù)。一個(gè)表可以設(shè)置多個(gè)列為唯一鍵。創(chuàng)

表3.列其他屬性列還可以指定下列屬性:AUTO_INCREMENT:設(shè)置自增屬性,只有數(shù)據(jù)類(lèi)型為整型的列才能設(shè)置此屬性。當(dāng)插入NULL值或0,將列原來(lái)值增1,順序從1開(kāi)始。每個(gè)表只能有一個(gè)AUTO_INCREMENT列,并且必須能被索引。DEFAULT:指定列默認(rèn)值,默認(rèn)值必須為一個(gè)常數(shù)。其中,BLOB和TEXT類(lèi)型列不能被賦予默認(rèn)值。UNSIGNED:對(duì)于整數(shù)類(lèi)型,指定為無(wú)符號(hào)整數(shù)。ZEROFILL:可用于任何數(shù)值類(lèi)型,用0填充所有剩余列空間。例如,無(wú)符號(hào)INT的默認(rèn)寬度是10,因此,當(dāng)值為4時(shí),將它表示為0000000004。IDENTITY:包含系統(tǒng)所生成序號(hào)值的一個(gè)標(biāo)識(shí)列,該序號(hào)值唯一標(biāo)識(shí)表中的一列,可以作為鍵值。每個(gè)表只能有一個(gè)列被設(shè)置為標(biāo)識(shí)屬性,該列數(shù)據(jù)類(lèi)型只能是整型。定義標(biāo)識(shí)屬性時(shí),可指定其種子(起始)值、增量值,二者的默認(rèn)值均為1。系統(tǒng)自動(dòng)更新標(biāo)識(shí)列值。例如:idintNOTNULLIDENTITYidintNOTNULLIDENTITY(1,1)創(chuàng)

表4.列數(shù)據(jù)類(lèi)型列數(shù)據(jù)類(lèi)型按照下列形式描述:整數(shù)類(lèi)型名[(長(zhǎng)度)][UNSIGNED][ZEROFILL]實(shí)數(shù)類(lèi)型名[(長(zhǎng)度.小數(shù)位)][UNSIGNED][ZEROFILL]大數(shù)據(jù)類(lèi)型名字符串類(lèi)型名(長(zhǎng)度)[BINARY|ASCII|UNICODE]文本類(lèi)型名[BINARY]日期時(shí)間類(lèi)型名空間類(lèi)型名位類(lèi)型:bit[n]枚舉類(lèi)型:enum(值,...)集合類(lèi)型:set(值,...)鍵值類(lèi)型:json其中,具體類(lèi)型名如下:整數(shù)類(lèi)型名:tinyint|smallint|mediumint|int|integer|bigint實(shí)數(shù)類(lèi)型名:real|double|decimal|numeric大數(shù)據(jù)類(lèi)型名:tinyblob|blob|mediumblob|longblob字符串類(lèi)型名:char|varchar|tinytext|text|mediumtext|longtext日期時(shí)間類(lèi)型名:date|time|datetime|timestamp|year創(chuàng)

表5.虛擬列(生成列)虛擬列又稱(chēng)生成列,按照下列形式描述:列名數(shù)據(jù)類(lèi)型GENERATEDALWAYSAS(列生成表達(dá)式)照表達(dá)式計(jì)算的值同步變化?!纠吭趚scj數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)學(xué)生表,表名為xs。輸入以下命令:CREATEDATABASExscj;USExscj;CREATETABLExs(學(xué)號(hào) char(6) NOTNULLPRIMARYKEY,姓名 char(4) NOTNULL,專(zhuān)業(yè) char(10) NULL,性別 tinyint(1) NOTNULLDEFAULT1,出生日期 date NOTNULL,總學(xué)分 tinyint(1) NULL,備注 text NULL,照片 blob NULL);創(chuàng)

表說(shuō)明:(1)PRIMARYKEY:表示將“學(xué)號(hào)”列定義為主鍵。(2)DEFAULT1:表示“性別”的默認(rèn)值為1。實(shí)際上,性別如果僅保存2種狀態(tài),可以定義為bit(1)。已經(jīng)創(chuàng)建的表可以使用以下命令顯示表結(jié)構(gòu):DESCRIBE表名;例如:USExscj; #打開(kāi)xscj數(shù)據(jù)庫(kù)SHOWTABLES; #顯示xscj數(shù)據(jù)庫(kù)中包含的表DESCRIBExs; #顯示xs表結(jié)構(gòu)創(chuàng)

表6.由原有的表創(chuàng)建新表除了全新創(chuàng)建,用戶也可以直接復(fù)制數(shù)據(jù)庫(kù)中原有表的結(jié)構(gòu)和數(shù)據(jù),用這種方式十分方便、快捷。由原有的表創(chuàng)建新表語(yǔ)句如下:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]表名[LIKE源表名]|[AS(SELECT語(yǔ)句)];說(shuō)明:(1)使用LIKE關(guān)鍵字創(chuàng)建一個(gè)與“源表”相同結(jié)構(gòu)的新表,源表的列名、數(shù)據(jù)類(lèi)型、是否空值、主鍵、默認(rèn)值、索引、約束、分區(qū)等都將被復(fù)制,但是源表的記錄不會(huì)復(fù)制,因此創(chuàng)建的新表是一個(gè)空表。(2)使用AS關(guān)鍵字可以復(fù)制SELECT語(yǔ)句查詢(xún)的結(jié)果表,但源表的一些屬性(如主鍵、生成列等)卻不會(huì)被復(fù)制。創(chuàng)

表【例】在xscj數(shù)據(jù)庫(kù)中,復(fù)制xs表創(chuàng)建表名為xs1的表;再創(chuàng)建一個(gè)名為xs2的表,包含xs表的部分指定列。打開(kāi)xscj數(shù)據(jù)庫(kù):USExscj;CREATETABLExs1LIKExs; #復(fù)制xs表創(chuàng)建xs1表結(jié)構(gòu)CREATETABLExs2AS(SELECT學(xué)號(hào),姓名,專(zhuān)業(yè),總學(xué)分FROMxs); #復(fù)制xs表部分列創(chuàng)建xs2表

SHOWTABLES; #(a)DESCRIBExs2; #(b)顯示結(jié)果如圖。

02修

表增加修改刪除列增加刪除列、索引和完整性約束修改表選項(xiàng)修

表ALTERTABLE用于修改原有表的結(jié)構(gòu)。例如,可以增加(刪減)列、創(chuàng)建(取消)索引、更改原有列的類(lèi)型、重命名列或表,還可以更改表的注釋和表的類(lèi)型。修改表語(yǔ)句如下:ALTER[IGNORE]TABLE表名[ADD列定義] /*增加列*/[DROP列名] /*刪除列*/[MODIFY列名列屬性] /*修改列屬性*/[ALTER列名SETDEFAULT值|DROPDEFAULT] /*設(shè)置默認(rèn)值和刪除默認(rèn)值*/[RENAME表名 /*表更名*/[CHANGE原列名新列定義修改...] /*修改列名同時(shí)修改列屬性*/[ADD主鍵|索引|完整性約束] /*增加表索引和完整性約束*/[DROP列名|索引名|主鍵|完整性約束名] /*刪除表列、索引、主鍵和完整性約束*/[ORDERBY列名,...] /*列排序*/[表選項(xiàng)] /*增加修改表屬性*/修

表1.增加修改刪除列下面介紹增加修改刪除列描述形式。(1)增加列ADD[COLUMN]列定義[FIRST|AFTER列名]列定義參考CREATETABLE語(yǔ)句。FIRST:指定增加列為第1列。AFTER列名:增加在指定列后面。(2)修改和刪除指定列的默認(rèn)值A(chǔ)LTER[COLUMN]SETDEFAULT值|DROPDEFAULT(3)修改列的名稱(chēng)和定義CHANGE舊列名列定義[FIRST|AFTER列名](4)修改列屬性MODIFY[COLUMN]列名列屬性(5)刪除列DROP列名修

表【例】修改xs2表結(jié)構(gòu)。USExscj;ALTERTABLExs2 ADDCOLUMN考評(píng)tinyintNULL;ALTERTABLExs2 CHANGE考評(píng)考評(píng)分tinyint;ALTERTABLExs2 DROP考評(píng)分;ALTERTABLExs2 MODIFY專(zhuān)業(yè)char(12)NOTNULL;DESCRIBExs2;說(shuō)明:第1句:在xs2表中增加新的一列“考評(píng)”。第2句:把xs2表“考評(píng)”列名變更為“考評(píng)分”。第3句:把xs2表的“考評(píng)分”列刪除。第4名:把xs2表“專(zhuān)業(yè)”列數(shù)據(jù)類(lèi)型改為char(12)。(6)指定記錄排序列ORDERBY列名,...用于在創(chuàng)建新表時(shí),讓各行(記錄)按一定的順序排列。修

表2.增加刪除列、索引和完整性約束下面介紹增加刪除列、列索引和完整性約束的描述形式。(1)增加列、列索引和完整性約束ADD{INDEX|KEY}索引名索引定義|ADDPRIMARYKEY主鍵定義|ADDUNIQUE唯一性鍵名唯一性定義|ADDFOREIGNKEY外鍵名外鍵定義|ADDCHECK(完整性約束條件)【例】在xscj數(shù)據(jù)庫(kù)的xs2表中,增加主鍵和生成列(專(zhuān)業(yè)編號(hào))。USExscj;ALTERTABLExs2 ADD專(zhuān)業(yè)編號(hào)char(2)GENERATEDALWAYSAS(SUBSTRING(學(xué)號(hào),3,2)), ADDPRIMARYKEY(學(xué)號(hào));DESCRIBExs2;修

表說(shuō)明:①xs2表采用“CREATE…ASSELECT…”方式創(chuàng)建,雖然原xs表包含“學(xué)號(hào)”列主鍵,但xs2表沒(méi)有主鍵。這里給xs2表增加“學(xué)號(hào)”列主鍵。②“專(zhuān)業(yè)編號(hào)”列為char(2)數(shù)據(jù)類(lèi)型,它由學(xué)號(hào)列的第3、4位生成,是虛擬的列。執(zhí)行后,xs2表的結(jié)構(gòu)如圖。修

表(2)刪除列、列索引、主鍵和完整性約束DROP[COLUMN]列名|DROP{INDEX|KEY}索引名|DROPPRIMARYKEY|DROPFOREIGNKEY外鍵約束名|CHECK完整性約束名(3)修改表索引名和表名RENAME{INDEX|KEY}原索引名TO新索引名3.修改表選項(xiàng)具體定義與CREATETABLE語(yǔ)句一樣。03表刪除和更名更改表名表刪除表刪除和更名1.更改表名除了上面的ALTERTABLE命令用“RENAME新表名”修改表名,還可以直接用下列語(yǔ)句來(lái)更改表的名字。RENAMETABLE

原表名TO新表名,...2.表刪除當(dāng)需要?jiǎng)h除一個(gè)表時(shí)可以使用下列語(yǔ)句。DROP[TEMPORARY]TABLE[IFEXISTS]表名,...說(shuō)明:這個(gè)命令將表的描述、完整性約束、索引及與表相關(guān)的權(quán)限等一并刪除。第3章

數(shù)據(jù)庫(kù)和表——表記錄的操作01插

錄插入新記錄插入圖片用已有表記錄插入當(dāng)前表記錄替換舊記錄系統(tǒng)模式插入記錄1.插入新記錄向表中插入全新的記錄用下列語(yǔ)句。INSERT[選項(xiàng)][INTO]表名[(列名,...)]VALUES({表達(dá)式|DEFAULT},...),...或者INSERT[選項(xiàng)][INTO]表名[(列名,...)]|SET列名={表達(dá)式|DEFAULT},...[ONDUPLICATEKEYUPDATE列名=表達(dá)式,...]插入記錄說(shuō)明:(1)INTO子句:如果只給表的部分列插入數(shù)據(jù),需要指定這些列。若沒(méi)有指定列,表示對(duì)所有列插入數(shù)據(jù),值的順序與表結(jié)構(gòu)定義的順序相同。(2)

VALUES子句:包含各列需要插入的數(shù)據(jù)清單,數(shù)據(jù)的順序要與列的順序相對(duì)應(yīng)。若表名后不給出列名,則要在VALUES子句中給出每一列(除IDENTITY和timestamp類(lèi)型的列)的值,如果列值為空,則值必須為NULL,否則會(huì)出錯(cuò)。(3)

選項(xiàng):LOW_PRIORITY:可以使用在INSERT、DELETE和UPDATE等操作中,當(dāng)原有客戶端正在讀取數(shù)據(jù)時(shí),延遲操作的執(zhí)行,直到?jīng)]有其他客戶端從表中讀取數(shù)據(jù)為止。DELAYED:若使用此關(guān)鍵字,則服務(wù)器會(huì)把待插入的行放到一個(gè)緩沖器中,而發(fā)送INSERTDELAYED語(yǔ)句的客戶端會(huì)繼續(xù)運(yùn)行。HIGH_PRIORITY:可以使用在SELECT和INSERT操作中,使操作優(yōu)先執(zhí)行。IGNORE:使用此關(guān)鍵字,在執(zhí)行語(yǔ)句時(shí)出現(xiàn)的錯(cuò)誤就會(huì)被當(dāng)作警告處理。ONDUPLICATEKEYUPDATE…:使用此選項(xiàng)插入行后,若導(dǎo)致UNIQUEKEY或PRIMARYKEY出現(xiàn)重復(fù)值,則根據(jù)UPDATE后的語(yǔ)句修改舊行(使用此選項(xiàng)時(shí)DELAYED被忽略)。(4)

SET子句:SET子句用于給列指定值,使用SET子句時(shí)表名的后面省略列名。要插入數(shù)據(jù)的列名在SET子句中指定,列名等號(hào)后面為指定數(shù)據(jù),未指定的列,其值為默認(rèn)值。插入記錄【例】向xscj數(shù)據(jù)庫(kù)的xs表(表中列包括學(xué)號(hào)、姓名、專(zhuān)業(yè)、性別、出生日期、總學(xué)分、照片、備注)中插入如下一行記錄:221101,王林,計(jì)算機(jī),1,2004-02-10,15使用下列語(yǔ)句插入記錄:USExscj;INSERTINTOxsVALUES('221101','王林','計(jì)算機(jī)',1,'2004-02-10',15,NULL,NULL);若xs表中性別采用默認(rèn)值,照片和備注為NULL,插入記錄:INSERTINTOxs(學(xué)號(hào),姓名,專(zhuān)業(yè),出生日期,總學(xué)分)VALUES('221104','韋嚴(yán)平','計(jì)算機(jī)','2004-08-26',12);使用SET子句插入記錄:INSERTINTOxsSET學(xué)號(hào)='221201',姓名='劉華',專(zhuān)業(yè)='通信工程',性別=DEFAULT,出生日期='2004-06-10',

溫馨提示

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