MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(慕課版)(第2版) 課件全套 第1-9單元 MySQL概述 -MySQL管理_第1頁
MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(慕課版)(第2版) 課件全套 第1-9單元 MySQL概述 -MySQL管理_第2頁
MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(慕課版)(第2版) 課件全套 第1-9單元 MySQL概述 -MySQL管理_第3頁
MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(慕課版)(第2版) 課件全套 第1-9單元 MySQL概述 -MySQL管理_第4頁
MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(慕課版)(第2版) 課件全套 第1-9單元 MySQL概述 -MySQL管理_第5頁
已閱讀5頁,還剩525頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1單元MySQL概述MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(慕課版)(第2版)【目錄】1.1數(shù)據(jù)庫發(fā)展歷史1.1.1數(shù)據(jù)庫發(fā)展階段1.1.2MySQL數(shù)據(jù)庫發(fā)展歷史1.2關系數(shù)據(jù)庫1.2.1數(shù)據(jù)庫概述1.2.2關系模型1.2.3常用的關系數(shù)據(jù)庫1.2.4SQL1.3MySQL的工作原理1.4

MySQL數(shù)據(jù)庫存儲引擎1.4.1InnoDB引擎1.4.2MyISAM引擎1.4.3MEMORY引擎1.4.4CSV引擎1.4.5ARCHIVE引擎1.4.6BLACKHOLE引擎1.5

