《MySQL數(shù)據(jù)原理與應(yīng)用》 課件全套 第1-15章 數(shù)據(jù)庫概述、MySQL工具的使用- 部署和運(yùn)行數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)_第1頁
《MySQL數(shù)據(jù)原理與應(yīng)用》 課件全套 第1-15章 數(shù)據(jù)庫概述、MySQL工具的使用- 部署和運(yùn)行數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)_第2頁
《MySQL數(shù)據(jù)原理與應(yīng)用》 課件全套 第1-15章 數(shù)據(jù)庫概述、MySQL工具的使用- 部署和運(yùn)行數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)_第3頁
《MySQL數(shù)據(jù)原理與應(yīng)用》 課件全套 第1-15章 數(shù)據(jù)庫概述、MySQL工具的使用- 部署和運(yùn)行數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)_第4頁
《MySQL數(shù)據(jù)原理與應(yīng)用》 課件全套 第1-15章 數(shù)據(jù)庫概述、MySQL工具的使用- 部署和運(yùn)行數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)_第5頁
已閱讀5頁,還剩994頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫概述第1章通過本課程的學(xué)習(xí),您將應(yīng)該:了解數(shù)據(jù)庫的相關(guān)概念熟悉數(shù)據(jù)庫工具的使用熟悉SQL語言的規(guī)則與規(guī)范熟練掌握MySQL數(shù)據(jù)庫管理方法熟練掌握MySQL表結(jié)構(gòu)管理方法熟練掌握表記錄的檢索方法熟練掌握視圖與索引的使用方法熟練掌握數(shù)據(jù)處理之增刪改熟練掌握存儲過程與游標(biāo)的使用方法熟練掌握存儲函數(shù)的應(yīng)用熟練掌握觸發(fā)器的應(yīng)用熟練掌握事務(wù)的基本特性和應(yīng)用場景熟練掌握數(shù)據(jù)庫安全及管理熟練掌握MySQL數(shù)據(jù)庫備份和恢復(fù)操作了解利用MySQL+Java開發(fā)一個數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)并部署課程目標(biāo)項(xiàng)目部署成功本講教學(xué)目標(biāo)了解為什么要使用數(shù)據(jù)庫。了解數(shù)據(jù)庫的相關(guān)概念。熟悉常見的數(shù)據(jù)庫及排名。了解RDBMS與非RDBMS。掌握數(shù)據(jù)庫設(shè)計(jì)的步驟。通過本講的學(xué)習(xí),您將可以:1.OPTION2.OPTIONOPTION4.OPTION3.5.OPTION數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)的主界面目錄Content為什么要使用數(shù)據(jù)庫01數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)02RDBMS與非RDBMS03關(guān)系型數(shù)據(jù)庫設(shè)計(jì)04課業(yè)任務(wù)05為什么要使用數(shù)據(jù)庫011.1.1何為數(shù)據(jù)庫在信息化社會,充分有效地管理和利用各類信息資源是進(jìn)行科學(xué)研究和決策管理的前提。數(shù)據(jù)庫技術(shù)是管理信息系統(tǒng)、辦公自動化系統(tǒng)、決策支持系統(tǒng)等各類信息系統(tǒng)的核心部分,是進(jìn)行科學(xué)研究和決策管理的重要技術(shù)手段。數(shù)據(jù)庫(DatabaseDB)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫(存儲數(shù)據(jù)的倉庫),它產(chǎn)生于距今六十多年前,隨著信息技術(shù)和市場的發(fā)展,特別是20世紀(jì)90年代以后,數(shù)據(jù)管理不再僅僅是存儲和管理數(shù)據(jù),而轉(zhuǎn)變成用戶所需要的各種數(shù)據(jù)管理的方式。數(shù)據(jù)庫有很多種類型,從最簡單的存儲有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲的大型數(shù)據(jù)庫系統(tǒng)都在各個方面得到了廣泛的應(yīng)用。1.1.2數(shù)據(jù)庫的特點(diǎn)數(shù)據(jù)庫最顯著的特點(diǎn)是數(shù)據(jù)持久化(persistence),即把數(shù)據(jù)保存在可掉電式存儲設(shè)備中以供之后使用。大多數(shù)情況下,特別是企業(yè)級應(yīng)用,數(shù)據(jù)持久化意味著將內(nèi)存中的數(shù)據(jù)保存到硬盤上加以“固化”,而持久化的實(shí)現(xiàn)過程大多通過各種關(guān)系數(shù)據(jù)庫來完成,如下圖所示。持久化的主要作用是將內(nèi)存中的數(shù)據(jù)存儲在關(guān)系型數(shù)據(jù)庫中,也可以存儲在磁盤文件、XML數(shù)據(jù)文件中。數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)021.2.1數(shù)據(jù)庫的相關(guān)概念數(shù)據(jù)表數(shù)據(jù)表(Table)是一個二維表格,用來存儲數(shù)據(jù)和操作數(shù)據(jù)的邏輯結(jié)構(gòu)。它由縱向的列和橫向的行組成。行被稱為記錄,列被為字段,每一列表示記錄的一個屬性,有相應(yīng)的描述信息,如數(shù)據(jù)類型、數(shù)據(jù)寬度等。數(shù)據(jù)庫數(shù)據(jù)庫(Database),簡稱DB,是存儲數(shù)據(jù)的“倉庫”,其本質(zhì)是一個文件系統(tǒng)。一個數(shù)據(jù)庫可以包含多個數(shù)據(jù)表,數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)所需數(shù)據(jù)庫db_study包括若干個數(shù)據(jù)表,保存在安裝路徑的Date文件夾中,如下圖所示為本教材設(shè)計(jì)和開發(fā)的數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)所需的數(shù)據(jù)庫及其相關(guān)的數(shù)據(jù)表。1.2.1數(shù)據(jù)庫的相關(guān)概念數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem)簡稱DBMS,是一種操縱和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行統(tǒng)一管理和控制,用戶通過數(shù)據(jù)庫管理系統(tǒng)訪問數(shù)據(jù)庫中表內(nèi)的數(shù)據(jù)。數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)簡稱DBS,是一個人-機(jī)系統(tǒng),由硬件、軟件(操作系統(tǒng))、數(shù)據(jù)庫、DBMS、數(shù)據(jù)庫管理員組成。1.2.2數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(DBMS)可以管理多個數(shù)據(jù)庫,一般開發(fā)人員會針對每一個應(yīng)用創(chuàng)建一個數(shù)據(jù)庫。為保存應(yīng)用中實(shí)體的數(shù)據(jù),一般會在數(shù)據(jù)庫創(chuàng)建多個表,以保存程序中實(shí)體用戶的數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫和表的關(guān)系如下圖所示。1.2.3數(shù)據(jù)庫管理系統(tǒng)排名根據(jù)CCF數(shù)據(jù)庫專業(yè)委員會2021年12月發(fā)布的《數(shù)據(jù)庫系統(tǒng)的分類和測評研究》,數(shù)據(jù)庫有三種常用分類:按照數(shù)據(jù)模型可分為關(guān)系型、非關(guān)系型;按照架構(gòu)可分為單機(jī)、集中式、分布式;按部署形態(tài)可分為本地化部署和云部署。關(guān)系型數(shù)據(jù)庫是主流的數(shù)據(jù)庫產(chǎn)品之一。根據(jù)艾瑞咨詢統(tǒng)計(jì),中國市場中約90%的數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫。1.2.3數(shù)據(jù)庫管理系統(tǒng)排名當(dāng)前中國的數(shù)據(jù)庫參與者可以分為三大類:

開源數(shù)據(jù)庫以MySQL、PostgreSQL為代表,通過全球化的開源社區(qū)形成強(qiáng)大生態(tài),并孵化出諸多商業(yè)數(shù)據(jù)庫發(fā)行版產(chǎn)品。

國內(nèi)數(shù)據(jù)庫有達(dá)夢、人大金倉、南大通用、神舟通用、瀚高為代表的老牌廠商,有華為(openGauss、GaussDB)、阿里(OceanBase、PolarDB)、騰訊(TDSQL)等大廠,有TiDB、海量數(shù)據(jù)(Vastbase)、優(yōu)炫(UXDB)等初創(chuàng)廠商,也有基于自身業(yè)務(wù)需求延伸到數(shù)據(jù)庫領(lǐng)域的跨界廠商,例如中興、浪潮、東軟、亞信科技等。海外商業(yè)數(shù)據(jù)庫以O(shè)racle、MicrosoftSQLServer、IBMDb2、Amazon、SAP、Teradata、Snowflake為代表,憑借成熟技術(shù)、豐富用例、已建立極其完善的生態(tài)。

