(中職)MySQL-8.0數(shù)據(jù)庫(kù)管理與應(yīng)用電子課件(完整版)_第1頁(yè)
(中職)MySQL-8.0數(shù)據(jù)庫(kù)管理與應(yīng)用電子課件(完整版)_第2頁(yè)
(中職)MySQL-8.0數(shù)據(jù)庫(kù)管理與應(yīng)用電子課件(完整版)_第3頁(yè)
(中職)MySQL-8.0數(shù)據(jù)庫(kù)管理與應(yīng)用電子課件(完整版)_第4頁(yè)
(中職)MySQL-8.0數(shù)據(jù)庫(kù)管理與應(yīng)用電子課件(完整版)_第5頁(yè)
已閱讀5頁(yè),還剩162頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第1章 MySQL基礎(chǔ)1.1.1 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的的倉(cāng)庫(kù),數(shù)據(jù)庫(kù)建立在計(jì)算機(jī)的存儲(chǔ)設(shè)備上。在日常工作中,經(jīng)常需要把一些相關(guān)的數(shù)據(jù)放進(jìn)這樣的“倉(cāng)庫(kù)”中,并根據(jù)管理的需要進(jìn)行相應(yīng)的處理。例如,企業(yè)或事業(yè)單位的人事部門(mén)通常會(huì)把本單位職工的基本情況(職工號(hào)、姓名、出生日期、性別、籍貫、工資、簡(jiǎn)歷等)存放在一張表中,這張表就可以看成是一個(gè)數(shù)據(jù)庫(kù)。有了這個(gè)“數(shù)據(jù)倉(cāng)庫(kù)”,便可以根據(jù)需要隨時(shí)查詢(xún)某個(gè)職工的基本情況,也可以查詢(xún)工資收入在某個(gè)范圍內(nèi)的職工人數(shù)等。這些工作都能夠在計(jì)算機(jī)上自動(dòng)進(jìn)行,人事管理的工作效率得到了極大提高。嚴(yán)格地說(shuō),數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共

2、享的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)按照一定的數(shù)據(jù)模型組織和儲(chǔ)存在一起、具有盡可能小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性等特點(diǎn),并且可以在一定范圍內(nèi)為多個(gè)用戶(hù)共享。這種數(shù)據(jù)集合具有如下特點(diǎn):盡可能不重復(fù),以最優(yōu)方式為某個(gè)特定組織的多種應(yīng)用程序提供服務(wù),其數(shù)據(jù)結(jié)構(gòu)獨(dú)立于使用它的應(yīng)用程序,對(duì)數(shù)據(jù)的添加、刪除、修改和查詢(xún)等操作通過(guò)軟件進(jìn)行統(tǒng)一管理和控制。1.1 數(shù)據(jù)庫(kù)基本概念1.1.2 關(guān)系型數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),它借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。關(guān)系模型是在上世紀(jì)70年代提出來(lái)的,直到今天它仍然是數(shù)據(jù)存儲(chǔ)的標(biāo)準(zhǔn)。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合、關(guān)系完整

3、性約束3個(gè)部分組成?,F(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系都可以使用關(guān)系模型來(lái)表示。簡(jiǎn)言之,關(guān)系模型就是指二維表模型,一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的聯(lián)系所組成的數(shù)據(jù)組織。在關(guān)系模型中,關(guān)系可以理解為一張二維表,每個(gè)關(guān)系都具有一個(gè)名稱(chēng),即表名。二維表中的行在數(shù)據(jù)庫(kù)術(shù)語(yǔ)中通常稱(chēng)為記錄或元組;二維表中的列稱(chēng)為字段或?qū)傩裕蛔侄蔚娜≈捣秶Q(chēng)為域,也就是字段的取值限制;一組可以唯一標(biāo)識(shí)記錄的字段稱(chēng)為關(guān)鍵字,稱(chēng)為主鍵,主鍵可以由一個(gè)或多個(gè)字段組成;關(guān)系模式是指對(duì)關(guān)系的描述,其格式為“表名(字段1, 字段2, . , 字段n)”,稱(chēng)為表結(jié)構(gòu)。在關(guān)系型數(shù)據(jù)庫(kù)中,通過(guò)在不同表之間創(chuàng)建關(guān)系可以將某個(gè)表中

4、的字段鏈接到另一個(gè)表中的字段,從而防止出現(xiàn)數(shù)據(jù)冗余。1.1 數(shù)據(jù)庫(kù)基本概念1.1.3 數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是一種管理數(shù)據(jù)庫(kù)的軟件,可以用于創(chuàng)建、使用和維護(hù)數(shù)據(jù)庫(kù)。DBMS對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。用戶(hù)通過(guò)DBMS訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),數(shù)據(jù)庫(kù)管理員(DBA)通過(guò)DBMS進(jìn)行數(shù)據(jù)庫(kù)的維護(hù)工作。DBMS可以使多個(gè)應(yīng)用程序和用戶(hù)使用不同方法來(lái)創(chuàng)建、修改和查詢(xún)數(shù)據(jù)庫(kù)。大部分DBMS提供數(shù)據(jù)定義語(yǔ)言(DDL)和數(shù)據(jù)操作語(yǔ)言(DML),允許用戶(hù)定義數(shù)據(jù)庫(kù)的模式結(jié)構(gòu)和權(quán)限約束,實(shí)現(xiàn)添加數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)和查詢(xún)數(shù)據(jù)等操作。目前,比較流行的數(shù)據(jù)庫(kù)管理系統(tǒng)有

5、:Oracle、MySQL、SQL Server、PostgreSQL、DB2、Sybase、Access、SQLite、MarialDB、Visual FoxPro以及Informix等。1.1 數(shù)據(jù)庫(kù)基本概念1.1.4 數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)(DBS)通常由軟件、數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理員組成,其中軟件主要包括操作系統(tǒng)、各種宿主語(yǔ)言、實(shí)用程序以及數(shù)據(jù)庫(kù)管理系統(tǒng)。數(shù)據(jù)庫(kù)通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行統(tǒng)一管理,數(shù)據(jù)的添加、修改、刪除和檢索都要通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)實(shí)現(xiàn)。數(shù)據(jù)庫(kù)管理員負(fù)責(zé)創(chuàng)建、監(jiān)控和維護(hù)整個(gè)數(shù)據(jù)庫(kù),使數(shù)據(jù)能夠被任何擁有使用權(quán)限的人有效使用。1.1 數(shù)據(jù)庫(kù)基本概念1.1.5 結(jié)構(gòu)化查詢(xún)語(yǔ)言結(jié)構(gòu)化查詢(xún)

6、語(yǔ)言(SQL,Structured Query Language)是一種關(guān)系型數(shù)據(jù)庫(kù)操作語(yǔ)言,它具有數(shù)據(jù)查詢(xún)、數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)控制功能,可以用于定義和管理數(shù)據(jù)庫(kù)中的對(duì)象,也可以用于檢索、插入、修改和刪除關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)。結(jié)構(gòu)化查詢(xún)語(yǔ)言包含以下6個(gè)部分。數(shù)據(jù)查詢(xún)語(yǔ)言(DQL):通過(guò)數(shù)據(jù)檢索語(yǔ)句從表中獲取數(shù)據(jù)。關(guān)鍵字SELECT是數(shù)據(jù)查詢(xún)語(yǔ)句中使用最多的動(dòng)詞,其他常用的關(guān)鍵字有WHERE,ORDER BY,GROUP BY以及HAVING。這些關(guān)鍵字也經(jīng)常與其他類(lèi)型的SQL語(yǔ)句一起使用。數(shù)據(jù)操作語(yǔ)言(DML):也稱(chēng)為動(dòng)作查詢(xún)語(yǔ)言,用于添加、修改和刪除表中的記錄,在DML語(yǔ)句中使用的動(dòng)詞