綜合實訓:安裝MySQL數(shù)據(jù)庫1.5.1在Windows環(huán)境下安裝MySQL1.5.2在Linux環(huán)境下安裝MySQL1.6MySQL客戶端管理工具1.7小結目錄【學習導讀】在當今“數(shù)字化時代”,一家初創(chuàng)公司正努力構建一個創(chuàng)新的電子商務平臺,他們希望通過這個平臺提供高效的在線交易和用戶管理系統(tǒng),因此需要一個可靠而強大的數(shù)據(jù)庫系統(tǒng)。MySQL作為一種廣泛使用的關系數(shù)據(jù)庫管理系統(tǒng),可以為該公司提供穩(wěn)定的數(shù)據(jù)存儲、高性能的查詢處理和強大的擴展性。本單元介紹MySQL的發(fā)展歷史、關系數(shù)據(jù)庫、MySQL的工作原理、安裝MySQL數(shù)據(jù)庫等。學習導讀【學習目標】知識目標1.了解數(shù)據(jù)庫各個發(fā)展階段。2.了解MySQL數(shù)據(jù)庫發(fā)展歷史。3.了解與數(shù)據(jù)庫相關的各個概念。4.了解SQL。5.了解MySQL的工作原理。6.了解MySQL數(shù)據(jù)庫的存儲引擎。7.了解MySQL客戶端管理工具。能力目標1.能夠獨立安裝MySQL數(shù)據(jù)庫。2.能夠使用命令提示符窗口連接數(shù)據(jù)庫。素質目標1.培養(yǎng)獨立自主的學習態(tài)度。2.培養(yǎng)規(guī)范、嚴謹?shù)墓ぷ鲬B(tài)度。學習目標思維導圖1.1數(shù)據(jù)庫發(fā)展歷史1.1.1數(shù)據(jù)庫發(fā)展階段1.層次數(shù)據(jù)庫層次數(shù)據(jù)庫(HierarchicalDatabase)是早期的數(shù)據(jù)庫類型,在20世紀60年代末和20世紀70年代初興起。在層次數(shù)據(jù)庫中,數(shù)據(jù)以樹形結構組織,每個節(jié)點可以有多個子節(jié)點,但只能有一個父節(jié)點。這種層次結構適合表示具有明確定義的父子關系的數(shù)據(jù),如組織結構或文件系統(tǒng)。主要代表:IBM公司的信息管理系統(tǒng)(InformationManagementSystem,IMS)。2.關系數(shù)據(jù)庫關系數(shù)據(jù)庫(RelationalDatabase)是主要的數(shù)據(jù)庫類型,興起于20世紀70年代。關系數(shù)據(jù)庫采用表格的形式組織數(shù)據(jù),其中數(shù)據(jù)以行和列的形式存儲。關系數(shù)據(jù)庫使用結構查詢語言(StructureQueryLanguage,SQL)進行數(shù)據(jù)的查詢和操作。它基于關系模型的理念,通過表之間的關系(主鍵和外鍵)來建立數(shù)據(jù)的連接。關系數(shù)據(jù)庫的設計和操作相對簡單,且可保證數(shù)據(jù)的一致性、可靠性和完整性。主要代表:Oracle、MySQL、MicrosoftSQLServer和PostgreSQL等。1.1數(shù)據(jù)庫發(fā)展歷史3.面向對象數(shù)據(jù)庫面向對象數(shù)據(jù)庫(Object-OrientedDatabase)是在關系數(shù)據(jù)庫之后出現(xiàn)的一種數(shù)據(jù)庫類型。面向對象數(shù)據(jù)庫將數(shù)據(jù)視為對象,具有屬性和方法,并通過繼承、封裝和多態(tài)等面向對象的概念來組織數(shù)據(jù)。面向對象數(shù)據(jù)庫提供了更靈活和直觀的數(shù)據(jù)建模方式,能夠更好地處理復雜的數(shù)據(jù)結構和關系。主要代表:Gemstone、db4o。4.NoSQL數(shù)據(jù)庫NoSQL數(shù)據(jù)庫代表“非關系”數(shù)據(jù)庫,強調不依賴傳統(tǒng)的關系模型。NoSQL數(shù)據(jù)庫適用于大規(guī)模和高并發(fā)的場景,它們具有良好的可擴展性、高性能和靈活性。NoSQL數(shù)據(jù)庫主要用于Web應用程序、大數(shù)據(jù)分析和實時數(shù)據(jù)處理等領域。主要代表:鍵值存儲型數(shù)據(jù)庫(如Redis、AmazonDynamoDB)、文檔型數(shù)據(jù)庫(如MongoDB)、列式存儲型數(shù)據(jù)庫(如ApacheCassandra)和圖形數(shù)據(jù)庫(如Neo4j)等。1.1數(shù)據(jù)庫發(fā)展歷史5.新SQL數(shù)據(jù)庫新SQL數(shù)據(jù)庫(NewSQLDatabase)是在NoSQL和傳統(tǒng)關系數(shù)據(jù)庫之間的一種折中解決方案。它們旨在提供具有可伸縮性和高性能的分布式數(shù)據(jù)庫系統(tǒng),同時保留關系數(shù)據(jù)庫的數(shù)據(jù)一致性和可靠性。主要代表:CockroachDB、VoltDB和TiDB。6.數(shù)據(jù)庫即服務DaaS通過云平臺提供數(shù)據(jù)庫管理和運維,使用戶無須關心底層基礎設施的細節(jié),只需關注數(shù)據(jù)的存儲和使用。DaaS提供了彈性擴展、高可用性和自動備份等功能,使用戶能夠快速部署和管理數(shù)據(jù)庫,降低了數(shù)據(jù)庫管理的復雜性和成本。主要代表:AmazonRDS、MicrosoftAzureSQLDatabase和GoogleCloudSQL。7.分布式數(shù)據(jù)庫分布式數(shù)據(jù)庫是將數(shù)據(jù)存儲在多個物理節(jié)點上的數(shù)據(jù)庫系統(tǒng),通過數(shù)據(jù)分片和數(shù)據(jù)復制等技術來實現(xiàn)數(shù)據(jù)的分布和冗余,以提高性能、可用性和容錯性。分布式數(shù)據(jù)庫能夠處理大規(guī)模的數(shù)據(jù)集和高并發(fā)訪問,適用于分布式系統(tǒng)和云計算環(huán)境。主要代表:ApacheHBase、ApacheCassandra和GoogleSpanner等。1.1數(shù)據(jù)庫發(fā)展歷史1.1.2MySQL數(shù)據(jù)庫發(fā)展歷史0102031985年,蒙蒂和幾個志同道合的朋友在瑞典成立了一家公司,也就是MySQLAB的前身1996年,MySQL1.0正式發(fā)布,提供的功能非常簡單,只支持表數(shù)據(jù)的INSERT(插入)、UPDATE(更新)、DELETE(刪除)和SELECT(查詢)操作。2000年,MySQL公布了源代碼,并采用了GNU通用公共許可協(xié)議042004年,MySQL4.1發(fā)布,新增了子查詢功能。052005年10月,MySQL5.0發(fā)布,該版本加入了存儲過程、觸發(fā)器、視圖等,MySQL逐漸向高性能數(shù)據(jù)庫方向發(fā)展。1.1數(shù)據(jù)庫發(fā)展歷史0708092015年,MySQL5.7GA重磅發(fā)布,進行了大量改進、優(yōu)化,并提供了眾多新特性。2016年9月,MySQL8.0首個開發(fā)版發(fā)布,增加了數(shù)據(jù)字典、賬號權限角色表、InnoDB引擎增強、JSON增強等。2018年4月,MySQL8.0首個正式版MySQL8.0.11GA發(fā)布。102023年4月,MySQL8.0.33GA發(fā)布,這是一個維護版本,修復了大量的Bug,并對部分內容進行了改進。062010年,MySQL5.5發(fā)布,新特性包括半同步的復制以及對SIGNAL/RESIGNAL異常處理功能的支持1.2關系數(shù)據(jù)庫1.2.1數(shù)據(jù)庫概述1.數(shù)據(jù)庫類型層次數(shù)據(jù)庫01通過一種有根節(jié)點的定向有序樹結構(類似于一個倒掛的樹)建立的數(shù)據(jù)庫,如IMS網(wǎng)絡數(shù)據(jù)庫按照網(wǎng)狀數(shù)據(jù)結構建立的數(shù)據(jù)庫,記錄中允許多層次記錄關系02關系數(shù)據(jù)庫03把世界看成由實體和聯(lián)系組成面向對象數(shù)據(jù)庫采用一種新的程序設計方法,將世界中的一切事物都視為對象,整個世界都由相互關聯(lián)的對象組織而成041.2關系數(shù)據(jù)庫2.數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)(Data)數(shù)據(jù)(Data)是指描述事物特征、屬性或關系的事實和信息的集合。數(shù)據(jù)可以是數(shù)字、文本、圖像、音頻或視頻等形式的表達。在計算機領域,數(shù)據(jù)通常以二進制形式存儲和處理。數(shù)據(jù)可以被組織成不同的結構,如單個值、記錄、表格或文件等,以便更有效地管理和使用。數(shù)據(jù)庫數(shù)據(jù)庫是一個組織和存儲數(shù)據(jù)的集合。它是一個被設計用來存儲和檢索數(shù)據(jù)的系統(tǒng)。數(shù)據(jù)庫通過結構化的方式存儲數(shù)據(jù),以便實現(xiàn)數(shù)據(jù)的組織、訪問和管理。數(shù)據(jù)庫可以包含多個表格(表),每個表包含多行(記錄)和多列(字段)。1.2關系數(shù)據(jù)庫3.數(shù)據(jù)庫管理系統(tǒng)010203數(shù)據(jù)定義(DataDefinition):支持創(chuàng)建表格、定義列、設置數(shù)據(jù)類型、建立關系等操作,用于表示和存儲數(shù)據(jù)的結構。數(shù)據(jù)操作(DataManipulation):提供了數(shù)據(jù)操作功能,使用戶可以對數(shù)據(jù)庫中的數(shù)據(jù)進行插入、更新、刪除和查詢等操作。數(shù)據(jù)查詢和檢索(DataQueryandRetrieval):能夠快速定位和檢索數(shù)據(jù)庫中的數(shù)據(jù),支持各種查詢操作,如簡單查詢、聚合函數(shù)、多表連接等。04數(shù)據(jù)完整性和約束(DataIntegrityandConstraints):可以通過主鍵、唯一約束、外鍵和檢查約束等機制來保證數(shù)據(jù)的完整性,防止不符合約束條件的數(shù)據(jù)被插入或更新到數(shù)據(jù)庫中。050607并發(fā)控制和事務管理(ConcurrencyControlandTransactionManagement):通過鎖定機制、并發(fā)調度和事務管理等技術來保證數(shù)據(jù)的一致性和隔離性。數(shù)據(jù)備份和恢復(DataBackupandRecovery):支持定期備份數(shù)據(jù),以及在需要時進行數(shù)據(jù)恢復和回滾操作。數(shù)據(jù)安全和訪問控制(DataSecurityandAccessControl):支持用戶身份驗證、權限管理、加密和審計等安全功能。1.2關系數(shù)據(jù)庫4.數(shù)據(jù)庫系統(tǒng)020103數(shù)據(jù)的集合,以一種結構化的方式存儲數(shù)據(jù)。數(shù)據(jù)庫的結構和關系是通過數(shù)據(jù)庫模式(Schema)定義的數(shù)據(jù)庫用于管理數(shù)據(jù)庫的軟件系統(tǒng)。DBMS負責處理數(shù)據(jù)的存儲、檢索、備份和恢復,以及實現(xiàn)并發(fā)訪問、數(shù)據(jù)安全和權限控制等。常見的DBMS包括Oracle、MySQL、MicrosoftSQLServer和PostgreSQL等。DBMS使用數(shù)據(jù)庫和DBMS進行數(shù)據(jù)管理和處理的軟件程序。它們可以是定制的應用程序,也可以是商業(yè)化的數(shù)據(jù)庫應用軟件。數(shù)據(jù)庫應用程序(DatabaseApplication)1.2關系數(shù)據(jù)庫0102030405數(shù)據(jù)共享數(shù)據(jù)獨立性數(shù)據(jù)一致性和完整性數(shù)據(jù)安全性高效性和性能優(yōu)化數(shù)據(jù)庫系統(tǒng)的特點和優(yōu)勢1.2關系數(shù)據(jù)庫5.關系數(shù)據(jù)庫管理系統(tǒng)關系數(shù)據(jù)庫管理系統(tǒng)(RelationalDatabaseManagementSystem,RDBMS)用于管理關系數(shù)據(jù)庫。關系數(shù)據(jù)庫是指通過關系模型來組織數(shù)據(jù)的數(shù)據(jù)庫。結構化數(shù)據(jù)存儲數(shù)據(jù)的一致性和完整性數(shù)據(jù)的關系和連接SQL支持數(shù)據(jù)備份和恢復數(shù)據(jù)安全和訪問控制并發(fā)控制和事務管理ACID支持1.2關系數(shù)據(jù)庫1.2.2關系模型關系模型是用二維表的形式表示實體以及實體之間聯(lián)系的數(shù)據(jù)模型。數(shù)據(jù)都是以表格的形式存在的,每行對應一個實體的記錄,每列對應實體的某種屬性,若干行和列構成了整個表數(shù)據(jù)。所謂實體就是現(xiàn)實世界中客觀存在的,可以是有形的、無形的、具體的或者抽象的事物。圖1.1社交網(wǎng)站和用戶之間的關系社交網(wǎng)站和用戶——代表實體,用矩形表示;社交網(wǎng)站擁有屬性——企業(yè)性質、網(wǎng)站名、上市,用橢圓形表示;用戶擁有屬性——姓名、手機號、生日,也用橢圓形表示;實體社交網(wǎng)站和實體用戶之間的聯(lián)系,用菱形表示。實體關系模型中,聯(lián)系(也稱關系)有3種類型:一對一關系(1∶1),例如一個用戶有一個會員編號,一個會員編號能確定唯一用戶,它們之間是一一對應的;一對多關系(1∶n),例如一個用戶可以注冊多個賬號,而一個賬號只能被一個用戶使用;多對多關系(n∶n),例如一個社交網(wǎng)站可以有多個用戶,而一個用戶同樣可以使用多個社交網(wǎng)站。1.2關系數(shù)據(jù)庫1.2.3常用的關系數(shù)據(jù)庫Oracle數(shù)據(jù)庫市場上最成熟、最全面的數(shù)據(jù)庫解決方案之一支持大規(guī)模企業(yè)級應用,具有高可伸縮性、可靠性和安全性提供廣泛的功能,包括復雜的數(shù)據(jù)查詢、事務處理、并發(fā)控制、數(shù)據(jù)備份和恢復等。MySQL數(shù)據(jù)庫被廣泛用于中小型企業(yè)和Web應用開發(fā)具有簡單易用、高性能和高可靠性的特點支持標準的SQL,包括數(shù)據(jù)存儲和檢索、事務處理、數(shù)據(jù)備份和恢復等SQLServer數(shù)據(jù)庫專為Windows平臺設計企業(yè)級數(shù)據(jù)庫解決方案的一部分,具有強大的功能和廣泛的應用領域包括高效的數(shù)據(jù)存儲和檢索、復雜的查詢和分析、事務處理、并發(fā)控制、數(shù)據(jù)備份和恢復等1.2關系數(shù)據(jù)庫1.2.4SQL一種用于數(shù)據(jù)庫查詢和程序設計的語言,可用于操作數(shù)據(jù)庫的查詢、存取更新數(shù)據(jù)以及管理數(shù)據(jù)庫,是通用的數(shù)據(jù)庫查詢語言,具有極大的靈活性和很多強大的功能。操作簡單數(shù)據(jù)庫管理能力跨平臺和數(shù)據(jù)庫無關性數(shù)據(jù)一致性和完整性事務處理能力擴展性和標準化SQL特點1.3MySQL的工作原理為了理解MySQL的工作原理,我們先看一張經(jīng)典的架構圖,如圖1.2所示。圖1.2MySQL的內部架構編程語言交互接口(Connector):不同語言與SQL的交互接口系統(tǒng)管理和控制工具集合(ManagementService&Utility):提供管理配置服務、備份還原、安全復制等功能連接池(ConnectionPool):接收客戶端的請求,緩存請求,檢查內存可利用情況SQL接口(SQLInterface):接收用戶的SQL語句,并返回結果解析器(Parser):解析驗證SQL語法,將SQL語句分解成相應的數(shù)據(jù),以備后面處理查詢優(yōu)化器(Optimizer):對SQL語句進行優(yōu)化處理,優(yōu)化執(zhí)行路徑,生成執(zhí)行樹,最終數(shù)據(jù)庫會選擇最優(yōu)的方案執(zhí)行并返回結果。查詢緩存(Cache&Buffer):緩存查詢結果。存儲引擎(PluggableStorageEngine):MySQL中具體的與文件“打交道”的子系統(tǒng),它是以插件形式存在的,意味著可以自定義存儲引擎,這是MySQL很特別的地方文件系統(tǒng)(FileSystem):存放數(shù)據(jù)庫、表、數(shù)據(jù),以及相關配置的地方1.4MySQL數(shù)據(jù)庫存儲引擎1.4.1InnoDB引擎010203數(shù)據(jù)操縱語言(DataManipulationLanguage,DML)操作遵循事務的4個特性——原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability),并通過CRASH-RECOVERY等保障數(shù)據(jù)的安全具有行級鎖和Oracle風格的讀一致性,通過一種更改緩存機制對新增、更新和刪除進行了優(yōu)化對表進行基于主鍵的優(yōu)化查詢,每張表都有一個基于主鍵的聚簇索引,以此減少磁盤輸入輸出(Input/Output,I/O),進而提高搜索效率和性能04支持外鍵約束,檢查外鍵、插入、更新和刪除,以確保數(shù)據(jù)的完整性050607InnoDB引擎提供了專門的緩存池,在內存中緩存了表和索引的數(shù)據(jù),常用的數(shù)據(jù)可以直接從內存讀取,比從磁盤獲取數(shù)據(jù)速度快可以壓縮表和相關索引、創(chuàng)建和刪除索引以達到提高性能的目的快速壓縮表空間,并能釋放磁盤空間,保證系統(tǒng)能夠重用,而不僅是騰出空間給InnoDB引擎復用08創(chuàng)建表時可以通過以下語句顯式指定存儲引擎CREATETABLETABLE_NAME(IINT)ENGINE=INNODB;1.4MySQL數(shù)據(jù)庫存儲引擎1.4.2MyISAM引擎MyISAM引擎不支持事務、外鍵,不過訪問速度非??欤淼拇鎯Ψ譃橐韵?個文件。FRM文件:存儲表定義MYD(MYData)文件:存儲數(shù)據(jù)MYI(MYIndex)文件:存儲索引1.4MySQL數(shù)據(jù)庫存儲引擎010203所有數(shù)值類型鍵值都是以高字節(jié)存儲的,以便更好地壓縮索引。每張MyISAM表最多支持(232)2≈1.844E+19行。每張MyISAM表支持的最大索引數(shù)是64,每個索引最多16列。04當表字段是自增(AUTO_INCREMENT)時,索引樹節(jié)點只會包含一個鍵,這樣可以提高索引的空間利用率。050607在INSERT、UPDATE時,MyISAM引擎內部處理會自動更新自增字段,這使自增處理更快。當進行混合操作(刪除、更新、插入同時進行)時,MyISAM引擎通過自動合并和擴展刪除塊減少行碎片。MyISAM引擎支持并發(fā)插入數(shù)據(jù):如果一個表中的數(shù)據(jù)文件中沒有空閑塊,則可以在插入數(shù)據(jù)的同時通過其他線程讀取表數(shù)據(jù)。08可以通過將數(shù)據(jù)文件和索引文件放在不同物理設備的不同目錄下來更快地創(chuàng)建表。CREATETABLETABLE_NAME(IINT)ENGINE=MYISAM;09BLOB和TEXT可以被索引,索引列中允許NULL,不過需要占0~1個字節(jié)。10創(chuàng)建表時可以通過以下語句顯式指定存儲引擎。1.4MySQL數(shù)據(jù)庫存儲引擎1.4.3MEMORY引擎MEMORY引擎又稱為HEAP引擎,用來創(chuàng)建特殊用途的表,且內容存儲在內存中。將數(shù)據(jù)存儲在內存中,能夠實現(xiàn)快速訪問和低延遲。創(chuàng)建表時可以通過以下語句顯式指定存儲引擎。CREATETABLETABLE_NAME(IINT)ENGINE=MEMORY;1.4.4CSV引擎當用戶創(chuàng)建一個CSV引擎的表時,服務器會在數(shù)據(jù)庫目錄中創(chuàng)建一個“表名.frm”格式文件,還會創(chuàng)建一個“表名.csv”數(shù)據(jù)文件。缺點:CSV引擎不支持索引,也不支持分區(qū),并且所有列必須指明為NOTNULL。創(chuàng)建表時可以通過以下語句顯式指定存儲引擎。CREATETABLETABLE_NAME(IINT)ENGINE=CSV;1.4MySQL數(shù)據(jù)庫存儲引擎1.4.5ARCHIVE引擎ARCHIVE引擎用于數(shù)據(jù)歸檔,它的壓縮比例非常高,適合存儲歷史數(shù)據(jù)(前提是不做查詢操作),所占的存儲空間不到InnoDB引擎的1/10。創(chuàng)建表時可以通過以下語句顯式指定存儲引擎。CREATETABLETABLE_NAME(IINT)ENGINE=ARCHIVE;1.4.6BLACKHOLE引擎BLACKHOLE引擎是很特別的一種引擎,它的表不存儲任何數(shù)據(jù),就像“黑洞”一樣。它主要用于充當偽服務器、日志服務器、增量備份服務器等。創(chuàng)建表時可以通過以下語句顯式指定存儲引擎。CREATETABLETABLE_NAME(IINT)ENGINE=BLACKHOLE;1.4MySQL數(shù)據(jù)庫存儲引擎1.4.7存儲引擎特點對比表1.1MySQL8.0中各存儲引擎的特點特點InnoDBMyISAMMEMORYARCHIVE存儲限制64TB沒有有沒有事務安全支持