1.2.3數(shù)據(jù)庫管理系統(tǒng)排名下圖是2023年DB-EnginesRanking對各個數(shù)據(jù)庫受歡迎度進(jìn)行調(diào)查后的統(tǒng)計(jì)結(jié)果,其中Oracle、MySQL、MSSQLServer位于前三。查看數(shù)據(jù)庫受歡迎度最新排名的網(wǎng)址是/en/ranking。說明:1.2.3數(shù)據(jù)庫管理系統(tǒng)排名近些年,隨著國產(chǎn)數(shù)據(jù)庫的不斷發(fā)展與崛起,比較知名“國產(chǎn)數(shù)據(jù)庫四小龍”分別是武漢達(dá)夢、人大金倉、神州通用和南大通用。達(dá)夢屬于oracle系的,人大金倉屬于PostgreSQL系的。2022年6月,由互聯(lián)網(wǎng)周刊、中國社會科學(xué)院信息化研究中心、eNet研究院、德本咨詢聯(lián)合推出《2022信創(chuàng)數(shù)據(jù)庫企業(yè)排行》前15家數(shù)據(jù)庫企業(yè)如圖1.5所示。達(dá)夢數(shù)據(jù)庫以綜合評分0.02分的優(yōu)勢排名第一。1.2.4常見的數(shù)據(jù)庫1.OracleOracle是甲骨文公司開發(fā)的一款關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它在數(shù)據(jù)庫領(lǐng)域一直處于領(lǐng)先地位,它的系統(tǒng)具有可用性強(qiáng),數(shù)據(jù)安全性強(qiáng),穩(wěn)定性強(qiáng)等優(yōu)點(diǎn),適用于各類大、中、小微機(jī)環(huán)境,Oracle是一種高效率的、可靠性好的、適應(yīng)高吞吐量的數(shù)據(jù)庫解決方案。但是它擴(kuò)展性不足,價(jià)格昂貴,操作比較復(fù)雜,需要的技術(shù)含量高。圖片來源于百度1.2.4常見的數(shù)據(jù)庫2.MySQLMySQL是瑞典MySQLAB公司的一款關(guān)系型數(shù)據(jù)庫管理系統(tǒng),屬于Oracle旗下產(chǎn)品。它是用C和C++語言編寫的,并且使用了多種編輯器進(jìn)行測試,以保證源碼的可移植性,支持多個操作系統(tǒng),支持多線程,可以充分地利用CPU資源,為多種編程語言提供API,它優(yōu)化了SQL算法,有效的提高了查詢速度,MySQL內(nèi)提供了用于管理,檢查以及優(yōu)化數(shù)據(jù)庫操作的管理工具,MySQL具有易于使用,性能強(qiáng)大,跨平臺,免費(fèi)的優(yōu)點(diǎn)。圖片來源于百度1.2.4常見的數(shù)據(jù)庫3.SQLServerSQLServer是美國Microsoft公司推出的一種關(guān)系型數(shù)據(jù)庫系統(tǒng)。它是一個可擴(kuò)展的、高性能的、專為分布式客戶機(jī)/服務(wù)器計(jì)算設(shè)計(jì),實(shí)現(xiàn)了與WindowsNT的有機(jī)結(jié)合,提供了基于事務(wù)的企業(yè)級信息管理系統(tǒng)方案。它具有易用性,適合分布式組織的可伸縮性,用于決策支持的數(shù)據(jù)倉庫功能,具有與許多其他服務(wù)器軟件緊密關(guān)聯(lián)的集成性,良好的性價(jià)比的優(yōu)點(diǎn)。圖片來源于百度1.2.4常見的數(shù)據(jù)庫4.DB2DB2是IBM公司開發(fā)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它支持面向?qū)ο蟮木幊?,支持多媒體應(yīng)用程序,以及存儲過程和觸發(fā)器。用戶可以在建表時顯示地定義復(fù)雜的完整性規(guī)則,提供GUI和命令行,在windows和Unix下操作相同。DB2還支持異構(gòu)分布式數(shù)據(jù)庫訪問,支持?jǐn)?shù)據(jù)復(fù)制。圖片來源于百度1.2.4常見的數(shù)據(jù)庫5.PostgreSQLPostgreSQL是基于加州大學(xué)計(jì)算機(jī)系開發(fā)的POSTGRES,4.2版本為基礎(chǔ)的對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。它是一種特性非常齊全的自由軟件的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。它支持大部分的SQL標(biāo)準(zhǔn)并且提供了很多其他現(xiàn)代特性,它也可以用許多方法擴(kuò)展。它有穩(wěn)定性極強(qiáng),性能高速度快,多年來在GIS(地理信息系統(tǒng))領(lǐng)域處于優(yōu)勢地位,并且其“無鎖定”特性非常突出。圖片來源于百度1.2.4常見的數(shù)據(jù)庫6.SQLiteSQLite是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的C庫中。它實(shí)現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的SQL數(shù)據(jù)庫引擎。它有零配置,緊湊,可移植的優(yōu)點(diǎn)。但它不適用于存儲過大的數(shù)據(jù)庫,并且與MySQL不同,它不使用固定的日志文件。圖片來源于百度1.2.4常見的數(shù)據(jù)庫7.informixInformix是IBM公司出品的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)家族。它被定位為作為IBM在線事務(wù)處理(OLTP)旗艦級數(shù)據(jù)服務(wù)系統(tǒng)。因此它專注于高可用性和可靠性,并具有適應(yīng)性強(qiáng)的特點(diǎn)。Informix還具有簡單、輕便、易用性等優(yōu)點(diǎn)。但是,因?yàn)槠渥畛跏菫樾⌒蛿?shù)據(jù)庫設(shè)計(jì)的,所以其產(chǎn)品可能仍然存在一些小型數(shù)據(jù)庫的限制,如可擴(kuò)展性受到限制等。圖片來源于百度RDBMS與非RDBMS03從排名中能得出,關(guān)系型數(shù)據(jù)庫絕對是DBMS的主流,其中排名靠前的Oracle、MySQL、SQLServer和國產(chǎn)達(dá)夢數(shù)據(jù)庫都是關(guān)系型數(shù)據(jù)庫(RDBMS)。1.3.1關(guān)系型數(shù)據(jù)庫

實(shí)質(zhì)這種類型的數(shù)據(jù)庫是最古老的數(shù)據(jù)庫類型,關(guān)系型數(shù)據(jù)庫模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系(即二維表格形式),如下圖所示。1.3.1關(guān)系型數(shù)據(jù)庫