7、主要包括INSERT、UPDATE和DELETE。事務(wù)處理語(yǔ)言(TPL):確保被DML語(yǔ)句影響的表的所有行及時(shí)得到更新,所使用的語(yǔ)句主要包括BEGIN TRANSACTION、COMMIT和ROLLBACK。數(shù)據(jù)控制語(yǔ)言(DCL):通過(guò)GRANT或REVOKE進(jìn)行授權(quán)或撤銷(xiāo)授權(quán),確定單個(gè)用戶(hù)、角色和用戶(hù)組對(duì)數(shù)據(jù)庫(kù)對(duì)象的訪(fǎng)問(wèn)權(quán)限。數(shù)據(jù)定義語(yǔ)言(DDL):在數(shù)據(jù)庫(kù)中創(chuàng)建新表或刪除表,在表中創(chuàng)建索引等,也是動(dòng)作查詢(xún)的一部分。在DDL語(yǔ)句中使用的動(dòng)詞主要包括CREATE、ALTER和DROP。指針控制語(yǔ)言(CCL):用于對(duì)表中的單獨(dú)行進(jìn)行操作。所用語(yǔ)句包括DECLARE CURSOR、FETCH IN

8、TO和UPDATE WHERE CURRENT等。1.1 數(shù)據(jù)庫(kù)基本概念1.2.1 什么是MySQLMySQL是當(dāng)今最受歡迎的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),由Oracle公司開(kāi)發(fā)、分發(fā)并提供技術(shù)支持。MySQL官方網(wǎng)站(/)提供了有關(guān)MySQL軟件的最新信息。MySQL是一種數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL是一種開(kāi)源軟件MySQL數(shù)據(jù)庫(kù)服務(wù)器非??焖?、可靠、可擴(kuò)展且易于使用MySQL服務(wù)器適用于客戶(hù)端/服務(wù)器或嵌入式系統(tǒng)有大量的共享MySQL軟件可以使用1.2 MySQL概述1.2.2 MySQL的主要特點(diǎn)跨平臺(tái)性真正的多線(xiàn)程提供多種編程語(yǔ)言支持?jǐn)?shù)據(jù)類(lèi)型豐富安全性好處理

9、大型數(shù)據(jù)庫(kù)連接性好客戶(hù)端和工具1.2 MySQL概述1.2.3 MySQL的版本MySQL企業(yè)版(Enterprise Edition)MySQL企業(yè)版包括最全面的高級(jí)功能,管理工具和技術(shù)支持,可實(shí)現(xiàn)最高級(jí)別的MySQL可擴(kuò)展性,安全性,可靠性和正常運(yùn)行時(shí)間。它降低了開(kāi)發(fā),部署和管理業(yè)務(wù)關(guān)鍵型MySQL應(yīng)用程序的風(fēng)險(xiǎn),成本和復(fù)雜性。MySQL標(biāo)準(zhǔn)版(Standard Edition)MySQL標(biāo)準(zhǔn)版能夠提供高性能和可擴(kuò)展的聯(lián)機(jī)事務(wù)處理(OLTP)應(yīng)用程序。該版本包括InnoDB,使其成為完全集成事務(wù)安全、符合ACID規(guī)則的數(shù)據(jù)庫(kù)。此外,通過(guò)MySQL復(fù)制可以提供高性能和可伸縮的應(yīng)用程序。MyS

10、QL群集版(Cluster Carrier Grade Edition)MySQL群集是集線(xiàn)性可擴(kuò)展性和高可用性于一體的分布式數(shù)據(jù)庫(kù),它提供了內(nèi)存中的實(shí)時(shí)訪(fǎng)問(wèn),并在跨分區(qū)和分布式數(shù)據(jù)集之間保持事務(wù)一致性。它是為關(guān)鍵任務(wù)應(yīng)用而設(shè)計(jì)的。MySQL社區(qū)版(Community Edition)該版本是世界上最流行的開(kāi)源數(shù)據(jù)庫(kù)的免費(fèi)下載版本,它在GPL許可下提供,并由一個(gè)龐大而活躍的開(kāi)源開(kāi)發(fā)人員社區(qū)提供支持。MySQL社區(qū)版可以在20多個(gè)平臺(tái)和操作系統(tǒng)上使用,主要包括以下組成部分:SQL和NoSQL、MySQL文檔存儲(chǔ)、事務(wù)性數(shù)據(jù)字典、可插拔的存儲(chǔ)引擎體系結(jié)構(gòu)(InnoDB、NDB、MyISAM等)、M

11、ySQL復(fù)制、MySQL組復(fù)制、MySQL InnoDB群集、MySQL路由器、MySQL分區(qū)、存儲(chǔ)過(guò)程、觸發(fā)器、視圖、性能架構(gòu)、信息架構(gòu)、MySQL連接器(ODBC、JDBC、.NET等)、MySQL工作臺(tái)。1.2 MySQL概述1.2.3 MySQL的版本MySQL企業(yè)版(Enterprise Edition)MySQL企業(yè)版包括最全面的高級(jí)功能,管理工具和技術(shù)支持,可實(shí)現(xiàn)最高級(jí)別的MySQL可擴(kuò)展性,安全性,可靠性和正常運(yùn)行時(shí)間。它降低了開(kāi)發(fā),部署和管理業(yè)務(wù)關(guān)鍵型MySQL應(yīng)用程序的風(fēng)險(xiǎn),成本和復(fù)雜性。MySQL標(biāo)準(zhǔn)版(Standard Edition)MySQL標(biāo)準(zhǔn)版能夠提供高性能和可

12、擴(kuò)展的聯(lián)機(jī)事務(wù)處理(OLTP)應(yīng)用程序。該版本包括InnoDB,使其成為完全集成事務(wù)安全、符合ACID規(guī)則的數(shù)據(jù)庫(kù)。此外,通過(guò)MySQL復(fù)制可以提供高性能和可伸縮的應(yīng)用程序。MySQL群集版(Cluster Carrier Grade Edition)MySQL群集是集線(xiàn)性可擴(kuò)展性和高可用性于一體的分布式數(shù)據(jù)庫(kù),它提供了內(nèi)存中的實(shí)時(shí)訪(fǎng)問(wèn),并在跨分區(qū)和分布式數(shù)據(jù)集之間保持事務(wù)一致性。它是為關(guān)鍵任務(wù)應(yīng)用而設(shè)計(jì)的。MySQL社區(qū)版(Community Edition)該版本是世界上最流行的開(kāi)源數(shù)據(jù)庫(kù)的免費(fèi)下載版本,它在GPL許可下提供,并由一個(gè)龐大而活躍的開(kāi)源開(kāi)發(fā)人員社區(qū)提供支持。MySQL社區(qū)版可

13、以在20多個(gè)平臺(tái)和操作系統(tǒng)上使用,主要包括以下組成部分:SQL和NoSQL、MySQL文檔存儲(chǔ)、事務(wù)性數(shù)據(jù)字典、可插拔的存儲(chǔ)引擎體系結(jié)構(gòu)(InnoDB、NDB、MyISAM等)、MySQL復(fù)制、MySQL組復(fù)制、MySQL InnoDB群集、MySQL路由器、MySQL分區(qū)、存儲(chǔ)過(guò)程、觸發(fā)器、視圖、性能架構(gòu)、信息架構(gòu)、MySQL連接器(ODBC、JDBC、.NET等)、MySQL工作臺(tái)。1.2 MySQL概述1.2.4 MySQL 8.0的新特性數(shù)據(jù)字典原子DDL語(yǔ)句安全性角色支持密碼管理控制FIPS模式支持資源管理InnoDB增強(qiáng)功能默認(rèn)字符集由latin1變?yōu)閡tf8mb4系統(tǒng)表全部換成事