鎖機制行鎖表鎖表鎖行鎖B樹索引支持支持支持

哈希索引支持

支持

全文索引支持支持

集群索引支持

數(shù)據(jù)緩存支持

支持

數(shù)據(jù)可壓縮

支持

支持空間使用高低

非常低內存使用高低中等低批量插入速度低高高非常高支持外鍵支持

復制支持支持支持支持支持查詢緩存支持支持支持支持備份恢復支持支持支持支持1.5綜合實訓:安裝MySQL數(shù)據(jù)庫選擇DOWNLOADS→MySQLCommunity(GPL)Downloads→MySQLInstallerforWindows,MySQL下載頁面如圖1.3所示。圖1.3MySQL下載頁面1.5綜合實訓:安裝MySQL數(shù)據(jù)庫1.5.1在Windows環(huán)境下安裝MySQL圖1.4服務器模式圖1.5檢查安裝要求1.5綜合實訓:安裝MySQL數(shù)據(jù)庫圖1.6安裝動態(tài)鏈接庫圖1.7“TypeandNetworking”界面圖1.8設置密碼1.5綜合實訓:安裝MySQL數(shù)據(jù)庫圖1.9選擇“環(huán)境變量”圖1.10添加MySQL路徑到系統(tǒng)變量中1.5綜合實訓:安裝MySQL數(shù)據(jù)庫圖1.11連接數(shù)據(jù)庫更改root用戶的登錄密碼,以備日后使用。更改密碼的代碼如下。ALTERUSER'root'@'localhost'IDENTIFIEDBY'123456';flushprivileges;MySQL8.0的Data目錄和my.ini文件有時并不放在MySQL的安裝目錄下,而是在