關(guān)系型數(shù)據(jù)庫以行(row)和列(column)的形式存儲數(shù)據(jù),以便于用戶理解。這一系列的行和列被稱為表(table),一組表組成了一個庫(database)。表與表之間的數(shù)據(jù)記錄有關(guān)系(relationship)?,F(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來表示。關(guān)系型數(shù)據(jù)庫,就是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,如下圖所示,關(guān)系型數(shù)據(jù)庫實(shí)質(zhì)圖,SQL就是關(guān)系型數(shù)據(jù)庫的查詢語言。1.3.1關(guān)系型數(shù)據(jù)庫

(2)事務(wù)支持(1)復(fù)雜查詢優(yōu)勢可以用SQL語句方便地在一個表以及多個表之間做非常復(fù)雜的數(shù)據(jù)查詢。使得對于安全性能很高的數(shù)據(jù)訪問要求得以實(shí)現(xiàn)。非關(guān)系型數(shù)據(jù)庫,可看成傳統(tǒng)關(guān)系型數(shù)據(jù)庫的功能閹割版本,基于鍵值對存儲數(shù)據(jù),不需要經(jīng)過SQL層的解析,性能非常高。同時,通過減少不常用的功能,進(jìn)一步提高性能。目前基本上大部分主流的非關(guān)系型數(shù)據(jù)庫都是免費(fèi)的。1.3.2非關(guān)系型數(shù)據(jù)庫

1.3.3常見的非關(guān)系型數(shù)據(jù)庫相比于SQL,NoSQL泛指非關(guān)系型數(shù)據(jù)庫,包括了鍵值型數(shù)據(jù)庫、文檔型數(shù)據(jù)庫、搜索引擎和列存儲等,除此以外還包括圖形數(shù)據(jù)庫。也只有用NoSQL一詞才能將這些技術(shù)囊括進(jìn)來。1.鍵值型數(shù)據(jù)庫鍵值型數(shù)據(jù)庫通過“Key-Value”鍵值的方式來存儲數(shù)據(jù),其中Key和Value可以是簡單的對象,也可以是復(fù)雜的對象,如右圖所示。Key作為唯一的標(biāo)識符,優(yōu)點(diǎn)是查找速度快,在這方面明顯優(yōu)于關(guān)系型數(shù)據(jù)庫,缺點(diǎn)是無法像關(guān)系型數(shù)據(jù)庫一樣使用條件過濾(比如WHERE),如果不知道去哪里找數(shù)據(jù),就要遍歷所有的鍵,這就會消耗大量的計(jì)算。鍵值型數(shù)據(jù)庫典型的使用場景是作為內(nèi)存緩存,Redis是最流行的鍵值型數(shù)據(jù)庫。1.3.3常見的非關(guān)系型數(shù)據(jù)庫2.文檔型數(shù)據(jù)庫此類數(shù)據(jù)庫可存放并獲取文檔,可以是XML、JSON等格式。在數(shù)據(jù)庫中文檔作為處理信息的基本單位,一個文檔就相當(dāng)于一條記錄。文檔數(shù)據(jù)庫所存放的文檔,就相當(dāng)于鍵值數(shù)據(jù)庫所存放的“值”,MongoDB和CouchDB就是文檔型數(shù)據(jù)庫的代表。3.搜索引擎數(shù)據(jù)庫雖然關(guān)系型數(shù)據(jù)庫采用了索引提升檢索效率,但是針對全文索引效率卻較低。搜索引擎數(shù)據(jù)庫是應(yīng)用在搜索引擎領(lǐng)域的數(shù)據(jù)存儲形式,由于搜索引擎會爬取大量的數(shù)據(jù),并以特定的格式進(jìn)行存儲,這樣在檢索的時候才能保證性能最優(yōu)。核心原理是“倒排索引”。典型產(chǎn)品:Solr、Elasticsearch、Splunk等。1.3.3常見的非關(guān)系型數(shù)據(jù)庫4.列式數(shù)據(jù)庫列式數(shù)據(jù)庫是相對于行式存儲的數(shù)據(jù)庫,Oracle、MySQL、SQLServer等數(shù)據(jù)庫都是采用的行式存儲(Row-based),而列式數(shù)據(jù)庫是將數(shù)據(jù)按照列存儲到數(shù)據(jù)庫中,這樣做的好處是可以大量降低系統(tǒng)的I/O,適合于分布式文件系統(tǒng),不足在于功能相對有限。典型產(chǎn)品:HBase等。5.圖形數(shù)據(jù)庫圖形數(shù)據(jù)庫利用圖這種數(shù)據(jù)結(jié)構(gòu)存儲了實(shí)體(對象)之間的關(guān)系。圖形數(shù)據(jù)庫最典型的例子就是社交網(wǎng)絡(luò)中人與人的關(guān)系,數(shù)據(jù)模型主要是以節(jié)點(diǎn)和邊(關(guān)系)來實(shí)現(xiàn),特點(diǎn)在于能高效地解決復(fù)雜的關(guān)系問題,如右圖所示。1.3.3常見的非關(guān)系型數(shù)據(jù)庫5.圖形數(shù)據(jù)庫圖形數(shù)據(jù)庫利用圖這種數(shù)據(jù)結(jié)構(gòu)存儲了實(shí)體(對象)之間的關(guān)系。圖形數(shù)據(jù)庫最典型的例子就是社交網(wǎng)絡(luò)中人與人的關(guān)系,數(shù)據(jù)模型主要是以節(jié)點(diǎn)和邊(關(guān)系)來實(shí)現(xiàn),特點(diǎn)在于能高效地解決復(fù)雜的關(guān)系問題,如右圖所示。圖形數(shù)據(jù)庫顧名思義,是一種存儲圖形關(guān)系的數(shù)據(jù)庫,利用圖這種數(shù)據(jù)結(jié)構(gòu)存儲實(shí)體(對象)之間的關(guān)系。關(guān)系型數(shù)據(jù)用于存儲明確關(guān)系的數(shù)據(jù),但對于復(fù)雜關(guān)系的數(shù)據(jù)存儲卻有些力不從心。如社交網(wǎng)絡(luò)中人物之間的關(guān)系,如果用關(guān)系型數(shù)據(jù)庫則非常復(fù)雜,用圖形數(shù)據(jù)庫將非常簡單。典型產(chǎn)品有Neo4J、InfoGrid等。NoSQL的分類很多,即便如此,在DBMS排名中,還是SQL陣營的比重更大,影響力前5的DBMS中有4個是關(guān)系型數(shù)據(jù)庫,而排名前20的DBMS中也有12個是關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫設(shè)計(jì)041.4.1信息世界的基本概念從商業(yè)計(jì)算機(jī)的出現(xiàn)開始,信息處理就一直推動著計(jì)算機(jī)的發(fā)展。數(shù)據(jù)如何進(jìn)行自動化的處理也是起于計(jì)算機(jī)的出現(xiàn),在早期,數(shù)據(jù)存儲和處理是使用我們的磁帶進(jìn)行存儲,但隨著數(shù)據(jù)量擴(kuò)大和科技的進(jìn)步,20世紀(jì)60年代末硬盤的廣泛使用極大地改變了數(shù)據(jù)處理的情況。在1970年,IBM公司的研究院EdgarCodd在CommunicationsofACM上發(fā)表了《ARelationalModelofDataforLargeSharedDataBanks》,因此拉開了關(guān)系型數(shù)據(jù)庫軟件革命的序幕。隨后,Codd在1981年獲得了圖靈獎,以表彰其在數(shù)據(jù)庫管理系統(tǒng)的理論與實(shí)踐領(lǐng)域的根本性的,持續(xù)性的貢獻(xiàn)。發(fā)展到目前為止,主流的關(guān)系型數(shù)據(jù)庫有Oracle、DB2、MySQL、MicrosoftSQLServer、MogDB等多個品種,每種數(shù)據(jù)庫的語法、功能和特性也各具特色。1.4.1信息世界的基本概念數(shù)據(jù)庫中的信息世界主要可以抽象為以下基本概念:實(shí)體指客觀存在并且可以相互區(qū)別的事物。實(shí)體可以是具體的人、事、物,也可以是抽象的概念或聯(lián)系。例如,一個部門、一個班級、一個老師、一個學(xué)生等都是實(shí)體。實(shí)體(entity)實(shí)體所具有的某一特性稱為實(shí)體的屬性。一個實(shí)體可由若干個屬性來描述。例如,學(xué)生實(shí)體可以用學(xué)號、姓名、性別、身高、出生日期、班號、聯(lián)系電話等屬性來描述。屬性(attribute)唯一標(biāo)識實(shí)體的屬性集稱為關(guān)鍵字,也叫主鍵。例如,學(xué)號是學(xué)生實(shí)體的關(guān)鍵字。關(guān)鍵字(key)1.4.1信息世界的基本概念屬性的取值范圍稱為該屬性的域。例如,學(xué)生實(shí)體的性別屬性的域?yàn)椋校?。域(domain)同型實(shí)體的集合稱為實(shí)體集。例如,全體學(xué)生就是一個實(shí)體集,全體教師也是一個實(shí)體集。實(shí)體集(entityset)在現(xiàn)實(shí)世界中,事物內(nèi)部及事物之間普遍存在聯(lián)系,這些聯(lián)系在信息世界中表現(xiàn)為實(shí)體型內(nèi)部各屬性之間的聯(lián)系以及實(shí)體型之間的聯(lián)系。兩個實(shí)體型之間的聯(lián)系可以分為三類:一對一聯(lián)系(1:1)一對多聯(lián)系(1:n)多對多聯(lián)系(m:n)聯(lián)系(relationship)1.4.2數(shù)據(jù)模型數(shù)據(jù)庫結(jié)構(gòu)的基礎(chǔ)是數(shù)據(jù)模型:一個描述數(shù)據(jù)、數(shù)據(jù)聯(lián)系、數(shù)據(jù)語義以及一致性約束的概念工具的集合。數(shù)據(jù)模型的作用是將用戶數(shù)據(jù)進(jìn)行有效的組織,使其成為數(shù)據(jù)庫,并能進(jìn)行訪問和數(shù)據(jù)處理。數(shù)據(jù)模型有很多種,這里介紹常見的四種數(shù)據(jù)模型。1.關(guān)系模型(relationmodel)關(guān)系模型用表的集合來表示數(shù)據(jù)和數(shù)據(jù)間的聯(lián)系。每個表有多個列,每列有唯一的列名。表也稱作關(guān)系。關(guān)系模型是基于記錄的模型的一種?;谟涗浀哪P偷拿Q的由來是數(shù)據(jù)庫是由若干種固定數(shù)目的字段或?qū)傩?。表的列對?yīng)于記錄類型的屬性。關(guān)系數(shù)據(jù)模型是使用最廣泛的數(shù)據(jù)模型,當(dāng)今大量的數(shù)據(jù)庫系統(tǒng)都基于這種關(guān)系模型。1.4.2數(shù)據(jù)模型2.實(shí)體-聯(lián)系模型實(shí)體-聯(lián)系(E-R)數(shù)據(jù)模型使用稱作實(shí)體的基本對象集合,以及這些對象間的聯(lián)系。實(shí)體是現(xiàn)實(shí)世界中可區(qū)別于其他對象的一件“事情”或一個“物體”。實(shí)體-聯(lián)系模型被廣泛用于數(shù)據(jù)庫設(shè)計(jì)。3.半結(jié)構(gòu)化數(shù)據(jù)模型半結(jié)構(gòu)化數(shù)據(jù)模型允許在其數(shù)據(jù)定義中某些相同類型的數(shù)據(jù)項(xiàng)含有不同的屬性集。這和前面講到的數(shù)據(jù)模型形成了對比,在數(shù)據(jù)模型中特定類型的每一個數(shù)據(jù)項(xiàng)都必須有相同的屬性集。JSON和可擴(kuò)展標(biāo)記語言被廣泛地用于表示半結(jié)構(gòu)化數(shù)據(jù)。1.4.2數(shù)據(jù)模型4.基于對象的數(shù)據(jù)模型面向?qū)ο蟮某绦蛟O(shè)計(jì)(特別是Java,C++或C#)已經(jīng)成為占主導(dǎo)地位的軟件開發(fā)方法。這在最初的時候?qū)е铝艘粋€獨(dú)特的面向?qū)ο髷?shù)據(jù)模型的發(fā)展,但是現(xiàn)在對象的概念已經(jīng)被存放在數(shù)據(jù)庫系統(tǒng)中,并由數(shù)據(jù)庫系統(tǒng)來執(zhí)行它們。這可以看成對關(guān)系模型進(jìn)行擴(kuò)展,增加了封裝,方法和對象標(biāo)識等概念。根據(jù)應(yīng)用的目的不同,將數(shù)據(jù)模型分為兩個層次:概念模型結(jié)構(gòu)數(shù)據(jù)模型概念模型(即實(shí)體-聯(lián)系模型)是從用戶的角度對信息進(jìn)行建模。結(jié)構(gòu)數(shù)據(jù)模型(即關(guān)系模型)是從計(jì)算機(jī)應(yīng)用的角度對數(shù)據(jù)進(jìn)行建模。1.4.2數(shù)據(jù)模型概念模型一般使用“實(shí)體-關(guān)系”(E-R)圖表示,E-R圖中包含了實(shí)體、聯(lián)系和屬性三個要素:實(shí)體:即數(shù)據(jù)對象,對應(yīng)現(xiàn)實(shí)世界中的“事物”。屬性:實(shí)體具有的某一特性。聯(lián)系:實(shí)體集之間的對應(yīng)關(guān)系。畫E-R圖最重要的三圖素:實(shí)體,屬性,聯(lián)系。實(shí)體:矩陣框表示,屬性:橢圓形框表示,聯(lián)系:菱形框表示。如右圖所示為班級和學(xué)生的E-R圖。1.4.2數(shù)據(jù)模型將E-R模型中的實(shí)體,屬性,實(shí)體之間的聯(lián)系轉(zhuǎn)換成關(guān)系模式時,一個實(shí)體對應(yīng)一個關(guān)系模式,每個關(guān)系模式內(nèi)需要有主鍵,還有其他必要的屬性,同時還要反映實(shí)體之間的聯(lián)系,用外鍵表示,班級和學(xué)生的關(guān)系模式表示如下:學(xué)生表(學(xué)號,姓名,性別,身高,出生日期,班號,聯(lián)系電話)班級表(班號,班級名稱,部門號)其中,學(xué)號是學(xué)生表的主鍵,班號是學(xué)生表的外鍵,學(xué)生表中還需要有姓名,性別,身高,出生日期以及聯(lián)系電話等學(xué)生表必要的屬性。班號是班級表的主鍵,部門號是班級表的外鍵,部門表還需要部門名稱屬性。1.4.3關(guān)系的完整性約束條件關(guān)系完整性約束是為保證數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性,對關(guān)系模型提出的某種約束條件或規(guī)則。完整性通常包括域完整性,實(shí)體完整性、參照完整性和用戶定義完整性,其中域完整性,實(shí)體完整性和參照完整性,是關(guān)系模型必須滿足的完整性約束條件。1.域完整性域完整性是保證數(shù)據(jù)庫字段取值的合理性,屬性值應(yīng)是域中的值,這是關(guān)系模式規(guī)定了的。除此之外,一個屬性能否為NULL,這是由語義決定的,也是域完整性約束的主要內(nèi)容。域完整性約束(domainIntegrityconstrains)是最簡單、最基本的約束。在當(dāng)今的關(guān)系DBMS中,一般都有域完整性約束檢查功能。1.4.3關(guān)系的完整性約束條件2.實(shí)體完整性(Entityintegrity)實(shí)體完整性是指關(guān)系的主關(guān)鍵字不能重復(fù)也不能取“空值"。一個關(guān)系對應(yīng)現(xiàn)實(shí)世界中一個實(shí)體集?,F(xiàn)實(shí)世界中的實(shí)體是可以相互區(qū)分、識別的,也即它們應(yīng)具有某種唯一性標(biāo)識。在關(guān)系模式中,以主關(guān)鍵字作為唯一性標(biāo)識,而主關(guān)鍵字中的屬性(稱為主屬性)不能取空值,否則,表明關(guān)系模式中存在著不可標(biāo)識的實(shí)體(因空值是“不確定\"的),這與現(xiàn)實(shí)世界的實(shí)際情況相矛盾,這樣的實(shí)體就不是一個完整實(shí)體。按實(shí)體完整性規(guī)則要求,主屬性不得取空值,如主關(guān)鍵字是多個屬性的組合,則所有主屬性均不得取空值。3.參照完整性(ReferentialIntegrity)參照完整性是定義建立關(guān)系之間聯(lián)系的主關(guān)鍵字與外部關(guān)鍵字引用的約束條件。關(guān)系數(shù)據(jù)庫中通常都包含多個存在相互聯(lián)系的關(guān)系,關(guān)系與關(guān)系之間的聯(lián)系是通過公共屬性來實(shí)現(xiàn)的。所謂公共屬性,它是一個關(guān)系R(稱為被參照關(guān)系或目標(biāo)關(guān)系)的主關(guān)鍵字,同時又是另一關(guān)系K(稱為參照關(guān)系)的外部關(guān)鍵字。如果參照關(guān)系K中外部關(guān)鍵字的取值。1.4.4關(guān)系運(yùn)算關(guān)系代數(shù)由一組運(yùn)算組成,這些運(yùn)算接受一個或兩個關(guān)系作為輸入,并生成一個新的關(guān)系作為它們的結(jié)果。關(guān)系代數(shù)的運(yùn)算對象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系,關(guān)系代數(shù)用到的運(yùn)算符主要包括四類:U(并),-(差),∩(交),X(廣義笛卡爾積)。設(shè)有關(guān)系R,S如下圖所示:關(guān)系R,S進(jìn)行“并”運(yùn)算的結(jié)果如下圖所示。1.4.4關(guān)系運(yùn)算關(guān)系R,S進(jìn)行“并”運(yùn)算的結(jié)果如下圖所示。設(shè)有關(guān)系R,S如下圖所示:1.4.4關(guān)系運(yùn)算關(guān)系R,S進(jìn)行“差”運(yùn)算的結(jié)果如下圖所示。關(guān)系R,S進(jìn)行“交”運(yùn)算的結(jié)果如下圖所示。1.4.4關(guān)系運(yùn)算關(guān)系R,S進(jìn)行“笛卡爾積”運(yùn)算的結(jié)果如下圖所示。1.4.4關(guān)系運(yùn)算關(guān)系數(shù)據(jù)庫的數(shù)據(jù)運(yùn)算符在集合運(yùn)算符外,還有專門的關(guān)系運(yùn)算符:σ(選擇),∏(投影),∞(連接)。在本教材即將開發(fā)的數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)中有學(xué)生表tb_student和班級表tb_calss,學(xué)生表的具體字段如下圖所示,有student_id(學(xué)號)、student_name(姓名)、student_gender(性別)、student_height(身高)、student_birthday(出生日期)、class_id(班號)、student_phone(聯(lián)系電話)7個字段。1.4.4關(guān)系運(yùn)算班級表的具體字段如下圖所示,有class_id(班號)、class_name(班級名稱)、department_id(部門號)三個字段。1.4.4關(guān)系運(yùn)算選擇運(yùn)算是單目運(yùn)算,是從關(guān)系R中找出滿足給定條件F的所有元組,組成一個新關(guān)系。1.選擇運(yùn)算(σ)【案例1.1】查找姓王的同學(xué)的信息。關(guān)系R為學(xué)生表,條件F為姓王的同學(xué),組成的新的關(guān)系如下圖所示,找到了姓名王一明同學(xué)的全部信息。投影運(yùn)算是單目運(yùn)算,關(guān)系R上的投影是從R中選擇出若干屬性列A,刪去重復(fù)元組,組成新的關(guān)系。2.投影運(yùn)算(∏)1.4.4關(guān)系運(yùn)算投影運(yùn)算是單目運(yùn)算,關(guān)系R上的投影是從R中選擇出若干屬性列A,刪去重復(fù)元組,組成新的關(guān)系。2.投影運(yùn)算(∏)【案例1.2】查找學(xué)生表中的學(xué)號,姓名信息。關(guān)系R為學(xué)生表,屬性列A為學(xué)生表中的學(xué)號和姓名列,刪除重復(fù)記錄(因?qū)W號是主鍵,要求值不能重復(fù),所以不存在重復(fù)記錄),組成新的關(guān)系,如右圖所示。1.4.4關(guān)系運(yùn)算連接運(yùn)算是二目運(yùn)算,是從兩個關(guān)系的屬性名中選取滿足連接條件的元組,組成新的關(guān)系。3.連接運(yùn)算(∞)【案例1.3】查找姓王同學(xué)的學(xué)號,姓名和成績。關(guān)系表為學(xué)生表tb_student和tb_grade兩個數(shù)據(jù)表,條件是姓王的同學(xué),屬性列A為學(xué)生表的學(xué)號、姓名以及成績表中的成績?nèi)?,組成新的關(guān)系,如下圖所示。1.4.5關(guān)系型數(shù)據(jù)庫設(shè)計(jì)的基本步驟按照規(guī)范設(shè)計(jì)的方法,考慮數(shù)據(jù)庫及其應(yīng)用系統(tǒng)開發(fā)全過程,將數(shù)據(jù)庫設(shè)計(jì)分為以下六個階段:第一階段:需求分析(用戶需要分析)。第二階段:概念結(jié)構(gòu)設(shè)計(jì)(用E-R模型對現(xiàn)實(shí)進(jìn)行描述)。第三階段:邏輯結(jié)構(gòu)設(shè)計(jì)(轉(zhuǎn)換成計(jì)算機(jī)可以表達(dá)的方式:關(guān)系模型,即表)。第四階段:物理結(jié)構(gòu)設(shè)計(jì)(功能描述)。第六階段:數(shù)據(jù)庫運(yùn)行和維護(hù)(應(yīng)用與維護(hù))。課業(yè)任務(wù)051.5

課業(yè)任務(wù)課業(yè)任務(wù)1-1開發(fā)數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)的需求分析課業(yè)任務(wù)1-2數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)的概念結(jié)構(gòu)設(shè)計(jì)課業(yè)任務(wù)1-3數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)的邏輯結(jié)構(gòu)設(shè)計(jì)課業(yè)任務(wù)1-6數(shù)據(jù)庫運(yùn)行課業(yè)任務(wù)1-4數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)的物理結(jié)構(gòu)設(shè)計(jì)課業(yè)任務(wù)1-5數(shù)據(jù)庫實(shí)施王小明想開發(fā)一個數(shù)據(jù)庫學(xué)習(xí)系統(tǒng),前期已經(jīng)有了Java語言基礎(chǔ),現(xiàn)在想確定一種數(shù)據(jù)庫技術(shù)來支撐數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)的開發(fā),實(shí)現(xiàn)增刪查改等功能,現(xiàn)通過6個課業(yè)任務(wù)來了解數(shù)據(jù)庫設(shè)計(jì)的步驟。選擇題(1)MySQL是一個()的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。A.閉源B.開源C.半開源D.完全收費(fèi)(2)關(guān)系型數(shù)據(jù)庫模型是將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)用來表示()。A.文件B.一維結(jié)構(gòu)C.二維表結(jié)構(gòu)D.自定義方式BC選擇題(3)下列四項(xiàng)中不屬于數(shù)據(jù)庫系統(tǒng)特點(diǎn)的是()。A.數(shù)據(jù)共享B.數(shù)據(jù)獨(dú)立C.數(shù)據(jù)結(jié)構(gòu)化D.數(shù)據(jù)高冗余(4)下列關(guān)系中,()是一對多的關(guān)系。A.正校長和副校長們B.學(xué)生和課程C.醫(yī)生和患者D.老師和課程DA選擇題(5)商品與顧客兩個實(shí)體集之間的聯(lián)系一般是()。A.一對一B.一對多C.無關(guān)系D.多對多D本講拓展MYSQL與SQLServer的區(qū)別:1.操作系統(tǒng)支持不同。MySQL支持Windows、Linux、Unix等操作系統(tǒng),它具有廣泛的跨平臺支持,并且可以與各種編程語言和開發(fā)工具集成,而SQLServer只支持Windows操作系統(tǒng)。2.數(shù)據(jù)處理方式不同。MySQL是基于行的數(shù)據(jù)處理方式,而SQLServer是基于列的數(shù)據(jù)處理方式,這可能會影響各自的性能表現(xiàn)。3.數(shù)據(jù)庫安全性不同。SQLServer在安全性方面表現(xiàn)更強(qiáng),例如支持強(qiáng)制密碼策略、Windows身份驗(yàn)證和數(shù)據(jù)加密,而MySQL在這方面的安全性措施相對較少。感謝觀看MySQL工具的使用第2章通過本課程的學(xué)習(xí),您將應(yīng)該:了解數(shù)據(jù)庫的相關(guān)概念熟悉數(shù)據(jù)庫工具的使用熟悉SQL語言的規(guī)則與規(guī)范熟練掌握MySQL數(shù)據(jù)庫管理方法熟練掌握MySQL表結(jié)構(gòu)管理方法熟練掌握表記錄的檢索方法熟練掌握視圖與索引的使用方法熟練掌握數(shù)據(jù)處理之增刪改熟練掌握存儲過程與游標(biāo)的使用方法熟練掌握存儲函數(shù)的應(yīng)用熟練掌握觸發(fā)器的應(yīng)用熟練掌握事務(wù)的基本特性和應(yīng)用場景熟練掌握數(shù)據(jù)庫安全及管理熟練掌握MySQL數(shù)據(jù)庫備份和恢復(fù)操作了解利用MySQL+Java開發(fā)一個數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)并部署課程目標(biāo)項(xiàng)目部署成功掌握下載MySQL社區(qū)版。掌握在Windows平臺下安裝MySQL、配置、啟停、登錄以及卸載。熟悉使用不同的圖形化管理工具登錄到MySQL數(shù)據(jù)庫。通過完成課業(yè)任務(wù)學(xué)會分析問題、解決問題,提高動手操作能力。通過本講的學(xué)習(xí),您將可以:1.OPTION2.OPTIONOPTION4.OPTION3.登錄成功進(jìn)入后臺管理系統(tǒng)本講教學(xué)目標(biāo)目錄ContentMySQL概述01MySQL的下載與安裝02MySQL服務(wù)的啟動與停止03MySQL服務(wù)器的登錄04課業(yè)任務(wù)05常見錯誤及解決方案06MySQL概述012.1MySQL概述什么是MySQLMySQL是一個開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。MySQL由瑞典MySQLAB公司于1995年開發(fā),后被Sun公司和Oracle公司收購。MySQL成為最受歡迎的開源數(shù)據(jù)庫之一,并且是Oracle旗下的一款數(shù)據(jù)庫產(chǎn)品。MySQL創(chuàng)造者創(chuàng)建了MariaDB作為MySQL的分支項(xiàng)目。MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語言形式,可以運(yùn)行于多個操作系統(tǒng)上。MySQL支持C、C++、Python、Java、Perl、PHP和Ruby等多種編程語言。2.1MySQL概述MySQL的歷史就是整個互聯(lián)網(wǎng)的發(fā)展史?;ヂ?lián)網(wǎng)業(yè)務(wù)從社交領(lǐng)域、電商領(lǐng)域到金融領(lǐng)域的發(fā)展,推動著應(yīng)用對數(shù)據(jù)庫的需求提升,對傳統(tǒng)的數(shù)據(jù)庫服務(wù)能力提出了挑戰(zhàn)。高并發(fā)、高性能、高可用、輕資源、維護(hù)、易擴(kuò)展的需求,促進(jìn)了MySQL的成長發(fā)展。MySQL從5.7版本直接跳躍發(fā)布了8.0版本,這是一個令人興奮的里程碑版本。MySQL8.0版本在功能上做了顯著的改進(jìn)與增強(qiáng),開發(fā)者對MySQL的源代碼進(jìn)行了重構(gòu),最突出的一點(diǎn)是對MySQLOptimizer優(yōu)化器進(jìn)行了改進(jìn)。不僅在速度上得到了改善,還為用戶帶來了更好的性能和更棒的體驗(yàn)。MySQL6.x版本之后分為社區(qū)版(免費(fèi))和商業(yè)版(收費(fèi)),本教材使用的是MySQL8.0.31社區(qū)版,發(fā)布時間是:2022年10月11日。2.1MySQL概述MySQL8.0中比較突出的新特征MySQL8.0版本默認(rèn)字符集為utf8mb4(即最多使用4個字節(jié)來表示1個字符,可以表示更多字符,例如生僻漢字、冷門符號、emoji表情符號等)。系統(tǒng)數(shù)據(jù)庫默認(rèn)存儲引擎修改為InnoDB(支持了ACID兼容的事務(wù))。MySQL8.0支持原子數(shù)據(jù)定義語言(DDL)語句,即:InnoDB數(shù)據(jù)表上的DDL可以實(shí)現(xiàn)事務(wù)完整性,要么失敗回滾,要么成功提交,不會出現(xiàn)DDL部分成功的問題。MySQL的下載與安裝022.2MySQL的下載與安裝MySQL支持多平臺,在不同平臺上安裝和配置過程也不相同,本書以在Windows平臺下的安裝和配置為例,具體下載、安裝、環(huán)境變量的配置步驟詳見課業(yè)任務(wù)2-1至課業(yè)任務(wù)2-3,安裝成功的MySQL主要目錄和文件有以下幾項(xiàng):1.bin存放可執(zhí)行文件、MySQL自帶的客戶端和MySQL服務(wù)端等。2.Data存放數(shù)據(jù)文件和日志文件,本教材開發(fā)的項(xiàng)目“數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)”使用的數(shù)據(jù)庫db_study的存放目錄如右圖所示。2.2MySQL的下載與安裝3.docs存放?些文檔。4.include存儲包含的頭文件,如:mysql.h、mysql_ername.h等。5.lib用于放置?系列庫文件。6.share用于存放字符集、語言等信息。7.my.ini是MySQL數(shù)據(jù)庫中使用的配置文件。說明:默認(rèn)安裝MySQL且沒有修改過安裝路徑的MySQL的主要目錄在“C:\ProgramData\MySQL\MySQLServer8.0”和“C:\ProgramFiles\MySQL\MySQLServer8.0”兩個目錄中。MySQL服務(wù)的啟動與停止032.3.1使用圖形界面工具啟動與停止MySQL服務(wù)右擊【計(jì)算機(jī)】,在彈出的快捷菜單中選擇【管理】選項(xiàng),在彈出的【計(jì)算機(jī)管理】對話框中選擇【服務(wù)】選項(xiàng),在右側(cè)的具體服務(wù)中找到“MySQL80”選項(xiàng),右擊此選項(xiàng)進(jìn)行啟動或者停止操作,如下圖所示。2.3.2使用命令行啟動與停止MySQL服務(wù)打開Windows系統(tǒng)的命令提示符工具,使用命令進(jìn)行管理MySQL服務(wù),具體的命令格式如下。說明:(1)start和stop后面的服務(wù)名應(yīng)與之前配置時指定的服務(wù)名一致。(2)如果當(dāng)輸入命令后,提示“拒絕服務(wù)”,請以系統(tǒng)管理員身份打開命令提示符工具重新嘗試。2.3.2使用命令行啟動與停止MySQL服務(wù)【案例2.1】使用命令行啟動與停止MySQL服務(wù)。本教材使用MySQL服務(wù)器名稱是mysql80,在Windows系統(tǒng)的命令提示符工具下輸入“netstopmysql80”命令停止MySQL服務(wù),輸入“netstartmysql80”命令啟動MySQL服務(wù),如下圖所示,成功停止和啟動了MySQL服務(wù)。MySQL服務(wù)器的登錄042.4.1使用MySQL自帶客戶端登錄在Windows系統(tǒng)中選擇【開始】|MySQL8.0CommandLineClient選項(xiàng),啟動MySQL自帶的客戶端,輸入root用戶(僅限于root用戶)的密碼即可登錄到MySQL服務(wù)器,如下圖所示,即為登錄成功。2.4.2使用命令行方式登錄打開Windows系統(tǒng)的命令提示符工具,使用命令登錄到MySQL服務(wù)器,具體的命令格式如下:mysql是登錄命令;-h后面的數(shù)據(jù)是服務(wù)器的主機(jī)地址,客戶端和服務(wù)器在同一臺機(jī)器上,所以輸入“l(fā)ocalhost”或者IP地址“”代表本機(jī);服務(wù)器和客戶端是同一臺機(jī)器,則連接本機(jī):“-hlocalhost”可以省略,如果端口號沒有修改,則“-p3306”也可以省略;-u后面的是登錄數(shù)據(jù)庫的用戶名稱(默認(rèn)管理員用戶是root,也可以新建用戶);-p后面是用戶登錄的密碼,為保證安全,密碼建議在下一行輸入。說明:參數(shù)“p”與密碼之間不能有空格,其他參數(shù)名與參數(shù)值之間可以有空格也可以沒有空格。2.4.3使用數(shù)據(jù)庫圖形化管理工具管理MySQL數(shù)據(jù)庫圖形化管理工具極大地方便了數(shù)據(jù)庫的操作與管理,常用的圖形化管理工具有:MySQLWorkbench、phpMyAdmin、Navicat、MySQLDumper、SQLyog、dbeaver、MySQLODBCConnector等,本教材介紹MySQL自帶的圖形化工具M(jìn)ySQLWorkbench和常用數(shù)據(jù)庫圖形化工具Navicat。2.4.3使用數(shù)據(jù)庫圖形化管理工具管理MySQL1.MySQLWorkbenchMySQL官方提供的圖形化管理工具M(jìn)ySQLWorkbench完全支持MySQL5.0以上的版本。MySQLWorkbench分為社區(qū)版和商業(yè)版,社區(qū)版完全免費(fèi),而商業(yè)版則是按年收費(fèi)。安裝MySQL8.0時選擇默認(rèn)安裝會自動安裝MySQLWorkbench8.0CE。MySQLWorkbench為數(shù)據(jù)庫管理員、程序開發(fā)者和系統(tǒng)規(guī)劃師提供可視化設(shè)計(jì)、模型建立,以及數(shù)據(jù)庫管理功能。它包含了用于創(chuàng)建復(fù)雜的數(shù)據(jù)建模ER模型,正向和逆向數(shù)據(jù)庫工程,也可以用于執(zhí)行通常需要花費(fèi)大量時間、難以變更和管理的文檔任務(wù)。在MySQLWorkbench中導(dǎo)入本教材開發(fā)的項(xiàng)目“數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)”數(shù)據(jù)庫db_study如右圖所示。2.4.3使用數(shù)據(jù)庫圖形化管理工具管理MySQL2.NavicatNavicatMySQL是一個強(qiáng)大的MySQL數(shù)據(jù)庫服務(wù)器管理和開發(fā)工具。它可以與任何3.21或以上版本的MySQL一起工作,支持觸發(fā)器、存儲過程、函數(shù)、事件、視圖、管理用戶等,對于新手來說易學(xué)易用。其精心設(shè)計(jì)的圖形用戶界面(GUI)可以讓用戶用一種安全簡便的方式來快速方便地創(chuàng)建、組織、訪問和共享信息。Navicat支持中文,Navicat官網(wǎng)(/)提供試用版下載。在Navicat中導(dǎo)入本教材開發(fā)的項(xiàng)目“數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)”數(shù)據(jù)庫db_study如右圖所示。課業(yè)任務(wù)052.5課業(yè)任務(wù)課業(yè)任務(wù)2-7