14、務(wù)型的InnoDB表參數(shù)修改持久化新增降序索引1.2 MySQL概述1.3.1 MySQL的下載MySQL社區(qū)版8.0.16可以從MySQL官網(wǎng)上下載,其主要組件包括MySQL服務(wù)器、MySQL Shell、MySQL Workbench、MySQL路由、各種MySQL連接器、MySQL示例數(shù)據(jù)庫(kù)以及MySQL文檔等。所有這些組件都可以使用MySQL安裝程序在安裝向?qū)崾鞠乱淮涡酝瓿?。下載MySQL社區(qū)版8.0.16,需要注冊(cè)一個(gè)Oracle網(wǎng)絡(luò)賬戶(hù)。登錄到該賬戶(hù)之后,即可下載MySQL社區(qū)版8.0.16安裝程序。具體的下載網(wǎng)址如下:/downloads/windows/installer/8

15、.0.html下載選項(xiàng)在具有聯(lián)機(jī)連接的情況下運(yùn)行MySQL安裝程序,請(qǐng)?jiān)谏厦娴膍ysql-installer-web community-.msi行中單擊“Download”按鈕,安裝程序文件名為mysql-installer web-community-.msi。在沒(méi)有聯(lián)機(jī)連接的情況下運(yùn)行MySQL安裝程序,請(qǐng)?jiān)谙旅娴膍ysql-installer- community-.msi行中單擊“Download”按鈕,安裝程序文件名為mysql-installer- ommunity-.msi。1.3 MySQL的下載和安裝1.3.2 MySQL的安裝在Window 10平臺(tái)上安裝MySQL社區(qū)版

16、8.0.16的操作步驟運(yùn)行安裝程序,接受軟件許可協(xié)議。選擇安裝類(lèi)型。選擇“Developer Default”選項(xiàng)時(shí),將安裝開(kāi)發(fā)MySQL應(yīng)用程序所需的所有產(chǎn)品。選擇是否安裝MySQL for Visual Studio組件。完成MySQL組件安裝。配置MySQL產(chǎn)品:配置獨(dú)立的MySQL服務(wù)器實(shí)例,配置服務(wù)器類(lèi)型和連接性,配置身份認(rèn)證方式,設(shè)置MySQL賬戶(hù)和角色,配置Windows服務(wù)選項(xiàng),應(yīng)用MySQL服務(wù)器配置,完成MySQL服務(wù)器配置。配置MySQL路由,連接到MySQL服務(wù)器,通過(guò)運(yùn)行SQL腳本來(lái)創(chuàng)建MySQL示例數(shù)據(jù)庫(kù)。最終完成所有MySQL產(chǎn)品的配置過(guò)程。 1.3 MySQL的

17、下載和安裝1.3.3 MySQL服務(wù)管理1. 圖形界面方式使用Windows服務(wù)管理工具對(duì)MySQL服務(wù)進(jìn)行管理。按Win+R組合鍵,當(dāng)彈出“運(yùn)行”對(duì)話(huà)框時(shí),在“打開(kāi)”文本框中輸入“services.msc”,在“服務(wù)”列表中選擇“MySQL8.0”服務(wù)項(xiàng),使用工具欄中的按鈕可以啟動(dòng)、停止、暫?;蛑貑⑺x的服務(wù)。2. 命令行方式啟動(dòng)MySQL服務(wù):net start MySQL80停止MySQL服務(wù):net stop MySQL80安裝MySQL服務(wù)(默認(rèn)服務(wù)名為MySQL):mysqld install 卸載MySQL服務(wù):mysqld -remove 1.3 MySQL的下載和安裝1.4.

18、1 MySQL命令行工具1.4 MySQL程序介紹1.4.1 MySQL命令行工具命令行工具mysql的使用方法1. 調(diào)用mysql工具mysql -h -u -p在“mysql”提示符下輸入一個(gè)SQL語(yǔ)句,并以“;”、“g”或者“G”結(jié)束,然后按回車(chē)鍵執(zhí)行該語(yǔ)句。如果要退出mysql命令行工具,可以執(zhí)行quit或exit命令。2. mysql選項(xiàng)mysql命令行工具提供了許多選項(xiàng),其中多數(shù)選項(xiàng)都有短格式和長(zhǎng)格式,這兩種格式分別以“-”和“-”開(kāi)頭。如果選項(xiàng)后面還有參數(shù),則使用短格式時(shí)直接跟參數(shù),使用長(zhǎng)格式時(shí)選項(xiàng)與參數(shù)用等號(hào)分隔。1.4 MySQL程序介紹1.4.1 MySQL命令行工具3.

19、mysql命令mysql可以將發(fā)出的SQL語(yǔ)句發(fā)送到待執(zhí)行的服務(wù)器,此外還有一些命令mysql可以由mysql自己解釋。要查看這些命令,在mysql提示下輸入“help”或“h:”。4. 從文本文件執(zhí)行SQL語(yǔ)句也可以事先將要執(zhí)行的SQL語(yǔ)句保存到一個(gè)腳本文件(.sql)中,然后通過(guò)mysql從該文件讀取輸入。為此首先創(chuàng)建一個(gè)腳本文件script.sql并編寫(xiě)想要執(zhí)行的語(yǔ)句,然后按以下方式調(diào)用mysql:mysql db_name output.tab執(zhí)行腳本文件包含的批處理后,輸出結(jié)果寫(xiě)入文件output.tab中。如果在文本文件中包含一個(gè)use db_name語(yǔ)句,則不需要在命令行中指定數(shù)

20、據(jù)庫(kù)名:mysql source script.sql;mysql . script.sql;1.4 MySQL程序介紹1.4.2 MySQL工作臺(tái)1. MySQL工作臺(tái)的功能SQL開(kāi)發(fā);數(shù)據(jù)建模(設(shè)計(jì));服務(wù)器管理;數(shù)據(jù)遷移;MySQL企業(yè)支持。2. 運(yùn)行MySQL工作臺(tái)單擊“開(kāi)始”按鈕,彈出“開(kāi)始”菜單;然后展開(kāi)“MySQL”文件夾,單擊“MySQL Workbench 8.0 CE”快捷方式。在“MySQL Connecions”下方單擊“Local instance MySQL80”連接,以root賬戶(hù)連接到MySQL服務(wù)器。輸入root賬戶(hù)的登錄密碼,然后單擊“OK”按鈕。如果想保存

21、登錄密碼,可勾選“Save password in vault”復(fù)選框。當(dāng)連接到MySQL服務(wù)器后,將會(huì)顯示MySQL工作臺(tái)用戶(hù)界面。3. 設(shè)置數(shù)據(jù)庫(kù)存儲(chǔ)位置在數(shù)據(jù)庫(kù)導(dǎo)航窗格底部擊“Administration”選項(xiàng),單擊“Options File”,以設(shè)置MySQL配置文件。在“Administration - Options File”窗格中,勾選“datadir”復(fù)選框,并在右側(cè)輸入或選擇新的數(shù)據(jù)目錄的路徑。單擊“Administration - Options File”窗格底部的“Apply”按鈕,將所作更改保存到MySQL配置文件中。在“Apply Changes to MySQL

22、 Configuration File”窗口右下角,單擊“Apply”按鈕。將原數(shù)據(jù)目錄中的所有內(nèi)容復(fù)制到新設(shè)置的數(shù)據(jù)目錄中。重啟MySQL服務(wù)器,使新設(shè)置生效。1.4 MySQL程序介紹1.4.3 其他MySQL圖形管理工具1. Navicat for MySQLNavicat for MySQL是一套由PremiumSoft公司出品的用于管理MySQL數(shù)據(jù)庫(kù)的桌面應(yīng)用程序。使用它能同時(shí)連接MySQL和MariaDB數(shù)據(jù)庫(kù),并與Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里云、騰訊云和華為云等云數(shù)據(jù)庫(kù)兼容。它提供了智能數(shù)據(jù)庫(kù)設(shè)