C:\ProgramData\MySQL\MySQLServer8.0目錄下。一般情況下,C盤下的ProgramData目錄是隱藏的。1.5綜合實訓:安裝MySQL數(shù)據(jù)庫1.5.2在Linux環(huán)境下安裝MySQLstep01從官網(wǎng)下載mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz安裝文件(也可以根據(jù)自己計算機的硬件情況下載合適的安裝文件),如圖1.12所示。圖1.12下載安裝文件step02進入安裝文件所在目錄(cd..),解壓縮安裝文件,命令如下。tar–zxvfmysql-8.0.33-linux-glibc2.28-x86_64.tar.gzstep03復制解壓縮后的MySQL目錄文件到Linux系統(tǒng)的本地軟件目錄(/usr/local)中,命令如下。cpmysql-8.0.33-linux-glibc2.28-x86_64.tar.gz/usr/local/mysql-r1.5綜合實訓:安裝MySQL數(shù)據(jù)庫step04添加系統(tǒng)MySQL組(groupadd組名),命令如下。[root@localhost~]$cd/usr/local[root@localhostlocal]$lsbingameshbase-1.2.0jdk1.8.0_73lib64mysqlshareetcHadoop-2.6.4includeliblibexecsbinsrc[root@localhostlocal]$sudogroupaddmysql[sudo]passwordforroot:[root@localhostlocal]$step05為MySQL組添加MySQL用戶(useradd-r-gmysql用戶名),命令如下。[root@localhost~]$cd/usr/local[root@localhostlocal]$lsbingameshbase-1.2.0jdk1.8.0_73lib64mysqlshareetcHadoop-2.6.4includeliblibexecsbinsrc[root@localhostlocal]$sudogroupaddmysql[sudo]passwordforroot:[root@localhostlocal]$sudouseradd–r–gmysqlmysql[root@localhostlocal]$1.5綜合實訓:安裝MySQL數(shù)據(jù)庫step06進入MySQL安裝目錄(cd/user/local/mysql),修改當前目錄擁有者為MySQL用戶(chown-Rmysql:mysql./),命令如下。[root@localhostmysql]$sudochown–Rmysql:mysql./step07通過腳本初始化數(shù)據(jù)庫(./scripts/mysql_install_db--user=mysql),命令如下。[root@localhostmysql]$sudo./scripts/mysql_install_db--user=mysqlstep08修改當前目錄下data目錄的擁有者為mysql(chown-Rmysql:mysqldata),用于存放數(shù)據(jù)庫數(shù)據(jù),命令如下。[root@localhostmysql]$sudochown–Rmysql:mysqldatastep09啟動服務(servicemysqlstart),MySQL就安裝成功了,命令如下。[root@localhostmysql]$sudoservicemysqlstart1.6MySQL客戶端管理工具1.MySQLWorkbenchMySQL官方提供的一個圖形化數(shù)據(jù)庫管理工具,它可以讓開發(fā)者和數(shù)據(jù)庫管理員更輕松地管理MySQL數(shù)據(jù)庫。MySQLWorkbench提供了豐富的功能,包括數(shù)據(jù)庫設計、SQL開發(fā)、數(shù)據(jù)庫管理、數(shù)據(jù)備份和恢復等。圖1.13MySQLWorkbench的操作界面優(yōu)點允許查看服務器狀態(tài)、運行狀況,以及服務器日志。MySQLWorkbench是官方出品,因此將與MySQL的所有最新功能兼容。跨平臺支持,適用于Windows、macOS、Linux等系統(tǒng)。MySQLWorkbench提供了廣泛的功能來管理數(shù)據(jù)庫。缺點對初學者來說,MySQLWorkbench可能有一定的學習難度。MySQLWorkbench是一個相對龐大的應用程序,它需要一定的系統(tǒng)資源來運行。兼容性限制:MySQLWorkbench是為MySQL數(shù)據(jù)庫而設計的,它與其他數(shù)據(jù)庫管理系統(tǒng)(如Oracle、SQLServer等)的兼容性可能較差。1.6MySQL客戶端管理工具2.phpMyAdmin一個免費的開源Web應用程序,用于管理MySQL數(shù)據(jù)庫。它提供了一個基于Web的界面,可以讓用戶通過瀏覽器來執(zhí)行各種數(shù)據(jù)庫管理任務,如創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、插入數(shù)據(jù)、運行SQL查詢和管理用戶權限等。圖1.14phpMyAdmin的操作界面優(yōu)點提供一個易于導航的菜單和圖形化的操作界面,使數(shù)據(jù)庫管理任務變得簡單。phpMyAdmin是一個開源項目,可以免費使用和修改??缙脚_支持,適用于Windows、macOS、Linux等系統(tǒng)?;诰W(wǎng)頁設計,大多數(shù)計算機都可以輕松訪問。缺點由于phpMyAdmin是通過Web界面訪問數(shù)據(jù)庫,會面臨安全風險。對于大型數(shù)據(jù)庫和復雜的查詢,phpMyAdmin可能會面臨性能限制。對初學者來說,phpMyAdmin可能需要一些時間來熟悉和掌握。依賴于Web服務器,phpMyAdmin需要安裝和配置Web服務器,安裝難度高。1.6MySQL客戶端管理工具3.NavicatforMySQL一個功能全面的MySQL數(shù)據(jù)庫管理工具,適合數(shù)據(jù)庫設計師、開發(fā)人員和管理員使用。它提供了直觀的圖形化界面和強大的功能,使用戶能夠方便地進行數(shù)據(jù)庫設計、開發(fā)、管理和維護。圖1.15NavicatforMySQL的操作界面優(yōu)點允許將連接設置、模型、查詢和虛擬組同步到Navicatcloud,以便與同事共享??缙脚_支持,適用于Windows、macOS、Linux等系統(tǒng)。支持多種數(shù)據(jù)源和多種導出格式,方便進行數(shù)據(jù)的遷移和交換。缺點NavicatforMySQL是商業(yè)軟件,它的價格較高。NavicatforMySQL是一個相對龐大的軟件,需要較多的系統(tǒng)資源來運行。1.6MySQL客戶端管理工具4.SQLyog一個功能強大的MySQL數(shù)據(jù)庫管理和開發(fā)工具。它提供了直觀的用戶界面和豐富的功能,使用戶能夠方便地進行數(shù)據(jù)庫管理、SQL開發(fā)和數(shù)據(jù)同步等。SQLyog提供3種付費版本,另外還有免費試用版,允許用戶在購買許可證之前進行測試。圖1.16SQLyog的操作界面優(yōu)點可以自定義主題用戶界面??缙脚_支持,適用于Windows、macOS、Linux等系統(tǒng)。進行查詢操作。支持多種數(shù)據(jù)源和多種導出格式,方便進行數(shù)據(jù)的遷移和交換。缺點SQLyog是商業(yè)軟件,需要付費購買許可證才能使用其完整功能。較大的安裝文件和系統(tǒng)資源消耗。相比于一些開源的數(shù)據(jù)庫管理工具,SQLyog的可定制性可能較弱。2.9小結本單元包含以下內容。主要講解了MySQL數(shù)據(jù)類型,讀者主要要掌握數(shù)值類型、字符串類型、日期和時間類型、復合類型、JSON數(shù)據(jù)類型、空間數(shù)據(jù)類型;要掌握各種數(shù)據(jù)類型里面有哪些存儲方式,包括字節(jié)大小、范圍,以及使用的場景;要學會如何選取數(shù)據(jù)類型,數(shù)據(jù)類型對數(shù)據(jù)庫性能的影響很大,會影響存儲空間的開銷、數(shù)據(jù)的查詢性能等;要掌握各種類型存儲的優(yōu)、缺點以及適用的場景。THANKS第2單元MySQL數(shù)據(jù)類型MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(慕課版)(第2版)【目錄】2.1