使用Navicat工具登錄到MySQL數(shù)據(jù)庫課業(yè)任務(wù)2-2安裝MySQL8.0課業(yè)任務(wù)2-3配置MySQL8.0環(huán)境變量課業(yè)任務(wù)2-6

使用Workbench工具登錄到MySQL數(shù)據(jù)庫課業(yè)任務(wù)2-4登錄到MySQL數(shù)據(jù)庫課業(yè)任務(wù)2-5MySQL服務(wù)的卸載王小明想利用MySQL+Java開發(fā)一個數(shù)據(jù)庫學(xué)習(xí)系統(tǒng),在真正學(xué)習(xí)MySQL之前,需要熟悉部署MySQL的開發(fā)環(huán)境,現(xiàn)通過7個課業(yè)任務(wù)來完成。具體請見實(shí)驗(yàn)1課業(yè)任務(wù)2-1下載MySQL8.0社區(qū)版常見錯誤及解決方案062.6常見錯誤及解決方案2.6.1錯誤2-1安裝過程失敗2.6.2錯誤2-2MySQL運(yùn)行失敗2.6.3錯誤2-3MySQL8.0自帶客戶端登錄報(bào)錯問題2.6.4錯誤2-4卸載重裝MySQL失敗具體請見實(shí)驗(yàn)1選擇題(1)數(shù)據(jù)庫管理系統(tǒng)是用(

)來定義和的軟件。A.管理應(yīng)用程序B.管理密碼C.管理數(shù)據(jù)D.管理管理員(2)MySQL是一個(

)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。A.閉源B.開源C.半開源D.完全收費(fèi)CB操作題選擇題(3)關(guān)系型數(shù)據(jù)庫模型是將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)用來表示(

)。A.文件B.一維結(jié)構(gòu)C.二維表結(jié)構(gòu)D.自定義方式(4)下列四項(xiàng)中不屬于數(shù)據(jù)庫系統(tǒng)特點(diǎn)的是(

)。A.數(shù)據(jù)共享B.數(shù)據(jù)獨(dú)立C.數(shù)據(jù)結(jié)構(gòu)化D.C數(shù)據(jù)高冗余CD操作題選擇題(5)一個數(shù)據(jù)庫最多可以創(chuàng)建數(shù)據(jù)表的個數(shù)是(

)。A.1個B.2個C.1個或2個D.多個(6)下面選項(xiàng)中,屬于MySQL用于放置日志文件以及數(shù)據(jù)庫的目錄是(

)。A.bin目錄B.data目錄C.include目錄D.lib目錄DB操作題選擇題(7)下面關(guān)于在DOS停止MySQL的命令中,正確的是(

)。