23、計(jì)器、簡(jiǎn)單的SQL編輯、無(wú)縫數(shù)據(jù)遷移以及多元化操作工具,為MySQL數(shù)據(jù)庫(kù)管理、開(kāi)發(fā)和維護(hù)提供了一款直觀而強(qiáng)大的圖形界面。2. SQLYogSQLyog是Webyog公司出品的一款簡(jiǎn)潔高效、功能強(qiáng)大的圖形化MySQL數(shù)據(jù)庫(kù)管理工具。它提供了數(shù)據(jù)庫(kù)同步與數(shù)據(jù)庫(kù)結(jié)構(gòu)同步工具、數(shù)據(jù)庫(kù)備份與還原功能,支持XML、HTML、CSV等多種格式數(shù)據(jù)的導(dǎo)入與導(dǎo)出,可以運(yùn)行批量SQL腳本文件,在新版本中更是增加了強(qiáng)大的數(shù)據(jù)遷移。使用SQLyog可以通過(guò)網(wǎng)絡(luò)來(lái)維護(hù)遠(yuǎn)端的MySQL數(shù)據(jù)庫(kù)。3. MySQL GUI ToolsMySQL GUI Tools是一個(gè)可視化的MySQL數(shù)據(jù)庫(kù)管理控制臺(tái)。它提供了4個(gè)好用的圖

24、形化應(yīng)用程序,即數(shù)據(jù)庫(kù)設(shè)計(jì)工具、數(shù)據(jù)遷移工具、MySQL管理器以及查詢(xún)?yōu)g覽器,可以方便地進(jìn)行數(shù)據(jù)庫(kù)管理和數(shù)據(jù)查詢(xún)。這些圖形化管理工具可以大大提高數(shù)據(jù)庫(kù)管理、備份、遷移和查詢(xún)以及管理數(shù)據(jù)庫(kù)實(shí)例效率,即使沒(méi)有豐富的SQL語(yǔ)言基礎(chǔ)的用戶(hù)也可以應(yīng)用自如。4. phpMyAdminphpMyAdmin是一個(gè)利用PHP編寫(xiě)的免費(fèi)軟件工具,旨在通過(guò)Web管理MySQL數(shù)據(jù)庫(kù)。它為管理MySQL數(shù)據(jù)庫(kù)提供了一個(gè)Web接口,可以在任何地方通過(guò)網(wǎng)頁(yè)對(duì)遠(yuǎn)端的MySQL數(shù)據(jù)庫(kù)進(jìn)行管理,各種常用操作(管理數(shù)據(jù)庫(kù)、表、列、關(guān)系、索引、用戶(hù)以及權(quán)限等)既可以通過(guò)網(wǎng)頁(yè)執(zhí)行,同時(shí)也可以直接通過(guò)執(zhí)行SQL語(yǔ)句的方式來(lái)實(shí)現(xiàn)。1.4

25、 MySQL程序介紹第2章 數(shù)據(jù)庫(kù)與表2.1.1 創(chuàng)建數(shù)據(jù)庫(kù)使用CREATE DATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù):CREATE DATABASE | SCHEMA IF NOT EXISTS 數(shù)據(jù)庫(kù)名創(chuàng)建選項(xiàng) .創(chuàng)建選項(xiàng): DEFAULT CHARACTER SET = 字符集名| DEFAULT COLLATE = 排序規(guī)則名 | DEFAULT ENCRYPTION = Y | NCREATE SCHEMA是CREATE DATABASE的同義詞。使用SHOW CREATE DATABASE語(yǔ)句可以顯示創(chuàng)建命名數(shù)據(jù)庫(kù)的CREATE DATABASE語(yǔ)句,可以查看該數(shù)據(jù)庫(kù)的默認(rèn)字符集和排序規(guī)則。

26、例如:mysql CREATE DATABASE db1;mysql SHOW CREATE DATABASE db1G2.1 數(shù)據(jù)庫(kù)操作2.1.2 列舉數(shù)據(jù)庫(kù)使用SHOW DATABASES列舉MySQL服務(wù)器主機(jī)上的所有數(shù)據(jù)庫(kù):SHOW DATABASES | SCHEMASLIKE 模式 | WHERE 表達(dá)式其中SHOW SCHEMAS是SHOW DATABASES的同義詞。LIKE子句(如果存在)指示要匹配的數(shù)據(jù)庫(kù)名稱(chēng),模式是一個(gè)字符串,其中可以包含SQL通配符“%”和“_”,百分號(hào)“%”表示任意多個(gè)字符,下畫(huà)線(xiàn)“_”表示單個(gè)任意字符。也可以使用WHERE子句來(lái)選擇使用更一般條件的行

27、。用戶(hù)只能看到具有某種權(quán)限的數(shù)據(jù)庫(kù),除非擁有全局SHOW DATABASES權(quán)限。也可以使用mysqlshow命令獲取此數(shù)據(jù)庫(kù)清單。如果服務(wù)器是使用-skip-show-database選項(xiàng)啟動(dòng)的,則不能使用SHOW DATABASES語(yǔ)句,除非具有SHOW DATABASES權(quán)限。也可以使用mysqlshow命令列出數(shù)據(jù)庫(kù)清單。2.1 數(shù)據(jù)庫(kù)操作2.1.3 設(shè)置默認(rèn)數(shù)據(jù)庫(kù)使用USE語(yǔ)句設(shè)置默認(rèn)的數(shù)據(jù)庫(kù):USE 數(shù)據(jù)庫(kù)名USE語(yǔ)句可以通知MySQL將具有指定名稱(chēng)的數(shù)據(jù)庫(kù)作為當(dāng)前的默認(rèn)數(shù)據(jù)庫(kù)來(lái)使用,在后續(xù)對(duì)數(shù)據(jù)庫(kù)對(duì)象操作(例如創(chuàng)建表)的語(yǔ)句中,這個(gè)數(shù)據(jù)庫(kù)將保持為默認(rèn)數(shù)據(jù)庫(kù),直到語(yǔ)句段結(jié)束,或者直

28、到發(fā)布另一個(gè)不同的USE語(yǔ)句。在MySQL中,可以使用DATABASE()函數(shù)來(lái)獲取當(dāng)前的默認(rèn)數(shù)據(jù)庫(kù)的名稱(chēng)。如果沒(méi)有默認(rèn)數(shù)據(jù)庫(kù),則DATABASE()函數(shù)將返回NULL。2.1 數(shù)據(jù)庫(kù)操作2.1.4 修改數(shù)據(jù)庫(kù)使用ALTER DATABASE語(yǔ)句修改數(shù)據(jù)庫(kù):ALTER DATABASE | SCHEMA 數(shù)據(jù)庫(kù)名修改選項(xiàng) .修改選項(xiàng):DEFAULT CHARACTER SET = 字符集名 | DEFAULT COLLATE = 排序規(guī)則名| DEFAULT ENCRYPTION = Y | NALTER DATABASE語(yǔ)句用于更改數(shù)據(jù)庫(kù)的整體特征。這些特征存儲(chǔ)在數(shù)據(jù)字典中。要使用ALTER