數(shù)值類型2.2

字符串類型2.3

日期和時間類型2.4

復合類型2.5

JSON數(shù)據(jù)類型2.6

空間數(shù)據(jù)類型2.7

如何選取數(shù)據(jù)類型2.8

綜合實訓:設計電商平臺商品表2.9

小結目錄【學習導讀】在MySQL中,選擇適當?shù)臄?shù)據(jù)類型是設計數(shù)據(jù)庫和表的重要環(huán)節(jié)。根據(jù)需求,適當?shù)臄?shù)據(jù)類型可以提供最佳的數(shù)據(jù)存儲和查詢性能。在電子商務網(wǎng)站的產(chǎn)品表中,使用整數(shù)類型(int)存儲產(chǎn)品的價格和庫存數(shù)量,以便進行快速的數(shù)值比較和計算。對于產(chǎn)品名稱和描述等文本信息,使用varchar類型存儲,以便適應不同長度的產(chǎn)品信息。對于產(chǎn)品的發(fā)布日期,使用date類型存儲,并使用相應的日期函數(shù)進行日期范圍的查詢。此外,對于產(chǎn)品的圖片,可以使用blob類型存儲二進制圖像數(shù)據(jù),以保持原始圖像質量。通過選擇合適的數(shù)據(jù)類型,可以有效地存儲和檢索產(chǎn)品信息,并提供良好的用戶體驗和性能。學習導讀【學習目標】知識目標1.掌握MySQL數(shù)值類型。2.掌握MySQL字符串類型。3.掌握MySQL日期和時間類型。4.了解MySQL復合類型。5.了解MySQLJSON數(shù)據(jù)類型。6.了解MySQL空間數(shù)據(jù)類型。能力目標1.能夠針對不同場景選擇合適的數(shù)據(jù)類型。2.能夠優(yōu)化字段的數(shù)據(jù)類型,能夠節(jié)省存儲空間及加快訪問速度。素質目標1.培養(yǎng)舉一反三的能力。2.培養(yǎng)分析問題、解決問題的能力。學習目標思維導圖2.1數(shù)值類型MySQL支持所有標準SQL中的數(shù)值類型,包括位值類型(bit)、整數(shù)類型(tinyint、smallint、mediumint、int、bigint)、浮點數(shù)類型(float、double、decimal)。位值類型(bit)bit(M)為位值類型。M表示值的位數(shù),取值范圍為1到64,如果省略默認為1。整數(shù)類型(tinyint、smallint、mediumint、int、bigint)整數(shù)類型適合存儲整數(shù)值;整數(shù)類型里,MySQL支持tinyint、smallint、mediumint、int、bigint這5種類型。浮點數(shù)類型(float、double、decimal)MySQL支持float、double、decimal這3種類型。float是單精度浮點數(shù)值、double是雙精度浮點數(shù)值、decimal是定點數(shù)值。2.1數(shù)值類型表2.1數(shù)值類型數(shù)值類型長度/字節(jié)有符號存儲范圍無符號存儲范圍含義bit(M)(M+7)/8——位值類型tinyint1(-128,127)(0,255)小整數(shù)值smallint2(-32768,32767)(0,65535)大整數(shù)值mediumint3(-8388608,8388607)(0,16777215)大整數(shù)值int或integer4(-2147483648,2147483647)(0,4294967295)大整數(shù)值bigint8(-9233372036854775808,

9223372036854775807)(0,18446744073709551615)極大整數(shù)值float(m,d)4-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38m是數(shù)字總位數(shù),d是小數(shù)點后面的位數(shù),如果m和d被省略,