A.stopnetmysqlB.servicestopmysqlC.netstopmysqlD.servicemysqlstop(8)下面選項(xiàng)中,屬于關(guān)系型數(shù)據(jù)庫產(chǎn)品的是(

)。(多選)A.OracleB.SQLServerC.MongoDBD.MySQLCABD操作題掌握下載MySQL社區(qū)版。掌握在Windows平臺下安裝MySQL、配置、啟停、登錄以及卸載。熟悉使用不同的圖形化管理工具登錄到MySQL數(shù)據(jù)庫。通過完成課業(yè)任務(wù)學(xué)會分析問題、解決問題,提高動手操作能力。通過本講的學(xué)習(xí),您將可以:1.OPTION2.OPTIONOPTION4.OPTION3.MySQL官司網(wǎng)的DOWNLOADS選項(xiàng)卡本講教學(xué)目標(biāo)操作題選擇題填空題判斷題(1)下載并安裝MySQL的最新版。(2)關(guān)閉自動提交事務(wù)。前往MySQL官方網(wǎng)站(/)下載最新版的MySQL。根據(jù)你的操作系統(tǒng)選擇相應(yīng)的安裝包進(jìn)行下載,并按照安裝向?qū)硗瓿砂惭b過程。在系統(tǒng)環(huán)境變量中添加MySQL的安裝路徑。具體操作如下:打開“控制面板”。進(jìn)入“系統(tǒng)和安全”->“系統(tǒng)”->“高級系統(tǒng)設(shè)置”。在彈出窗口的“高級”選項(xiàng)卡中,點(diǎn)擊“環(huán)境變量”按鈕。在“系統(tǒng)變量”部分找到名為“Path”的變量,點(diǎn)擊“編輯”按鈕。在彈出窗口中,點(diǎn)擊“新建”按鈕,并將MySQL的安裝路徑添加到新建的條目中。點(diǎn)擊“確定”保存修改,然后關(guān)閉所有窗口。操作題選擇題填空題判斷題(3)本機(jī)登錄到MySQL服務(wù)器。(4)邀請同一網(wǎng)段的PC機(jī)遠(yuǎn)程登錄到MySQL服務(wù)器。打開命令提示符或者終端,執(zhí)行以下命令來登錄到MySQL服務(wù)器:mysql-u用戶名-p密碼將其中的“用戶名”和“密碼”替換為你的MySQL數(shù)據(jù)庫的用戶名和密碼。執(zhí)行命令后,如果登錄成功,將會進(jìn)入MySQL的命令行界面。在MySQL服務(wù)器所在的PC機(jī)上,執(zhí)行以下操作:編輯MySQL的配置文件f/my.ini,找到bind-address選項(xiàng),將其值修改為。這樣MySQL將會監(jiān)聽所有IP地址。重啟MySQL服務(wù)器,以使配置生效。然后,在同一局域網(wǎng)內(nèi)的其他PC機(jī)上,使用以下命令來遠(yuǎn)程登錄到MySQL服務(wù)器:mysql-h服務(wù)器IP地址-u用戶名-p密碼操作題選擇題填空題判斷題(5)使用圖形化工具M(jìn)ySQLWorkbench登錄到MySQL服務(wù)器。(6)使用圖形化工具NavicatPremium16登錄到MySQL服務(wù)器。打開MySQLWorkbench,并在連接面板中新增一個連接。填寫連接參數(shù),包括連接名稱、主機(jī)名、端口號、用戶名和密碼等。點(diǎn)擊“測試連接”按鈕以確保能夠成功連接到MySQL服務(wù)器。然后點(diǎn)擊“連接”按鈕進(jìn)行連接。打開NavicatPremium16,并在連接列表中新增一個MySQL連接。填寫連接參數(shù),包括連接名稱、主機(jī)名、端口號、用戶名和密碼等。點(diǎn)擊“連接”按鈕以連接到MySQL服務(wù)器。本講拓展MySQLWorkbench和Navicat的區(qū)別1.發(fā)布和授權(quán)。MySQLWorkbench是由MySQL官方發(fā)布和授權(quán)的工具,而Navicat則是一個第三方公司開發(fā)和發(fā)布的工具。2.功能和特點(diǎn)。MySQLWorkbench是一款功能強(qiáng)大的工具,主要用于數(shù)據(jù)庫設(shè)計(jì)、建模、查詢、管理和系統(tǒng)維護(hù)等。它還提供了可視化的數(shù)據(jù)庫設(shè)計(jì)工具、性能分析、備份和恢復(fù)功能等。Navicat也提供類似的功能,同時注重用戶界面的友好性和易用性。3.價(jià)格。MySQLWorkbench是免費(fèi)的開源工具,用戶可以免費(fèi)下載和使用。Navicat則為商業(yè)軟件,提供了免費(fèi)試用的社區(qū)版和付費(fèi)的商業(yè)版,商業(yè)版提供更多高級功能和技術(shù)支持。感謝觀看SQL語言的規(guī)則與規(guī)范第3章通過本課程的學(xué)習(xí),您將應(yīng)該:了解數(shù)據(jù)庫的相關(guān)概念熟悉數(shù)據(jù)庫工具的使用熟悉SQL語言的規(guī)則與規(guī)范熟練掌握MySQL數(shù)據(jù)庫管理方法熟練掌握MySQL表結(jié)構(gòu)管理方法熟練掌握表記錄的檢索方法熟練掌握視圖與索引的使用方法熟練掌握數(shù)據(jù)處理之增刪改熟練掌握存儲過程與游標(biāo)的使用方法熟練掌握存儲函數(shù)的應(yīng)用熟練掌握觸發(fā)器的應(yīng)用熟練掌握事務(wù)的基本特性和應(yīng)用場景熟練掌握數(shù)據(jù)庫安全及管理熟練掌握MySQL數(shù)據(jù)庫備份和恢復(fù)操作了解利用MySQL+Java開發(fā)一個數(shù)據(jù)庫學(xué)習(xí)系統(tǒng)并部署課程目標(biāo)項(xiàng)目部署成功本講教學(xué)目標(biāo)通過本講的學(xué)習(xí),您將可以:Navicat工具中運(yùn)行程序的運(yùn)算結(jié)果掌握SQL語言的基本規(guī)則與規(guī)范。熟練掌握MySQL運(yùn)算符的使用。掌握運(yùn)算符的優(yōu)先級。熟悉通過不同的工具管理MySQL。通過完成課業(yè)任務(wù)學(xué)會分析問題、解決問題,提高動手操作能力。1.OPTION2.OPTIONOPTION4.OPTION3.5.OPTION目錄ContentSQL的概述01SQL語言的規(guī)則與規(guī)范02運(yùn)算符03課業(yè)任務(wù)04常見錯誤及解決方案05MySQL數(shù)據(jù)庫管理概述013.1.1SQL的背景在1974年,IBM研究員發(fā)布了一篇關(guān)于數(shù)據(jù)庫技術(shù)的論文《SEQUEL:一門結(jié)構(gòu)化的英語查詢語言》從而引出SQL語言,直到目前為止,這門結(jié)構(gòu)化的查詢語言并沒有太大的變化,相比于其他語言,SQL的半衰期可以說是非常長了。SQL(StructuredQueryLanguage:結(jié)構(gòu)化查詢語言)是使用關(guān)系模型的數(shù)據(jù)庫應(yīng)用語言,它可以應(yīng)用到所有關(guān)系型數(shù)據(jù)庫中,例如:MySQL、Oracle、SQLServer、達(dá)夢等,同時也是與數(shù)據(jù)直接打交道的一門語言。由IBM20世紀(jì)70年代開發(fā)出來,后由美國國家標(biāo)準(zhǔn)化組織(ANSI)著手制定SQL標(biāo)準(zhǔn),先后有SQL-86,SQL-89,SQL-92,SQL-99等標(biāo)準(zhǔn)。其中最為重要的兩個標(biāo)準(zhǔn)是SQL92和SQL99標(biāo)準(zhǔn),分別代表了92年和99年頒布的SQL標(biāo)準(zhǔn),今天使用的SQL語言依然遵循這些標(biāo)準(zhǔn)。3.1.1SQL的背景自從SQL加入了TIOBE編程語言排行榜,就一直保持在Top10,如下圖所示。數(shù)據(jù)來源地址“/tiobe-index/”。3.1.1SQL的背景不同的數(shù)據(jù)庫生產(chǎn)廠商都支持SQL語句,但很多數(shù)據(jù)庫都有特有內(nèi)容,例如MySQL中的LIMIT分頁語句就是MySQL獨(dú)有的方言,其他數(shù)據(jù)庫都不支持。當(dāng)然,Oracle或SQLServer也都有自己的方言,數(shù)據(jù)庫的特有內(nèi)容圖解如下圖所示。1.SQL語言在功能上主要分為如下3大類:3.1.2SQL的分類(1)DDL(DataDefinitionLanguages:數(shù)據(jù)定義語言)這類語句定義了不同的數(shù)據(jù)庫、表、索引、視圖等數(shù)據(jù)庫對象,還可以用來創(chuàng)建、刪除、修改數(shù)據(jù)庫和數(shù)據(jù)表的結(jié)構(gòu)。主要的語句關(guān)鍵字包括CREATE、DROP、ALTER等。(2)DML(DataManipulationLanguage:數(shù)據(jù)操作語言)DML數(shù)據(jù)操作語言主要用于添加、刪除、更新和查詢數(shù)據(jù)庫記錄,并檢查數(shù)據(jù)完整性。主要的語句關(guān)鍵字包括INSERT、DELETE、UPDATE、SELECT等。其中SELECT是SQL語言的基礎(chǔ),最為重要。(3)DCL(DataControlLanguage:數(shù)據(jù)控制語言)DCL數(shù)據(jù)控制語言主要用于定義數(shù)據(jù)庫、表、字段、用戶的訪問權(quán)限和安全級別。主要的語句關(guān)鍵字包括GRANT、REVOKE、COMMIT、ROLLBACK、SAVEPOINT等。2.因?yàn)椴樵冋Z句使用得非常頻繁,所以把查詢語句單拎出來成為一類,還有單獨(dú)將COMMIT、ROLLBACK取出來成為一類,分別為如下2類:3.1.2SQL的分類(1)DQL(DataQueryLanguage:數(shù)據(jù)查詢語言)DQL數(shù)據(jù)查詢語言主要用來查詢記錄(數(shù)據(jù)),執(zhí)行SELECT操作。數(shù)據(jù)庫執(zhí)行DQL語句不會對數(shù)據(jù)進(jìn)行改變,而是讓數(shù)據(jù)庫發(fā)送結(jié)果集給客戶端。(2)TCL(TransactionControlLanguage:事務(wù)控制語言)TCL事務(wù)控制語言主要用來事務(wù)管理,如果需要在一個事務(wù)中包含多條SQL語句,那么需要開啟事務(wù)和結(jié)束事務(wù)。主要的語句關(guān)鍵字包括COMMIT提交、ROLLBACK回滾、SAVEPOINT保存點(diǎn)等。SQL語言的規(guī)則與規(guī)范023.2.1SQL語言的基本規(guī)則基本規(guī)則是我們一定要去遵守的,如果不遵守規(guī)則,程序就會出錯,將無法執(zhí)行。1.SQL語言可以單行或多行書寫。為了提高可讀性,各子句可分行寫,必要時使用縮進(jìn);2.每條命令以“;”或“\g”或“\G”結(jié)尾;3.關(guān)鍵字不能被縮寫也不能分行;4.必須保證所有的()、單引號、雙引號是成對結(jié)束的;5.必須使用英文狀態(tài)下的半角輸入方式;6.字符串型和日期時間類型的數(shù)據(jù)可以使用單引號(’’)表示;7.列的別名,盡量使用雙引號(””),而且不建議省略as。以下是SQL語言必須遵守的基本規(guī)則:3.2.2SQL大小寫的規(guī)范規(guī)范是建議我們要去遵守的,遵守一定的規(guī)范可以使代碼程序更容易閱讀和調(diào)試,提高復(fù)寫性。所以建議按照大小寫的慣例,使用時采用統(tǒng)一的書寫規(guī)范。以下是SQL大小寫建議遵守的規(guī)范:1.MySQL在Windows環(huán)境下是大小寫不敏感的2.MySQL在Linux環(huán)境下是大小寫敏感的數(shù)據(jù)庫名、表名、表的別名、變量名是嚴(yán)格區(qū)分大小寫的;關(guān)鍵字、函數(shù)名、列名(或字段名)、列的別名(字段的別名)是忽略大小寫的。3.推薦采用統(tǒng)一的書寫規(guī)范:數(shù)據(jù)庫名、表名、字段名稱、變量名稱、視圖名稱、索引名稱、存儲名稱、觸發(fā)器名稱等都用小寫;SQL關(guān)鍵字、函數(shù)、數(shù)據(jù)類型等都用大寫。3.2.3MySQL注釋符注釋是可用于記錄SQL語句的目的或存儲過程中代碼塊的邏輯,解析SQL代碼時,MySQL會忽略注釋部分,它只會執(zhí)行除了可執(zhí)行注釋之外的SQL部分。MySQL可以使用如下三種格式的注釋結(jié)構(gòu):1.單行注釋:#注釋文字2.單行注釋:--注釋文字(--后面必須包含一個空格。)3.多行注釋:/*注釋文字*/3.2.4MySQL數(shù)據(jù)庫對象命名規(guī)范我們在使用MySQL數(shù)據(jù)庫的時候需要遵循一定的命名規(guī)范,揚(yáng)長避短。1.數(shù)據(jù)庫、表名不得超過30個字符,變量名的長度限制為29;2.命名必須只能包含A–Z,a–z,0–9,共63個字符;3.數(shù)據(jù)庫名、表名、字段名等對象名中間不要包含空格;4.同一個MySQL軟件中,數(shù)據(jù)庫不能同名;同一個庫中,表不能重名;同一個表中,字段不能重名;5.必須保證字段沒有和保留字、數(shù)據(jù)庫系統(tǒng)或常用方法沖突。如果一定要使用,則必須在SQL語句中使用`(著重號)引起來;6.保持字段名和類型的一致性,在命名字段并為其指定數(shù)據(jù)類型的時候一定要保證一致性。以下是MySQL數(shù)據(jù)庫對象命名規(guī)范:運(yùn)算符033.3.1算術(shù)運(yùn)算符算術(shù)運(yùn)算符主要用于數(shù)學(xué)運(yùn)算,其可以連接運(yùn)算符前后的兩個數(shù)值或表達(dá)式,對數(shù)值或表達(dá)式進(jìn)行加(+)、減(-)、乘(*)、除(/)和求模(或稱求余,%)運(yùn)算。MySQL中的算術(shù)運(yùn)算符如上表所示。3.3.1算術(shù)運(yùn)算符【案例3.1】輸出加法和減法的運(yùn)算結(jié)果。在MySQL中數(shù)字6加上一個數(shù)字或者減去一個數(shù)字的SQL語句如下。加法運(yùn)算符(+)是用于增加一個或多個值的和;減法運(yùn)算符(-)適用于在一個值中減去另外一個值。1.加法與減法運(yùn)算符執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.1算術(shù)運(yùn)算符由運(yùn)行結(jié)果可以得知:數(shù)字6,返回值為6;表達(dá)式6+0,返回值為6;表達(dá)式6-0,返回值為6;表達(dá)式6+10,返回值為16;表達(dá)式6-10,返回值為-4;表達(dá)式6+10-2,返回值為14;表達(dá)式6+4.5,返回值為10.5;表達(dá)式6-4.5,返回值為1.5。