29、 DATABASE語(yǔ)句,需要擁有修改數(shù)據(jù)庫(kù)的權(quán)限。ALTER SCHEMA是ALTER DATABASE的同義詞。數(shù)據(jù)庫(kù)名指定要修改的數(shù)據(jù)庫(kù)。如果省略數(shù)據(jù)庫(kù)名,則ALTER DATABASE語(yǔ)句用于當(dāng)前的默認(rèn)數(shù)據(jù)庫(kù)。2.1 數(shù)據(jù)庫(kù)操作2.1.5 刪除數(shù)據(jù)庫(kù)使用DROP DATABASE語(yǔ)句從MySQL服務(wù)器上刪除數(shù)據(jù)庫(kù):DROP DATABASE | SCHEMA IF EXISTS 數(shù)據(jù)庫(kù)名數(shù)據(jù)庫(kù)名指定要?jiǎng)h除的數(shù)據(jù)庫(kù)。IF EXISTS用于防止在數(shù)據(jù)庫(kù)不存在時(shí)發(fā)生錯(cuò)誤。DROP DATABASE必須擁有數(shù)據(jù)庫(kù)的DROP權(quán)限。DROP SCHEMA是DROP DATABASE的同義詞。由于執(zhí)行

30、DROP DATABASE語(yǔ)句時(shí)將從給定的數(shù)據(jù)庫(kù)目錄中刪除由MySQL在正常操作期間創(chuàng)建的文件和目錄,從而刪除數(shù)據(jù)庫(kù)中的所有表并刪除整個(gè)數(shù)據(jù)庫(kù),因此使用這個(gè)語(yǔ)句時(shí)要非常小心,以防止發(fā)生誤操作。也可以使用mysqladmin客戶(hù)端工具來(lái)刪除數(shù)據(jù)庫(kù)。2.1 數(shù)據(jù)庫(kù)操作2.2.1 數(shù)據(jù)類(lèi)型1. 數(shù)值類(lèi)型 BIT(M) INYINT(M) UNSIGNED ZEROFILL BOOL、BOOLEAN SMALLINT(M) UNSIGNED ZEROFILL MEDIUMINT(M) UNSIGNED ZEROFILL INT(M) UNSIGNED ZEROFILL INTEGER(M) UNSIG

31、NED ZEROFILL BIGINT(M) UNSIGNED ZEROFILL SERIAL FLOAT(M,D) UNSIGNED ZEROFILL DOUBLE(M,D) UNSIGNED ZEROFILL DECIMAL(M,D) UNSIGNED ZEROFILL DEC(M,D) UNSIGNED ZEROFILL、NUMERIC(M,D) UNSIGNED ZEROFILL、FIXED(M,D) UNSIGNED ZEROFILL2. 字符串類(lèi)型 CHAR(M) VARCHAR(M) BINARY(M) VARBINARY(M) TINYBLOB TINYTEXT(M) BLOB

32、(M) TEXT(M) MEDIUMBLOB MEDIUMTEXT(M) LONGBLOB LONGTEXT(M) ENUM(value1,value2,.) SET(value1,value2,.)3. 日期時(shí)間類(lèi)型 TIME DATE DATETIME TIMESTAMP YEAR2.2 表操作2.2.2 存儲(chǔ)引擎InnoDB:是MySQL8.0中的默認(rèn)存儲(chǔ)引擎。MyISAM:是在Web數(shù)據(jù)倉(cāng)庫(kù)和其他應(yīng)用環(huán)境下最常使用的存儲(chǔ)引擎之一。Memory:將所有數(shù)據(jù)存儲(chǔ)在RAM中,可以在需要快速查找非關(guān)鍵數(shù)據(jù)的環(huán)境中提供快速訪(fǎng)問(wèn)。CSV:實(shí)際上是以逗號(hào)分隔數(shù)據(jù)的文本文件,它允許以CSV格式導(dǎo)入或轉(zhuǎn)

33、儲(chǔ)數(shù)據(jù)。Archive:使用緊湊的無(wú)索引表,可用于存儲(chǔ)和檢索大量很少引用的歷史、存檔、或安全審計(jì)信息。Blackhole:接受但不存儲(chǔ)數(shù)據(jù),類(lèi)似于Unix / dev / null設(shè)備。 NDB:是一種群集數(shù)據(jù)庫(kù)引擎,特別適用于具有高性能查找要求的應(yīng)用程序。Merge:允許MySQL DBA或開(kāi)發(fā)人員將一系列相同的MyISAM表以邏輯方式組合在一起,并將它們作為一個(gè)對(duì)象來(lái)用。Federated:將多個(gè)分離的MySQL服務(wù)器鏈接起來(lái),從多個(gè)物理服務(wù)器創(chuàng)建一個(gè)邏輯數(shù)據(jù)庫(kù)。Example:此引擎用作MySQL源代碼中的示例,說(shuō)明如何編寫(xiě)新的存儲(chǔ)引擎。2.2 表操作2.2.3 創(chuàng)建表使用CREATE

34、TABLE語(yǔ)句在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建表:CREATE TEMPORARY TABLE IF NOT EXISTS 表名(列定義, .)CHARACTER SET 字符集名COLLATE 排序規(guī)則名COMMENT 表注釋文字ENGINE=存儲(chǔ)引擎名列定義: 列名 數(shù)據(jù)類(lèi)型 NOT NULL|NULL DEFAULT 默認(rèn)值A(chǔ)UTO_INCREMENT UNIQUE KEY | PRIMARY KEY COMMENT 列注釋文字2.2 表操作2.2.4 查看表信息1. 使用SHOW TABLES語(yǔ)句列出數(shù)據(jù)庫(kù)中的所有非臨時(shí)表:SHOW FULL TABLES FROM 數(shù)據(jù)庫(kù)名 LIKE 模式2. 使

35、用SHOW CREATE TABLE語(yǔ)句可示用于創(chuàng)建給定表的CREATE TABLE語(yǔ)句:SHOW CREATE TABLE 表名3. 使用SHOW COLUMNS語(yǔ)句查看一個(gè)給定表中各列的信息:SHOW FULL COLUMNS FROM 表名 FROM 數(shù)據(jù)庫(kù)名 LIKE 模式4. 使用DESCRIBE語(yǔ)句獲取指定表中各列的信息:DESCRIBE | DESC 表名 列名 | 通配符2.2 表操作2.2.5 修改表使用ALTER TABLE語(yǔ)句修改表結(jié)構(gòu):ALTER IGNORE TABLE 表名修改選項(xiàng), 修改選項(xiàng) .修改選項(xiàng):ADD COLUMN 列定義 FIRST|AFTER 列名|

36、ADD COLUMN (列定義, .)|ALTER COLUMN 列名 SET DEFAULT 常量|DROP DEFAULT|CHANGE COLUMN old_列名 列定義 FIRST|AFTER 列名|MODIFY COLUMN 列定義 FIRST|AFTER 列名|DROP COLUMN 列名|DROP PRIMARY KEY|RENAME TO 新表名|ORDER BY 列名|DEFAULT CHARACTER SET = 字符集名|DEFAULT COLLATE = 排序規(guī)則名| COMMENT = 表注釋文字| ENGINE = 存儲(chǔ)引擎名2.2 表操作2.2.6 復(fù)制表通過(guò)復(fù)制

37、現(xiàn)有表的結(jié)構(gòu)和數(shù)據(jù)來(lái)創(chuàng)建表:CREATE TEMPORARY TABLE IF NOT EXISTS 表名( LIKE 源表名)|AS SELECT .其中表名指定要?jiǎng)?chuàng)建的新表,源表名表示現(xiàn)有的表。使用LIKE子句可以創(chuàng)建一個(gè)與現(xiàn)有表結(jié)構(gòu)相同的新表,其中的列名、數(shù)據(jù)類(lèi)型、是否允許為空等屬性以及索引都被復(fù)制,但不復(fù)制表中的數(shù)據(jù),因此所創(chuàng)建的新表是一個(gè)空表。使用AS子句可以復(fù)制由SELECT語(yǔ)句返回的數(shù)據(jù),但索引和完整性約束不會(huì)被復(fù)制。2.2 表操作2.2.7 重命名表1. 在ALTER TABLE語(yǔ)句中使用RENAME子句對(duì)指定表進(jìn)行重命名:ALTER TABLE 舊表名RENAME TO 新表