根據(jù)硬件允許的限制來保存值單精度浮點數(shù)值double8-1.7976931348623157E+308到-2.22507385854072014E-308、0和2.22507385854072014E-308到1.7976931348623157E+308雙精度浮點數(shù)值decimal

(m,d)m指定小數(shù)點左邊和右邊可以存儲的十進制數(shù)字的最大個數(shù),最大為38;d指定小數(shù)點右邊可以存儲的十進制數(shù)字的最大個數(shù),小數(shù)位數(shù)必須是0~m的值,默認為0定點數(shù)值2.2字符串類型MySQL提供了豐富的字符串類型,用于存儲和處理文本和二進制數(shù)據(jù)。這些字符串類型分為定長字符串類型、變長字符串類型、大文本類型、二進制字符串類型,每種類型都有不同的特性和用途。變長字符串類型定長字符串類型大文本類型二進制字符串類型適合存儲長度固定的數(shù)據(jù)。它使用固定的存儲空間,但可能造成空間浪費。用于存儲二進制數(shù)據(jù),如圖像或文件。它可用于保存任意類型的二進制數(shù)據(jù)。存儲長度可變的數(shù)據(jù)的理想選擇。它根據(jù)實際存儲的數(shù)據(jù)長度分配空間,能夠節(jié)省存儲空間。用于存儲較大的文本內容。它提供了更高的存儲容量,并具有適應多種語言和字符集的能力。2.2字符串類型表2.2字符串類型分類數(shù)值類型長度/字節(jié)含義定長字符串類型char0~255固定長度,最多255個字符變長字符串類型varchar0~65535可變長度,最多65535個字符大文本類型tinytext0~255短文本數(shù)據(jù)大文本類型text0~65535長文本數(shù)據(jù)大文本類型mediumtext0~16777215中等長度文本數(shù)據(jù)大文本類型longtext0~4294967295極大文本數(shù)據(jù)二進制字符串類型binary(m)—允許長度為0~m個字節(jié)的定長字節(jié)符串二進制字符串類型varbinary(m)—允許長度為0~m個字節(jié)的定長字節(jié)符串,值的長度+1個字節(jié)二進制字符串類型tinyblob0~255不超過255個字符的二進制字符串二進制字符串類型blob0~65535二進制形式的長文本數(shù)據(jù)二進制字符串類型mediumblob0~16777215二進制形式的中等長度文本數(shù)據(jù)二進制字符串類型longblob0~4294967295二進制形式的極大文本數(shù)據(jù)2.3日期和時間類型MySQL數(shù)據(jù)庫提供了5種不同的日期和時間類型,即date、time、year、datetime、timestamp,用來存儲與日期和時間相關的數(shù)據(jù)。每個日期和時間類型有一個有效值范圍和一個“零”值,當指定不合法的MySQL不能表示的值時使用“零”值,日期和時間類型如表2.3所示。表2.3日期和時間類型日期/時間類型長度/字節(jié)范圍格式含義date41000-01-01/9999-12-31yyyy-mm-dd日期值time3'-838:59:59'/'838:59:59'hh:mm:ss時間值year11901/2155yyyy年份值datetime81000-01-0100:00:00/9999-12-3123:59:59yyyy-mm-ddhh:mm:ss混合日期和時間值timestamp41970-01-0100:00:00/2037年