說明:(1)一個整數(shù)類型的值對整數(shù)(浮點(diǎn)數(shù))進(jìn)行加法和減法操作,運(yùn)算結(jié)果還是一個整數(shù)(浮點(diǎn)數(shù));(2)加法和減法的優(yōu)先級相同,進(jìn)行先加后減操作與進(jìn)行先減后加操作的結(jié)果是一樣的;(3)在MySQL中不需要虛擬表(dual)也可以進(jìn)行加減法運(yùn)算;(4)在早期的MySQL5.1的版本之前是沒有dual表的,現(xiàn)在大部分都是使用MySQL5.5以上的版本,所以在MySQL中也存在和Oracle中類似的虛擬表(dual),官方聲明是為了滿足“SELECT...FROM...”這一習(xí)慣性的問題,在MySQL中會忽略對該表的引用。3.3.1算術(shù)運(yùn)算符在MySQL(SQL語句需要以分號結(jié)尾)和SQLServer(SQL語句不需要以分號結(jié)尾)中可以直接“SELECT1”,不需要加“FROM表名”就可以執(zhí)行,但在Oracle中就需要滿足“SELECT...FROM...”的結(jié)構(gòu),Oracle(SQL語句需要以分號結(jié)尾)不能直接執(zhí)行“SELECT1;”則需要引入虛擬表(dual)來滿足結(jié)構(gòu)。以下是在MySQL中不用虛擬表(dual)來執(zhí)行加法和減法運(yùn)算,SQL語句如下所示。執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.1算術(shù)運(yùn)算符【案例3.2】輸出乘法和除法的運(yùn)算結(jié)果。在MySQL中數(shù)字20乘以一個數(shù)字和除以一個數(shù)字的SQL語句如下。乘法運(yùn)算符由星號(*)表示,用于兩數(shù)相乘;除法運(yùn)算符由斜杠(/)表示,用一個值除以另外一個值得到商。2.乘法與除法運(yùn)算符執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.1算術(shù)運(yùn)算符由運(yùn)行結(jié)果可以得知:數(shù)字20,返回值為20;表達(dá)式20*1,返回值為20;表達(dá)式20/1,返回值為20.0000;表達(dá)式20*0.5,返回值為10.0;20/0.5,返回值為40.0000;表達(dá)式20*3,返回值為60;表達(dá)式20/3,返回值為6.6667;表達(dá)式20*2/5,先計(jì)算20*2等于40,再計(jì)算40/5,返回值為8.0000;表達(dá)式20/5*2,先計(jì)算20/5等于4.0000,再計(jì)算4.0000*2等于8.0000;表達(dá)式20DIV0中,0不能作為除數(shù),返回值為NULL。