38、名例如,使用下面的語(yǔ)句可以將表test重命名為demo:ALTER TABLE testRENAME TO demo;2. 使用RENAME TABLE語(yǔ)句對(duì)一個(gè)或多個(gè)表進(jìn)行重命名:RENAME TABLE 舊表名1 TO 新表名1, 舊表名2 TO 新表名2 .其中“舊表名1”和“舊表名2”表示表的原來(lái)名稱(chēng),“新表名1”和“新表名2”指定表的新名稱(chēng)。與ALTER TABLE語(yǔ)句不同的是,使用RENAME TABLE語(yǔ)句可以同時(shí)對(duì)多個(gè)表進(jìn)行重命名。例如:RENAME TABLE demo TO test, demo2 TO test2;2.2 表操作2.2.8 刪除表使用DROP TABLE語(yǔ)

39、句可以從數(shù)據(jù)庫(kù)中刪除一個(gè)或多個(gè)表,語(yǔ)法格式如下。DROP TEMPORARY TABLE IF EXISTS 表名, 表名 .其中表名表示待刪除的表的名稱(chēng)。當(dāng)使用TEMPORARY關(guān)鍵詞時(shí),這個(gè)語(yǔ)句只刪除臨時(shí)表。對(duì)于不存在的表,使用IF EXISTS以防止錯(cuò)誤發(fā)生。例如,下面的語(yǔ)句用于刪除當(dāng)前數(shù)據(jù)庫(kù)中的test1和test2表:DROP TABLE IF EXISTS test1, test2;2.2 表操作2.3.1 主鍵約束主鍵(Primary Key)是表中的一列或多列的組合,由多列組成的主鍵也稱(chēng)為復(fù)合主鍵,主鍵的值稱(chēng)為鍵值,它能夠唯一地標(biāo)識(shí)表中的一行。在表中創(chuàng)建主鍵時(shí),將會(huì)在主鍵列上創(chuàng)

40、建唯一性索引,從而實(shí)現(xiàn)數(shù)據(jù)的唯一性,使用主鍵進(jìn)行查詢(xún)時(shí)還會(huì)加快數(shù)據(jù)訪(fǎng)問(wèn)速度。使用主鍵約束時(shí)必須遵循以下規(guī)則:每個(gè)表只能定義一個(gè)主鍵。主鍵的值必須能夠唯一標(biāo)識(shí)表中的每一行,表中兩個(gè)不同行的主鍵值不能相同,并且不能為NULL。這條規(guī)則稱(chēng)為唯一性規(guī)則。復(fù)合主鍵不能包含不必要的多余列。如果從一個(gè)復(fù)合主鍵中刪除一列后,剩下的列構(gòu)成的主鍵仍能唯一標(biāo)識(shí)表中的每一行,則這個(gè)復(fù)合主鍵就是不正確的。這條規(guī)則稱(chēng)為最小化規(guī)則。在復(fù)合主鍵中某一列的值可以重復(fù),但復(fù)合主鍵中所有列的組合鍵必須是唯一的。一個(gè)列名在復(fù)合主鍵中只能出現(xiàn)一次。在MySQL中,可以在CREATE TABLE或ALTER TABLE語(yǔ)句中使用PRIM

41、ARY KEY子句在表中定義主鍵。如果要使用主鍵作為列的完整性約束,則應(yīng)當(dāng)在相應(yīng)列定義中添加關(guān)鍵字PRIMARY KEY。如果使用主鍵作為表的完整性約束,則應(yīng)在定義的最后列后面添加PRIMARY KEY(列名, .)子句。2.3 數(shù)據(jù)完整性約束2.3.2 候選健約束候選鍵可以是表中的一列,也可以是表中多列的一個(gè)組合。任何時(shí)候,候選鍵的值必須是唯一的。候選鍵與主鍵之間的區(qū)別表現(xiàn)在以下幾個(gè)方面。一個(gè)表中只能有一個(gè)主鍵,但一個(gè)表中可以有多個(gè)候選鍵,甚至不同候選鍵之間還可以重合。例如,在col1和col2列上定義了一個(gè)候選鍵,在col2和col3列上定義了另一個(gè)候選鍵,這兩個(gè)候選鍵在col2列上重合了

42、,這在MySQL中是允許的 。主鍵的值不允許為NULL,候選鍵的值則可以取NULL,不過(guò)必須使用NULL或NOT NULL進(jìn)行聲明。一般情況下,創(chuàng)建主鍵時(shí)會(huì)自動(dòng)生成PRIMARY KEY索引,創(chuàng)建候選鍵時(shí)會(huì)自動(dòng)生成UNIQUE索引。候選鍵約束有兩種實(shí)現(xiàn)方式:如果作為列完整性約束實(shí)現(xiàn),則應(yīng)在列定義中添加UNIQUE關(guān)鍵字;如果作為表完整性約束實(shí)現(xiàn),則應(yīng)在最后的列定義后面添加UNIQUE (列名, .)子句。2.3 數(shù)據(jù)完整性約束2.3.3 參照完整性約束參照完整性約束是指表(子表)中的某一列表現(xiàn)為一個(gè)外鍵,可以引用另一個(gè)表(父表)中的主鍵或候選鍵。例如,成績(jī)表中的學(xué)號(hào)必須出現(xiàn)在學(xué)生表中,成績(jī)表中

43、的課程編號(hào)也必須出現(xiàn)在課程表中。在這個(gè)關(guān)系中,學(xué)生表和課程表為父表,成績(jī)表為子表,成績(jī)表中的學(xué)號(hào)列和課程編號(hào)列都表現(xiàn)為外鍵,。參照完整性約束可以在CREATE TABLE或ALTER TABLE語(yǔ)句中使用FOREIGN KEY . REFERENCES子句來(lái)定義:./*創(chuàng)建或修改子表*/ADD FOREIGN KEY 索引名 (索引列, .)/*外鍵*/REFERENCES 表名 (索引列, .)/*父表和被引用列*/ON DELETE RESTRICT | CASCADE | SET NULL | NO ACTIONON UPDATE RESTRICT | CASCADE | SET NUL

44、L | NO ACTION索引列:列名 (長(zhǎng)度) ASC | DESC2.3 數(shù)據(jù)完整性約束2.3.4 檢查完整性約束檢查完整性約束是指在CREATE TABLE語(yǔ)句中使用CHECK子句添加的約束條件,通過(guò)該約束條件可以限制在列中輸入的值,語(yǔ)法格式如下。.CHECKL (條件)其中條件指定列值應(yīng)滿(mǎn)足的條件。檢查完整性約束只能在創(chuàng)建表時(shí)定義,它可以在某個(gè)列上定義,也可以在表級(jí)別定義。注意:對(duì)于所有的存儲(chǔ)引擎,CHECK子句都會(huì)被分析,但是會(huì)被忽略。接受該子句但又忽略子句的原因是為了提高兼容性,以便更容易地從其他SQL服務(wù)器中導(dǎo)入代碼,并正常運(yùn)行應(yīng)用程序。2.3 數(shù)據(jù)完整性約束2.3.5 命名完整

45、性約束為了修改和刪除完整性約束,要求定義約束時(shí)對(duì)其進(jìn)行命名。要對(duì)完整性約束進(jìn)行命名,可以在約束定義之前使用CONSTRAINT子句,語(yǔ)法格式如下。CONSTRAINT 字符串PRIMARY KEY . | FOREIGN KEY. | CHECK .其中字符串指定所定義約束的名稱(chēng),該名稱(chēng)在數(shù)據(jù)庫(kù)中必須是唯一的。如果省略字符串參數(shù),則MySQL會(huì)自動(dòng)創(chuàng)建這個(gè)名稱(chēng)。CONSTRAINT子句要放在在相應(yīng)的約束前面,只能給表完整性約束指定名稱(chēng),而不能給列完整性約束指定名稱(chēng)。當(dāng)定義完整性約束時(shí),應(yīng)當(dāng)盡量給約束指定一個(gè)名稱(chēng),以便在修改或刪除約束時(shí)快速找到它們。2.3 數(shù)據(jù)完整性約束2.3.6 刪除完整性約