某時yyyymmddhhmmss混合日期和時間值,時間戳,特別地,timestamp也可以自動更新為當前的日期和時間2.4復合類型適合存儲表單界面中的“單選值”設定enum類型的時候,需要給定“固定的幾個選項”存儲的時候就只存儲其中的一個值設定enum類型的格式為enum("選項1","選項2","選項3",...)。enum單選字符串數(shù)據(jù)類型set多選字符串數(shù)據(jù)類型適合存儲表單界面中的“多選值”設定set類型的時候,同樣需要給定“固定的幾個選項”存儲的時候可以存儲其中的若干個值設定set類型的格式為set("選項1","選項2","選項3",...)2.5JSON數(shù)據(jù)類型MySQL8.0引入了JSON數(shù)據(jù)類型,它是一種特殊的數(shù)據(jù)類型,用于存儲和處理JSON(JavaScriptObjectNotation)格式的數(shù)據(jù)。010203JSON數(shù)據(jù)類型:以緊湊的二進制格式存儲JSON數(shù)據(jù),比將JSON數(shù)據(jù)存儲為字符串更有效存儲格式:以緊湊的二進制格式存儲,優(yōu)化了空間占用和查詢性能。以原生的JSON格式存儲,包括對象、數(shù)組、字符串、數(shù)字、布爾值和NULL等。JSON函數(shù)和操作符:一套內置的JSON函數(shù)和操作符,用于處理和查詢JSON數(shù)據(jù)。包括JSON_EXTRACT、JSON_ARRAY、JSON_SEARCH、JSON_OBJECT等,可以進行JSON數(shù)據(jù)的解析、提取、修改和查詢。04索引和搜索:支持在JSON列上創(chuàng)建函數(shù)索引,以提高JSON數(shù)據(jù)的檢索性能。050607驗證和嚴格模式:會驗證存儲在JSON列中的數(shù)據(jù)是否符合JSON格式。在嚴格模式下,存儲的JSON數(shù)據(jù)必須是有效的JSON格式,否則會拋出錯誤。查詢和過濾:使用JSON函數(shù)和操作符,可以進行復雜的查詢和過濾操作JSON聚合:提供了諸如JSON_ARRAYAGG和JSON_OBJECTAGG等函數(shù),允許用戶聚合JSON數(shù)據(jù)并將其作為單個JSON文檔返回2.6空間數(shù)據(jù)類型最通用的空間數(shù)據(jù)類型,用于表示任何類型的幾何對象。它可以存儲點、線、多邊形等幾何形狀GEOMETRY用于存儲二維空間中的點,表示地理位置信息。它由經(jīng)度和緯度坐標組成POINT用于存儲二維空間中的線段,表示兩個或多個點之間的連續(xù)直線LINESTRING用于存儲二維空間中的多邊形,表示由多個邊界點組成的封閉區(qū)域POLYGON最復雜的空間數(shù)據(jù)類型,用于存儲任意類型的幾何對象組合GEOMETRYCOLLECTION用于存儲多個多邊形,表示多邊形的集合MULTIPOLYGON用于存儲多條線段,表示線段的集合MULTILINESTRING用于存儲多個二維點,表示點的集合MULTIPOINT2.7如何選取數(shù)據(jù)類型大小合適就是好的盡量避免使用NULL選擇一種能夠有效執(zhí)行這些操作并且?guī)в凶畲笙薅褥`活性的類型簡單存放就好數(shù)據(jù)操作和應用處理的要求2.7如何選取數(shù)據(jù)類型1.char和varchar如果列中要存儲的數(shù)據(jù)的長度差不多是一致的,則應該考慮使用char,否則應該考慮使用varchar;如果列中最大數(shù)據(jù)的長度小于50個字節(jié),則一般也考慮使用char(當然,如果這個列很少用,則基于節(jié)省空間和減少I/O的考慮,還是可以使用varchar);一般不宜定義大于50個字節(jié)的char類型列。2.text和blob在保存大文本時,通常選擇text或者blob。blob可以保存二進制數(shù)據(jù)(如照片)。text和blob又分別包括text、mediumtext、longtext和blob、mediumblob、longblob,它們之間的區(qū)別是存儲文本長度不同和存儲字節(jié)不同。在不必要的時候應避免檢索較大的blob或text值,把blob或text列分離到單獨的表中。2.7如何選取數(shù)據(jù)類型3.浮點數(shù)和定點數(shù)decimal用于存儲精確數(shù)據(jù),而float只能用于存儲非精確的數(shù)據(jù),故精確數(shù)據(jù)最好使用decimal類型。由于float的存儲空間的開銷一般比decimal?。ň_到7位小數(shù)只需要4個字節(jié),而精確到15位小數(shù)只需要8個字節(jié)),故非精確數(shù)據(jù)建議使用float。4.日期類型的選擇根據(jù)實際需要選擇能夠滿足應用的最小存儲日期類型。如果記錄年、月、日、時、分、秒,并且記錄年份比較久遠,則最好使用datetime,不要使用timestamp;如果記錄的日期需要讓不同時區(qū)的用戶使用,則最好使用timestamp,因為日期和時間類型中只有它能夠和實際時區(qū)相對應。2.8綜合實訓:設計電商平臺商品表要設計一個在線商城系統(tǒng),其中需要存儲商品的信息,包括商品名稱、描述、價格、庫存數(shù)量和發(fā)布日期。根據(jù)這個場景,可以選擇以下數(shù)據(jù)類型來實現(xiàn)。010203商品名稱:varchar(100)。使用varchar類型來存儲商品的名稱,長度為100,以適應不同長度的商品名稱。商品描述:text。使用text類型來存儲商品的詳細描述,可以存儲較長的文本內容。價格:decimal(10,2)。使用decimal類型來存儲商品的價格,其中10表示總共可存儲10位數(shù)字,2表示小數(shù)點后保留2位,以滿足價格的精度要求。04庫存數(shù)量:int。使用int類型來存儲商品的庫存數(shù)量,適用于存儲整數(shù)值。05發(fā)布日期:datetime。使用datetime類型來存儲商品的發(fā)布日期和時間,以方便進行與日期和時間相關的操作。2.8綜合實訓:設計電商平臺商品表根據(jù)以上數(shù)據(jù)類型的選擇,可以創(chuàng)建一個名為“products”的表來存儲商品信息,代碼如下CREATETABLEproducts(product_idINTAUTO_INCREMENTPRIMARYKEY,product_nameVARCHAR(100),descriptionTEXT,priceDECIMAL(10,2),stock_quantityINT,publish_dateDATETIME);向“products”表插入數(shù)據(jù),代碼如下。INSERTINTOproducts(product_name,description,price,stock_quantity,publish_date)VALUES('iPhone12','ThelatestiPhonewithpowerfulfeatures.',999.99,100,'2022-01-1510:30:00'),('SamsungGalaxyS21','High-performanceAndroidsmartphone.',899.99,80,'2022-02-0214:45:00'),('SonyPlayStation5','Next-generationgamingconsole.',499.99,50,'2022-03-2009:15:00');2.9小結本單元包含以下內容。主要講解了MySQL數(shù)據(jù)類型,讀者主要要掌握數(shù)值類型、字符串類型、日期和時間類型、復合類型、JSON數(shù)據(jù)類型、空間數(shù)據(jù)類型;要掌握各種數(shù)據(jù)類型里面有哪些存儲方式,包括字節(jié)大小、范圍,以及使用的場景;要學會如何選取數(shù)據(jù)類型,數(shù)據(jù)類型對數(shù)據(jù)庫性能的影響很大,會影響存儲空間的開銷、數(shù)據(jù)的查詢性能等;要掌握各種類型存儲的優(yōu)、缺點以及適用的場景。THANKS第3單元MySQL常用操作MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(慕課版)(第2版)目錄【目錄】3.1數(shù)據(jù)庫用戶管理3.1.1連接MySQL3.1.2新增用戶3.1.3修改用戶密碼3.2數(shù)據(jù)庫操作3.2.1查看數(shù)據(jù)庫3.2.2創(chuàng)建數(shù)據(jù)庫3.2.3使用數(shù)據(jù)庫3.2.4刪除數(shù)據(jù)庫3.3表操作3.3.1創(chuàng)建表3.3.2查看表結構3.3.3修改表結構3.3.4復制表3.3.5使用臨時表和內存表3.4數(shù)據(jù)操作3.4.1插入和查詢3.4.2修改記錄3.4.3刪除記錄3.4.4對查詢結果排序3.4.5對查詢結果分組3.4.6設置分組條件3.4.7限制查詢數(shù)量目錄【目錄】3.5字段操作3.5.1設置為主鍵3.5.2設置為復合主鍵3.5.3添加/刪除字段3.5.4改變字段類型3.5.5字段重命名3.5.6字段設置默認值3.5.7設置自增字段3.6客戶端操作數(shù)據(jù)庫3.7綜合實訓:設計電商平臺訂單表【學習導讀】假如需要設計圖書商城的數(shù)據(jù)庫,使用MySQL數(shù)據(jù)庫來存儲圖書的信息。設計一張名為“books”的數(shù)據(jù)表,包含圖書的ISBN、標題、作者、價格和庫存等字段。在這個情景中,需要使用MySQL進行常用的增、刪、改、查操作,以便管理圖書的信息。使用INSERT語句,可以向books表中插入新的圖書記錄,包括圖書的ISBN、標題、作者、價格和庫存等信息。當新書上架或者庫存發(fā)生變化時,可以使用UPDATE語句來更新圖書的信息。如果一種圖書停止銷售或者下架,可以使用DELETE語句將其從數(shù)據(jù)庫中刪除,確保圖書信息的準確性和實時性。可以使用SELECT語句根據(jù)不同的條件查詢圖書信息。學習導讀【學習目標】知識目標1.掌握MySQL用戶管理操作。2.掌握MySQL數(shù)據(jù)庫操作。3.掌握MySQL表操作。4.掌握MySQL數(shù)據(jù)操作。5.掌握MySQL字段操作。6.了解MySQL客戶端操作數(shù)據(jù)庫。能力目標1.能夠進行MySQL創(chuàng)建數(shù)據(jù)庫、表操作。2.能夠進行MySQL數(shù)據(jù)操作、字段操作。素質目標1.培養(yǎng)知識學習能力,擁有廣闊的知識面,不斷學習。2.培養(yǎng)組織能力,能夠有效地組織和管理事務。學習目標思維導圖3.1數(shù)據(jù)庫用戶管理3.1.1連接MySQL連接MySQL的命令格式:mysql-h主機地址-u用戶名-p用戶密碼step01連接本地MySQL:打開命令提示符窗口,進入mysql/bin目錄下面,輸入命令“mysql-uroot-p123456”,按“Enter”鍵后就可以連接MySQL。#使用用戶名root和相應密碼,連接本地數(shù)據(jù)庫C:\Users\Administrator>mysql-uroot-p123456

mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.mysql>step02連接遠程MySQL:如果遠程有一臺MySQL服務器,IP地址是9,用戶名是root,密碼是123456,可按如下步驟連接MySQL。#使用用戶名root和相應密碼,連接遠程數(shù)據(jù)庫C:\Users\Administrator>mysql-h9-uroot-p123456

mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.mysql>3.1數(shù)據(jù)庫用戶管理3.1.2新增用戶在MySQL8.0中,需要先創(chuàng)建用戶并指定密碼,再進行授權,新增用戶的命令格式如下。#創(chuàng)建用戶并指定密碼CREATEUSER用戶名@登錄主機IDENTIFIEDBY'密碼’;#授權GRANTALLPRIVILEGESON*.*TO用戶名@登錄主機WITHGRANTOPTION;新增用戶命令里有“%”,代表Internet上的任何一臺計算機都可以連接你的MySQL數(shù)據(jù)庫,并進行相應的操作,這是很危險的一種授權方式。在實際項目中,用戶將會被允許本地訪問或者通過指定IP地址訪問。新增一個用戶,用戶名為shopdb,密碼為shopdb_123456。讓它可以在任何主機上登錄,并對所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權限。#允許本地訪問GRANTSELECT,INSERT,UPDATE,DELETEON*.*toshopdb@localhostWITHGRANTOPTION;#允許通過指定IP地址訪問GRANTSELECT,INSERT,UPDATE,DELETEON*.*toshopdb@9WITHGRANTOPTION;3.1數(shù)據(jù)庫用戶管理3.1.3修改用戶密碼在MySQL8.0中,密碼存放在authentication_string中。在修改密碼的時候,用戶需要獲得reload權限,否則使用flushprivileges刷新MySQL的系統(tǒng)權限相關表會報錯??梢允褂靡韵旅钸M行授權。GRANTreloadON*.*to'shopdb'@'%';實戰(zhàn)演練——修改用戶密碼#使用用戶名root和相應密碼,連接本地數(shù)據(jù)庫C:\Users\Administrator>mysql-uroot-p123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.#授予reload權限mysql>GRANTreloadON*.*to'shopdb'@'%';

QueryOK,0rowsaffected(0.08sec)#修改密碼mysql>ALTERUSER'shopdb'@'%'IDENTIFIEDBY'123456';

QueryOK,0rowsaffected(0.02sec)#刷新權限mysql>flushprivileges;QueryOK,0rowsaffected(0.43sec)mysql>3.2數(shù)據(jù)庫操作3.2.1查看數(shù)據(jù)庫使用SHOWDATABASES語句可以查看有哪些數(shù)據(jù)庫。#使用用戶名root和相應密碼,連接本地數(shù)據(jù)庫C:\Users\Administrator>mysql-uroot-p123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.#查看數(shù)據(jù)庫mysql>SHOWDATABASES;

+------------------------------+|Database |+------------------------------+|information_schema||mysql||performance_schema||sys||test|+------------------------------+3.2數(shù)據(jù)庫操作3.2.2創(chuàng)建數(shù)據(jù)庫使用CREATEDATABASE語句可以創(chuàng)建數(shù)據(jù)庫。#使用用戶名root和相應密碼,連接本地數(shù)據(jù)庫C:\Users\Administrator>mysql-uroot-p123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.#創(chuàng)建數(shù)據(jù)庫shopmysql>CREATEDATABASEshop;QueryOK,1rowaffected(0.06sec)#查看數(shù)據(jù)庫mysql>SHOWDATABASES;+-----------------------------+|Database|+-----------------------------+|information_schema||mysql||performance_schema||shop||sys||test|+-----------------------------+6rowsinset(0.00sec)3.2數(shù)據(jù)庫操作3.2.3使用數(shù)據(jù)庫要操作某個數(shù)據(jù)庫或者數(shù)據(jù)庫里的表,需選擇要使用的數(shù)據(jù)庫,使用USE語句切換到所需的數(shù)據(jù)庫。#使用用戶名root和相應密碼,連接本地數(shù)據(jù)庫C:\Users\Administrator>mysql-uroot-p123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.#使用shop數(shù)據(jù)庫mysql>USEshop;Databasechangedmysql>3.2數(shù)據(jù)庫操作3.2.4刪除數(shù)據(jù)庫使用命令DROPDATABASE語句可以刪除數(shù)據(jù)庫。#使用用戶名root和相應密碼,連接本地數(shù)據(jù)庫C:\Users\Administrator>mysql-uroot-p123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.#查看數(shù)據(jù)庫mysql>SHOWDATABASES;+-----------------------------+|Database|+-----------------------------+|information_schema||mysql||performance_schema||shop||sys||test|+-----------------------------+6rowsinset(0.00sec)#刪除shop數(shù)據(jù)庫mysql>DROPDATABASEshop;QueryOK,0rowsaffected(0.46sec)#查看數(shù)據(jù)庫mysql>SHOWDATABASES;+-----------------------------+|Database|+-----------------------------+|information_schema||mysql||performance_schema||sys||test|+-----------------------------+5rowsinset(0.06sec)3.3表操作3.3.1創(chuàng)建表創(chuàng)建數(shù)據(jù)表首先要進入shop數(shù)據(jù)庫里,然后使用CREATETABLEuser()語句來創(chuàng)建,括號里面是數(shù)據(jù)表的字段,包括用戶編號(id)、姓名(name)、性別(sex)、年齡(age)、密碼(password)。#使用用戶名root和相應密碼,連接本地數(shù)據(jù)庫C:\Users\Administrator>mysql-uroot-p123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.#創(chuàng)建數(shù)據(jù)庫shopmysql>CREATEDATABASEshop;QueryOK,1rowaffected(0.00sec)#使用數(shù)據(jù)庫shopmysql>USEshop;Databasechanged#創(chuàng)建用戶表usermysql>CREATETABLEuser(idint(10)unsignednotnullauto_increment,namevarchar(25),sexvarchar(5),ageint(10),passwordvarchar(25),primarykey(id))engine=Innodb;QueryOK,0rowsaffected(0.90sec)#查看表mysql>SHOWtables;+-----------------------+|Tables_in_shop|+-----------------------+|user|+-----------------------+1rowinset(0.04sec)mysql>3.3表操作3.3.2查看表結構#使用用戶名root和相應密碼,連接本地數(shù)據(jù)庫C:\Users\Administrator>mysql-uroot-p123456mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.#使用shop數(shù)據(jù)庫mysql>USEshop;Databasechanged#查看用戶表user表結構mysql>DESCuser;+----------+--------------+------+-----+---------+----------------+|Field|Type|Null|Key|Default|Extra|+----------+--------------+------+-----+---------+----------------+|id|intunsigned|NO|PRI|NULL|auto_increment||name|varchar(25)|YES||NULL|||sex|varchar(5)|YES||NULL|||age|int|YES||NULL|||password|varchar(25)|YES||NULL||+----------+--------------+------+-----+---------+----------------+5rowsinset(0.02sec)mysql>3.3表操作3.3.3修改表結構使用ALTERTABLE語句可以修改表的結構??梢蕴砑印⑿薷幕騽h除列,添加約束條件

溫馨提示

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

評論

0/150

提交評論