說明:(1)一個數(shù)乘以或除以浮點(diǎn)數(shù)1后都變成浮點(diǎn)數(shù),數(shù)值與原數(shù)相等;(2)一個數(shù)除以整數(shù)后,不管是否能除盡,結(jié)果都是浮點(diǎn)數(shù),并且結(jié)果都保留到小數(shù)點(diǎn)后4位;(3)因?yàn)槌朔ê统ǖ膬?yōu)先級相同,所以進(jìn)行先乘后除運(yùn)算操作與先除后乘運(yùn)算操作,得出的結(jié)果都相同;(4)在數(shù)學(xué)運(yùn)算中,0不能用作除數(shù)。但是在MySQL中,一個數(shù)除以0為NULL。3.3.1算術(shù)運(yùn)算符求模運(yùn)算符由百分號(%)表示,執(zhí)行常規(guī)的除法運(yùn)算,返回除法運(yùn)算得到余數(shù)。在MySQL中“%”和“MOD”作用相同,返回值一樣。3.求模(求余)運(yùn)算符

說明:(1)一個數(shù)乘以或除以浮點(diǎn)數(shù)1后都變成浮點(diǎn)數(shù),數(shù)值與原數(shù)相等;(2)一個數(shù)除以整數(shù)后,不管是否能除盡,結(jié)果都是浮點(diǎn)數(shù),并且結(jié)果都保留到小數(shù)點(diǎn)后4位;(3)因?yàn)槌朔ê统ǖ膬?yōu)先級相同,所以進(jìn)行先乘后除運(yùn)算操作與先除后乘運(yùn)算操作,得出的結(jié)果都相同;(4)在數(shù)學(xué)運(yùn)算中,0不能用作除數(shù)。但是在MySQL中,一個數(shù)除以0為NULL。3.3.2比較運(yùn)算符比較運(yùn)算符是查詢數(shù)據(jù)時最常用的一類運(yùn)算符,用來對表達(dá)式左右兩邊的操作數(shù)進(jìn)行比較。比較的結(jié)果為真則返回1,比較的結(jié)果為假則返回0,其他情況則返回NULL;經(jīng)常在SELECT的查詢條件子句中使用,用來查詢滿足指定條件的記錄。MySQL中的比較運(yùn)算符如下表所示?!景咐?.3】輸出等號運(yùn)算符運(yùn)算結(jié)果。在MySQL中執(zhí)行等號運(yùn)算符運(yùn)算的SQL語句如下。等號運(yùn)算符(=)是用于判斷等號兩邊的值、字符串或表達(dá)式是否相等,如果相等則返回值為1,不相等則返回0。1.等號運(yùn)算符執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.2比較運(yùn)算符由運(yùn)行結(jié)果可以得知:表達(dá)式3=1,3不等于1,返回值為0;表達(dá)式3=3,3等于3,返回值為1;表達(dá)式'3'=2,字母3轉(zhuǎn)換成數(shù)字3不等于數(shù)字2,返回值為0;表達(dá)式'm'='m',字母m等于字母m,返回值為1;表達(dá)式(3+0)=(1+2),3+0等于3和1+2等于3相等,則返回值為1;表達(dá)式3=NULL,NULL=NULL,表達(dá)式中有一個值為NULL,則比較結(jié)果為NULL,則返回值為NULL。

說明:(1)等號兩邊的值都是整數(shù),則MySQL會按照整數(shù)來比較兩個值的大??;(2)等號兩邊的值一個是整數(shù),另一個是字符串,則MySQL會將字符串轉(zhuǎn)化為數(shù)字進(jìn)行比較;(3)等號兩邊的值都為字符串,則MySQL會按照字符串進(jìn)行比較;(4)等號兩邊的值、字符串或表達(dá)式中有一個為NULL,則比較結(jié)果為NULL。3.3.2比較運(yùn)算符安全等于運(yùn)算符(<=>)與等號運(yùn)算符(=)的作用是相似的,在操作數(shù)相等時值為1,唯一的區(qū)別是“<=>”運(yùn)算符即使操作的值是NULL也可以正確比較。2.安全等于運(yùn)算符3.3.2比較運(yùn)算符

說明:(1)“<=>”運(yùn)算符與“=”運(yùn)算符的操作相同;(2)當(dāng)兩個操作數(shù)均為NULL時,則返回值為1,而不為NULL;當(dāng)一個操作數(shù)為NULL時,則返回值為0,而不為NULL。不等于運(yùn)算符(<>和!=)是用于判斷兩邊的數(shù)字、字符串或者表達(dá)式的值是否不相等,若不相等則返回1,相等則返回0。3.不等于運(yùn)算符【案例3.4】輸出不等于運(yùn)算結(jié)果。在MySQL中執(zhí)行不等于運(yùn)算符運(yùn)算的SQL語句如下。執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.2比較運(yùn)算符由運(yùn)行結(jié)果可以得知:表達(dá)式2<>2,數(shù)字2不等于數(shù)字2,不成立,返回值為0;表達(dá)式2!=2,數(shù)字2不等于數(shù)字2,也不成立,返回值為0;表達(dá)式'mysql'<>'sql',字符串’mysql’和字符串’sql’不相等,返回值為1;表達(dá)式’m’<>NULL和NULL=NULL,表達(dá)式中有一個值為NULL,比較結(jié)果為NULL,則返回值為NULL。