46、束在MySQL中,可以在ALTER TABLE語(yǔ)句中使用DROP子句來(lái)刪除完整性約束,語(yǔ)法格式如下。ALTER TABLE 表名DROP PRIMARY KEY | FOREIGN KEY 外鍵名 | INDEX 索引名其中,PRIMARY KEY指定刪除主鍵約束,F(xiàn)OREIGN KEY指定刪除外鍵約束,INDEX指定刪除候選鍵約束。從圖書(shū)表中刪除候選鍵約束。mysql USE test;mysql ALTER TABLE 圖書(shū) DROP INDEX isbn;2.3 數(shù)據(jù)完整性約束2.4.1 插入記錄1. INSERT.VALUES語(yǔ)句通過(guò)INSERT.VALUES語(yǔ)句可以使用指定的值向表中

47、插入一條或多條記錄:INSERT LOW_PRIORITY | HIGH_PRIORITY IGNOREINTO 表名 (列名, .)VALUES (表達(dá)式 | DEFAULT, .), (.), .ON DUPLICATE KEY UPDATE 列名=表達(dá)式, .2. INSERT.SELECT語(yǔ)句通過(guò)執(zhí)行INSERT.SELECT語(yǔ)句可以使用一個(gè)或多個(gè)現(xiàn)有表中的數(shù)據(jù)向另一個(gè)表中插入多條記錄:INSERT INTO 表名 (列名, .)SELECT . ON DUPLICATE KEY UPDATE 列名=表達(dá)式, .2.4 表記錄操作2.4.2 修改記錄在MySQL中,可以通過(guò)執(zhí)行UPDA

48、TE語(yǔ)句使用新值來(lái)更新表中的各個(gè)列。單表語(yǔ)法UPDATE LOW_PRIORITY IGNORE 表名SET 列名1=表達(dá)式1, 列名2=表達(dá)式2 .WHERE 條件ORDER BY.LIMIT 行數(shù)多表語(yǔ)法UPDATE LOW_PRIORITY IGNORE 表名, 表名.SET 列名1=表達(dá)式1, 列名2=表達(dá)式2.WHERE條件2.4 表記錄操作2.4.3 替換記錄對(duì)于包含主鍵或唯一索引的表,如果在要添加的記錄中主鍵列或唯一索引列的值在表中已經(jīng)存在,則可以使用REPLACE語(yǔ)句將原有的記錄替換為新記錄:REPLACE LOW_PRIORITY | DELAYEDINTO 表名 (列名,.

49、)VALUES (表達(dá)式 | DEFAULT,.),(.)REPLACE語(yǔ)句的功能與INSERT語(yǔ)句類(lèi)似。所不同的是,如果表中的一個(gè)舊記錄與一個(gè)用于PRIMARY KEY或一個(gè)UNIQUE索引的新記錄具有相同的值,則在插入新記錄之前會(huì)刪除舊記錄。除非表中有一個(gè)PRIMARY KEY或UNIQUE索引,否則使用REPLACE語(yǔ)句沒(méi)有什么意義,它會(huì)與INSERT語(yǔ)句完全相同,因?yàn)闆](méi)有索引用于確定是否新行復(fù)制了其他行。2.4 表記錄操作2.4.4 刪除記錄單表語(yǔ)法DELETE LOW_PRIORITY QUICK IGNORE FROM 表名WHERE條件ORDER BY.LIMIT 行數(shù)多表語(yǔ)法D

50、ELETE LOW_PRIORITY QUICK IGNORE表名 .* ,表名.*.FROM 表引用WHERE 條件另一種多表語(yǔ)法DELETE LOW_PRIORITY QUICK IGNOREFROM 表名.* , 表名.*.USING 表引用WHERE 條件2.4 表記錄操作第3章 數(shù)據(jù)查詢(xún)3.1.1 SELECT語(yǔ)句的基本組成SELECT 輸出項(xiàng), 輸出項(xiàng) .FROM 源表WHERE 搜索條件GROUP BY 列名 | 表達(dá)式|列位置, .HAVING 搜索條件ORDER BY 列名|表達(dá)式 | 列位置ASC | DESC, .LIMIT 偏移,行數(shù)|行數(shù) OFFSET 偏移INTO

51、OUTFILE 文件名 | INTO DUMPFILE 文件名 | INTO 變量名, 變量名3.1 SELECT語(yǔ)句概述3.1.2 常用查詢(xún)工具1. mysql命令行工具使用mysql命令行工具可以通過(guò)交互方式輸入SQL語(yǔ)句或從文件以批處理模式執(zhí)行SQL語(yǔ)句,從而完成在MySQL服務(wù)器上創(chuàng)建數(shù)據(jù)庫(kù)、查詢(xún)和操作數(shù)據(jù)的任務(wù)。2. MySQL WorkbenchMySQL Workbench是一種可視化的數(shù)據(jù)庫(kù)設(shè)計(jì)和管理工具,可以用于管理MySQL服務(wù)器,也可以用于創(chuàng)建和管理數(shù)據(jù)庫(kù)和各種數(shù)據(jù)庫(kù)對(duì)象。MySQLWorkbench提供了一個(gè)內(nèi)置的SQL編輯器,可以用來(lái)在數(shù)據(jù)庫(kù)連接上執(zhí)行各種SQL語(yǔ)句,

52、還可以將編寫(xiě)的SQL語(yǔ)句或查詢(xún)結(jié)果保存到文件中。3. Navicat for MySQLNavicat for MySQL是由PremiumSoft公司出品的用于管理MySQL數(shù)據(jù)庫(kù)的桌面應(yīng)用程序,它為MySQL數(shù)據(jù)庫(kù)管理、開(kāi)發(fā)和維護(hù)提供了一款直觀而強(qiáng)大的圖形界面。3.1 SELECT語(yǔ)句概述3.2.1 選擇所有列如果要查看表中所有列的信息,可在SELECT輸出項(xiàng)列表中使用星號(hào)(*)來(lái)選擇源表或視圖中的所有列。如果使用表或視圖名稱(chēng)進(jìn)行限定,則星號(hào)將被解析為對(duì)指定表或視圖中的所有列的引用。當(dāng)使用星號(hào)選擇所有列時(shí),查詢(xún)結(jié)果中的列順序與創(chuàng)建表或視圖時(shí)所指定的列順序相同。由于SELECT * 將查找表

53、中當(dāng)前存在的所有列,因此每次執(zhí)行SELECT * 語(yǔ)句時(shí),表結(jié)構(gòu)的更改(通過(guò)添加、刪除或重命名列)都會(huì)自動(dòng)反映出來(lái)。3.2.2 選擇部分列如果要從表中選擇一部分列作為SELECT查詢(xún)的輸出項(xiàng),則應(yīng)當(dāng)在輸出項(xiàng)列表中明確地列出每個(gè)列名,列名之間用逗號(hào)分隔。假如創(chuàng)建表時(shí)在表名或列名中使用了空格(不符合標(biāo)識(shí)符命名規(guī)則),則編寫(xiě)SELECT語(yǔ)句時(shí)需要使用反引號(hào)“”將表名或列名括起來(lái),例如SELECT student id, student name FROM student table,否則會(huì)出現(xiàn)錯(cuò)誤信息。如果在FROM子句中指定了多個(gè)表,而這些表中又有同名的列,則在使用這些列時(shí)需要在列名前面冠以表名,

54、以指明該列屬于哪個(gè)表。例如,在student和score表都有一個(gè)名稱(chēng)為stuid的列。若要引用student表中的stuid列,應(yīng)在輸出項(xiàng)列表中寫(xiě)上student.stuid;若要引用score表中的stuid列,則應(yīng)在輸出項(xiàng)列表中寫(xiě)上score.stuid。3.2 選擇查詢(xún)輸出項(xiàng)3.2.3 設(shè)置列別名在SELECT語(yǔ)句中,可以使用AS子句來(lái)更改結(jié)果集中的列名或?yàn)榕缮蟹峙涿Q(chēng):列名 AS 別名3.2.4 增加派生列在輸出項(xiàng)列表中,有些列不是指定為對(duì)列的簡(jiǎn)單引用,而是通過(guò)表中的其他列值計(jì)算而生成,例如表中有單價(jià)和數(shù)量列,可以在輸出項(xiàng)列表中增加一個(gè)用于計(jì)算總額的表達(dá)式,其值等于單價(jià)乘以數(shù)量,此

55、即派生列。派生列本無(wú)名稱(chēng),通常應(yīng)使用AS子句為其指定別名。在派生列中,可以對(duì)數(shù)值列或常量使用算術(shù)運(yùn)算符或函數(shù)進(jìn)行計(jì)算,也可以進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換。MySQL支持下列算術(shù)運(yùn)算符:+(加)、(減)、*(乘)、/(除)、%(模,即取余數(shù)),可以使用算術(shù)運(yùn)算符可以對(duì)數(shù)值數(shù)據(jù)進(jìn)行加、減、乘、除運(yùn)算。此外,也可以使用日期函數(shù)或常規(guī)加或減算術(shù)運(yùn)算符對(duì)日期時(shí)間類(lèi)型的列進(jìn)行算術(shù)運(yùn)算。3.2 選擇查詢(xún)輸出項(xiàng)3.2.5 消除重復(fù)行在輸出項(xiàng)列表中可以使用ALL和DISTINCT修飾符,用于指定是否應(yīng)返回重復(fù)的行。ALL是默認(rèn)值,指定應(yīng)返回所有匹配的行,包括重復(fù)行在內(nèi)。DISTINCT指定從結(jié)果集中刪除重復(fù)的行。DISTI

56、NCTROW是DISTINCT的同義詞。3.2.6 沒(méi)有表列的SELECT語(yǔ)句在SELECT語(yǔ)句中,只要SELECT子句是必選的,其他子句一律都是可選項(xiàng)。如果SELECT選擇列表中僅包含常量、變量、函數(shù)和其他表達(dá)式,而不包含從任何表或視圖中選擇的列,則沒(méi)有必要使用FROM子句。3.2 選擇查詢(xún)輸出項(xiàng)3.3.1 單表查詢(xún)當(dāng)從單個(gè)數(shù)據(jù)庫(kù)表中查詢(xún)數(shù)據(jù)時(shí),需要在FROM子句中指定要引用的該表的名稱(chēng),這種查詢(xún)稱(chēng)為單表查詢(xún)。在單表查詢(xún)中,可以使用下列兩種方式引用來(lái)源表。首先使用USE語(yǔ)句將一個(gè)數(shù)據(jù)庫(kù)設(shè)置為當(dāng)前數(shù)據(jù)庫(kù),然后在FROM子句中指定要引用的表名,此時(shí)這個(gè)表就是屬于當(dāng)前數(shù)據(jù)庫(kù)。不設(shè)置當(dāng)前數(shù)據(jù)庫(kù),在F

57、ROM子句中指定要引用的表名時(shí)在其前面冠以所屬數(shù)據(jù)庫(kù)的名稱(chēng)。如果要從多個(gè)表中查詢(xún)數(shù)據(jù)時(shí),則必須在FROM子句中指定要引用的多個(gè)表名,這種查詢(xún)稱(chēng)為多表查詢(xún)。在多表查詢(xún)中,需要使用某種方式對(duì)不同的表進(jìn)行連接,因此多表查詢(xún)也稱(chēng)為連接查詢(xún)。連接方式分為全連接和JOIN連接,JOIN連接又分為內(nèi)連接、外連接和交叉連接。3.3 選擇查詢(xún)數(shù)據(jù)源3.3.2 全連接查詢(xún)?nèi)B接是指在FROM子句中使用逗號(hào)來(lái)分隔各個(gè)表,語(yǔ)法格式如下:FROM 表名 AS 別名, 表名 AS 別名, .其中表名指定要引用的表,AS關(guān)鍵字和別名都是可選的。在全連接查詢(xún)中,查詢(xún)結(jié)果中的列來(lái)自各個(gè)表,結(jié)果集是由各個(gè)表中的行進(jìn)行交叉所得到的

58、各種可能的組合,也稱(chēng)為笛卡兒乘積,結(jié)果集包含的行數(shù)是各個(gè)來(lái)源表行數(shù)的乘積。例如,A表包含200行,B表300行,則以全連接方式查詢(xún)A表和B表時(shí),返回的結(jié)果集將包含200*300=60000行數(shù)據(jù)。因此,使用全連接方式時(shí)有可能生成行數(shù)非常大的結(jié)果集。在實(shí)際應(yīng)用中,使用全連接查詢(xún)時(shí)通??梢允褂肳HERE子句來(lái)設(shè)置一個(gè)條件表達(dá)式,以控制結(jié)果集的大小。3.3 選擇查詢(xún)數(shù)據(jù)源3.3.3 內(nèi)連接查詢(xún)內(nèi)連接是指使用關(guān)鍵詞INNER JOIN來(lái)連接要查詢(xún)的各個(gè)表,語(yǔ)法格式如下:FROM 表名 AS 別名 INNER JOIN 表名 AS 別名 ON 條件表達(dá)式其中表名用于指定要查詢(xún)的表,AS關(guān)鍵字和別名是可選

59、的。由于內(nèi)連接是默認(rèn)的連接方式,關(guān)鍵字INNER也可以省略不寫(xiě)。ON子句主要用于指定表之間的連接條件,其他與表連接無(wú)關(guān)的條件應(yīng)放在WHERE子句中。使用內(nèi)連接查詢(xún)時(shí),將根據(jù)ON子句指定的連接條件合并兩個(gè)表并返回滿(mǎn)足條件的行。3.3 選擇查詢(xún)數(shù)據(jù)源3.3.4 外連接查詢(xún)外連接是指在FROM子句中使用OUTER關(guān)鍵字來(lái)連接要查詢(xún)的兩個(gè)表,具體分為以下幾種形式。左外連接(LEFT OUTER JOIN):結(jié)果集中除了匹配行之外,還包括左表中存在但右表中不匹配的行,對(duì)于這樣的行,從右表中選擇的列設(shè)置為NULL。右外連接(RIGHT OUTER JOIN):結(jié)果集中除了匹配行之外,還包括右表中存在但左表

60、中不匹配的行,對(duì)于這樣的行,從左表中選擇的列設(shè)置為NULL。自然連接(NATURAL JOIN):其語(yǔ)義定義與設(shè)置ON條件的INNER JOIN相同,可以進(jìn)一步分為自然左連接(NATURAL LEFT OUTER JOIN)和自然右連接(NATURAL RIGHT OUTER JOIN)。外連接只能用于連接兩個(gè)表。當(dāng)使用各種形式的外連接時(shí),可以省略O(shè)UTER關(guān)鍵字。3.3.5 交叉連接查詢(xún)交叉連接是指在FROM子句中使用CROSS JOIN來(lái)連接各個(gè)表。如果不使用連接條件,則交叉連接就是對(duì)兩個(gè)表進(jìn)行笛卡兒乘積運(yùn)算,結(jié)果集是由第一個(gè)表的行與第二個(gè)表的行拼接后而形成,結(jié)果集的行數(shù)就等于兩個(gè)表的行數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論