說明:(1)由運(yùn)行結(jié)果可以看到,“<>”(“!=”)運(yùn)算符兩邊的值不相等時返回1,否則返回0;(2)不等于運(yùn)算符不能判斷NULL值,若兩邊的值有任意一個為NULL,或兩邊都為NULL,則結(jié)果為NULL。3.3.2比較運(yùn)算符【案例3.5】輸出小于和小于等于運(yùn)算結(jié)果。在MySQL中執(zhí)行小于或小于等于運(yùn)算符運(yùn)算的SQL語句如下。小于(小于等于)運(yùn)算符“<”(“<=”)是用來判斷左邊的數(shù)字、字符串或者表達(dá)式是否小于(小于等于)右邊的操作數(shù)。如果小于(小于等于),則返回值為1;否則返回值為0。4.小于和小于等于運(yùn)算符執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.2比較運(yùn)算符由運(yùn)行結(jié)果可以得知:表達(dá)式3<2,數(shù)字3大于數(shù)字2,小于號不成立,返回值為0;表達(dá)式2<=2,數(shù)字2等于數(shù)字2,小于等于號成立,返回值為1;表達(dá)式’b’<’C’,字母b排在字母c的前面,小于號成立,返回值為1;表達(dá)式’m’<NULL和NULL<NULL,表達(dá)式中有一個值為NULL,比較結(jié)果為NULL,則返回值為NULL。

說明:(1)由運(yùn)行結(jié)果可以看到,3比2大,則返回0,兩邊的值不相等時返回1,否則返回0;(2)“<”(“<=”)運(yùn)算符不能用于判斷空值NULL。3.3.2比較運(yùn)算符大于(大于等于)運(yùn)算符“>”(“>=”)是用來判斷左邊的數(shù)字、字符串或者表達(dá)式是否大于(大于等于)右邊的操作數(shù)。如果大于(大于等于),則返回值為1;否則返回值為0。5.大于和大于等于運(yùn)算符3.3.2比較運(yùn)算符

說明:(1)“>”(“>=”)運(yùn)算符與“<”(“<=”)運(yùn)算符的操作相同;(2)“>”(“>=”)運(yùn)算符不能用于判斷空值NULL。MySQL中除了常見算術(shù)比較運(yùn)算符,還有非符號類型比較運(yùn)算符,具體如下表所示。3.3.2比較運(yùn)算符MySQL中除了常見算術(shù)比較運(yùn)算符,還有非符號類型比較運(yùn)算符,具體如下表所示。運(yùn)算符名稱作用ISNULL(或ISNULL)為空運(yùn)算符判斷值、字符串或表達(dá)式是否為空ISNOTNULL不為空運(yùn)算符判斷值、字符串或表達(dá)式是否不為空LEAST最小值運(yùn)算符在多個值中返回最小值GREATEST最大值運(yùn)算符在多個值中返回最大值BETWEENAND兩值之間運(yùn)算符判斷一個值是否在兩個值之間IN屬于運(yùn)算符判斷一個值是否為列表中的任意一個值NOTIN不屬于運(yùn)算符判斷一個值是否不是列表中的任意一個值LIKE模糊匹配運(yùn)算符判斷一個值是否符合模糊匹配規(guī)則PEGEXP正則表達(dá)式運(yùn)算符判斷一個值是否符合正則表達(dá)式的規(guī)則【案例3.6】輸出為空和不為空運(yùn)算符運(yùn)算結(jié)果。在MySQL中執(zhí)行為空和不為空運(yùn)算符運(yùn)算的SQL語句如下。為空運(yùn)算符(ISNULL或者ISNULL)判斷一個值是否為NULL,如果為NULL則返回1,否則返回0;不為空運(yùn)算符(ISNOTNULL)判斷一個值是否不為NULL,如果不為NULL則返回1,否則返回0。6.為空和不為空運(yùn)算符執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.2比較運(yùn)算符由運(yùn)行結(jié)果可以得知:表達(dá)式NULLISNULL,NULL是NULL成立,返回值為1;表達(dá)式ISNULL(NULL),ISNULL(NULL)函數(shù)值為NULL,返回值為1;表達(dá)式ISNULL(6),ISNULL(6)函數(shù)值為6不為空,返回值為0;表達(dá)式6ISNOTNULL,6不為空成立,返回值為1。

說明:(1)“NULLISNULL”返回值為1;ISNULL(NULL)函數(shù)求表達(dá)式的值是否為空,當(dāng)值為NULL時,返回值為1,當(dāng)值為6,不為空時,返回值是0;數(shù)字6不為空則“6ISNOTNULL”返回值為1;(2)ISNULL和ISNULL的作用相同,ISNULL和ISNOTNULL的返回值正好相反;(3)ISNULL運(yùn)算符和ISNULL()函數(shù)格式不同,ISNULL()函數(shù)將表達(dá)式作為參數(shù),而ISNULL比較運(yùn)算符將表達(dá)式放在其左側(cè);(4)ISNULL的效率比ISNULL()高,因?yàn)樗恍枰獟呙?,搜索通常比掃描更快,因?yàn)樗话ǚ蠗l件的記錄,而掃描包括每一行。3.3.2比較運(yùn)算符【案例3.7】輸出最小值運(yùn)算符運(yùn)算結(jié)果。在MySQL中執(zhí)行最小值運(yùn)算符運(yùn)算的SQL語句如下。最小值(LEAST)運(yùn)算符在有兩個或多個參數(shù)比較的情況下,返回最小值。其基本的語法格式如下:7.最小值運(yùn)算符執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.2比較運(yùn)算符運(yùn)行后由結(jié)果可以得知:LEAST(2,5,1.3)表達(dá)式中1.3小于2.5,返回值是1.3;LEAST('q','w','e')表達(dá)式中字母e小于字母q和字母w,返回值是e;LEAST(3,NULL,7)表達(dá)式中有一個自變量為NULL,則返回值為NULL。

說明:(1)當(dāng)參數(shù)是整數(shù)(浮點(diǎn)數(shù))時,LEAST將返回其中最小的整數(shù)(浮點(diǎn)數(shù));(2)當(dāng)參數(shù)為字符串時,返回字母表中順序最靠前的字符;(3)當(dāng)比較值列表中有NULL時,則不能判斷大小,其返回值為NULL。3.3.2比較運(yùn)算符最大值運(yùn)算符(GREATEST)在有兩個或多個參數(shù)比較的情況下,返回最大值。其基本的語法格式如下:8.最大值運(yùn)算符3.3.2比較運(yùn)算符

說明:(1)最大值運(yùn)算符與最小值運(yùn)算符操作相同;(2)當(dāng)參數(shù)是整數(shù)(浮點(diǎn)數(shù))時,GREATEST將返回其中最大的整數(shù)(浮點(diǎn)數(shù));(3)當(dāng)參數(shù)為字符串時,返回字母表中順序最靠后的字符;(4)當(dāng)比較值列表中有NULL時,則不能判斷大小,其返回值為NULL?!景咐?.8】輸出兩值之間運(yùn)算符運(yùn)算結(jié)果。在MySQL中執(zhí)行兩值之間運(yùn)算符運(yùn)算的SQL語句如下。兩值之間(BETWEENAND)運(yùn)算符是用于判斷一個值(c)是否在兩個值(a和b)之間,當(dāng)c大于或等于a,并且c小于或等于b時,則返回值為1,否則返回0。使用的格式如下。9.兩值之間運(yùn)算符執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.2比較運(yùn)算符運(yùn)行后由結(jié)果可以得知:'c'BETWEEN'a'AND'b'表達(dá)式中字母c不在字母a和字母b中間,返回值為0;1BETWEEN3AND4表達(dá)式中數(shù)字1不在數(shù)字3和數(shù)字4中間,返回值為0;7BETWEEN5AND8表達(dá)式中數(shù)字7在數(shù)字5和數(shù)字8中間,故返回值為1。

說明:當(dāng)字符串類型之間比較時,是按照字母表順序進(jìn)行比較。3.3.2比較運(yùn)算符【案例3.9】輸出屬于和不屬于運(yùn)算符運(yùn)算結(jié)果。在MySQL中執(zhí)行屬于和不屬于運(yùn)算符運(yùn)算的SQL語句如下。屬于(IN)運(yùn)算符是用于判斷給定的值是否是IN列表中的任意一個值,如果是則返回值為1,否則返回0;不屬于(NOTIN)運(yùn)算符用于判斷給定的值是否不是IN列表中的一個值,如果不是IN列表中的任意一個值,則返回值為1,否則返回0。10.屬于和不屬于運(yùn)算符執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.2比較運(yùn)算符由運(yùn)行結(jié)果可以得知:1IN(2,3,4)表達(dá)式中數(shù)字1不屬于數(shù)字2、3、4中的一個,返回值為0;1NOTIN(2,3,4)表達(dá)式中數(shù)字1不屬于數(shù)字2、3、4中的一個,因關(guān)鍵字是NOTIN,故返回值為1;NULLNOTIN(2,3,4)表達(dá)式中給定的值是NULL,故返回值為NULL。

說明:(1)由運(yùn)行結(jié)果可以看出,IN和NOTIN運(yùn)算符的運(yùn)行結(jié)果相反;(2)當(dāng)表中找不到給定的值相匹配時,或者是給定的值是NULL,亦或是列表中存在NULL值,則結(jié)果均為NULL。3.3.2比較運(yùn)算符【案例3.10】輸出模糊匹配運(yùn)算符運(yùn)算結(jié)果。在MySQL中執(zhí)行模糊匹配運(yùn)算符運(yùn)算的SQL語句如下。模糊匹配(LIKE)運(yùn)算符主要用來匹配字符串,通常用于模糊匹配,如果滿足條件則返回1,否則返回0。如果給定的值或者匹配條件為NULL,則返回結(jié)果為NULL。11.模糊匹配運(yùn)算符LIKE運(yùn)算符可以使用以下兩個通配符“%”和“_”:(1)“%”:可以匹配任何數(shù)目的字符,以及零字符;(2)“_”:只能匹配一個字符。3.3.2比較運(yùn)算符由運(yùn)行結(jié)果可以得知:13579LIKE'123%'表達(dá)式中“13579”中不含有指定匹配字符串“123”,則返回值為0;13579LIKE'%35%'表達(dá)式中“13579”中包含指定匹配字符串“%35%”,則返回值為1;2468LIKE'24__'表達(dá)式中“2468”中包含指定匹配字符串“24__”,則返回值為1。執(zhí)行上述SQL語句,運(yùn)行結(jié)果如下圖所示。3.3.2比較運(yùn)算符

說明:“_”通配符是匹配單個任意的字符?!景咐?.11】輸出正則表達(dá)式運(yùn)算符運(yùn)算結(jié)果。在MySQL中執(zhí)行正則表達(dá)式運(yùn)算符運(yùn)算的SQL語句如下。正則表達(dá)式(REGEXP)運(yùn)算符,是正則表達(dá)式(regularexpression)的縮寫,正則表達(dá)式在搜索字符串時非常強(qiáng)大,則用來匹配字符串?;镜恼Z法格式如下,若expr中含有相匹配的字符串時,則返回值為1;反之則返回0。12.正則表達(dá)式運(yùn)算符3.3.2比較運(yùn)算符由運(yùn)行結(jié)果可以得知:'happ

溫馨提示

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

最新文檔

評論

0/150

提交評論