MySql數(shù)據(jù)庫原理及應用課件匯總整本書電子教案全套課件完整版ppt最新教學教程_第1頁
MySql數(shù)據(jù)庫原理及應用課件匯總整本書電子教案全套課件完整版ppt最新教學教程_第2頁
MySql數(shù)據(jù)庫原理及應用課件匯總整本書電子教案全套課件完整版ppt最新教學教程_第3頁
MySql數(shù)據(jù)庫原理及應用課件匯總整本書電子教案全套課件完整版ppt最新教學教程_第4頁
MySql數(shù)據(jù)庫原理及應用課件匯總整本書電子教案全套課件完整版ppt最新教學教程_第5頁
已閱讀5頁,還剩233頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、項目1 數(shù)據(jù)庫系統(tǒng)基礎知識目錄CONTENTS體驗數(shù)據(jù)庫的應用任務1-1掌握數(shù)據(jù)庫系統(tǒng)的基本概念任務1-2使用MySQL任務1-3任務1-1體驗數(shù)據(jù)庫的應用01任務1-1體驗數(shù)據(jù)庫的應用(一)Access數(shù)據(jù)庫Microsoft Access是當前流行的關系數(shù)據(jù)庫管理系統(tǒng)之一,其核心是Microsoft Jet數(shù)據(jù)庫引擎。通常情況下,安裝Microsoft Office時選擇“默認安裝”,Access數(shù)據(jù)庫即被安裝到計算機上。Microsoft Access是一個非常容易掌握的數(shù)據(jù)庫管理系統(tǒng),利用它可以創(chuàng)建、修改和維護數(shù)據(jù)庫和數(shù)據(jù)庫中的數(shù)據(jù),并且可以利用向?qū)硗瓿蓪?shù)據(jù)庫的一系列操作。Acce

2、ss能夠滿足小型企業(yè)客戶/服務器解決方案的要求,是一種功能較完備的系統(tǒng),它幾乎包含了數(shù)據(jù)庫領域的所有技術和內(nèi)容,對于初學者學習數(shù)據(jù)庫知識非常有幫助。(三)Oracle數(shù)據(jù)庫Oracle是美國ORACLE公司(甲骨文)提供的以分布式數(shù)據(jù)庫為核心的一組軟件產(chǎn)品。Oracle是目前世界上使用最為廣泛的關系數(shù)據(jù)庫,它具有完整的數(shù)據(jù)管理功能,包括數(shù)據(jù)的大量性、數(shù)據(jù)保存的持久性、數(shù)據(jù)的共享性、數(shù)據(jù)的可靠性。Oracle在并行處理、實時性、數(shù)據(jù)處理速度方面都有較好的性能。一般情況下,大型企業(yè)選擇Oracle作為后臺數(shù)據(jù)庫來處理海量數(shù)據(jù)。(二)SQL Server 2008數(shù)據(jù)庫SQL Server數(shù)據(jù)庫系列

3、歷經(jīng)多次升級已經(jīng)發(fā)展到SQL Server 2008,SQL Server 2008是SQL Server的最新版本,是迄今為止最強大和最全面的SQL Server版本。下面對SQL Server 2008的企業(yè)版、標準版和工作組版進行簡要說明。任務1-1體驗數(shù)據(jù)庫的應用(四)MySQL數(shù)據(jù)庫MySQL數(shù)據(jù)庫是一款開源的關系型數(shù)據(jù)庫,在2009年被Oracle公司收購,但是MySQL仍然是開源的,與其他數(shù)據(jù)庫相比它有著體積小、速度快、使用靈活等特點。很多中小型網(wǎng)站都會選擇MySQL作為數(shù)據(jù)庫。(五) SQLiteSQLite是一款輕型的數(shù)據(jù)庫,是遵守ACID的關聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設計目標

4、是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內(nèi)存就夠了。這款數(shù)據(jù)庫的運行處理速度比Mysql、PostgreSQL這兩款都要快。任務1-1體驗數(shù)據(jù)庫的應用任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念02 1 概念數(shù)據(jù)模型任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(一)數(shù)據(jù)模型簡稱為概念模型,表示實體類型及實體間的聯(lián)系,是獨立于計算機系統(tǒng)的模型。概念模型用于建立信息世界的數(shù)據(jù)模型,強調(diào)其語義表達功能,要求概念簡單、清晰,易于用戶理解,它是現(xiàn)實世界的第1層抽象,是用戶和數(shù)據(jù)庫設計人員之間進行交流的工具。2 邏輯數(shù)據(jù)模型任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念

5、-(一)數(shù)據(jù)模型主要有網(wǎng)狀數(shù)據(jù)模型、層次數(shù)據(jù)模型和關系數(shù)據(jù)模型三種類型。此模型既要面向用戶,又要面向系統(tǒng),主要用于數(shù)據(jù)庫管理系統(tǒng)的實現(xiàn)。在數(shù)據(jù)庫中用數(shù)據(jù)模型來抽象、表示和處理現(xiàn)實世界中的數(shù)據(jù)和信息,主要是研究數(shù)據(jù)的邏輯結構。3.物理數(shù)據(jù)模型任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(一)數(shù)據(jù)模型不但與具體的數(shù)據(jù)庫管理系統(tǒng)有關,而且還與操作系統(tǒng)和硬件有關。每一種邏輯數(shù)據(jù)模型在實現(xiàn)時都有與其相對應的物理數(shù)據(jù)模型。數(shù)據(jù)庫管理系統(tǒng)為了保證其獨立性與可移植性,將大部分物理數(shù)據(jù)模型的實現(xiàn)工作交由系統(tǒng)自動完成,而設計者只設計索引、聚集等特殊結構。任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(二)概念模型概念模型是對信息世

6、界的建模,它應當能夠全面、準確地描述信息世界,是信息世界的基本概念。概念模型的表示方法很多,其中最為著名和使用最為廣泛的是P.P.Chen于1976年提出的E-R(Entity-Relationship)模型。任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(二)概念模型E-R圖通用的表示方式如下。(1)用矩形框表示實體型,在框內(nèi)寫上實體名。(2)用橢圓形框表示實體的屬性,并用無向邊把實體和屬性連接起來。(3)用菱形框表示實體間的聯(lián)系,在菱形框內(nèi)寫上聯(lián)系名,用無向邊分別把菱形框與有關實體連接起來,在無向邊旁注明聯(lián)系的類型。如果實體間的聯(lián)系也有屬性,則把屬性和菱形框也用無向邊連接起來。任務1-2掌握數(shù)據(jù)庫系

7、統(tǒng)的基本概念-(二)概念模型 圖1-2 班級學生E-R圖 圖1-3 課程學生E-R圖任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(三)數(shù)據(jù)模型的要素和種類 圖1-2 班級學生E-R圖 圖1-3 課程學生E-R圖任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(三)數(shù)據(jù)模型的要素和種類 1、數(shù)據(jù)模型的三要素(1)數(shù)據(jù)結構 數(shù)據(jù)結構用于描述系統(tǒng)的靜態(tài)特征,包括數(shù)據(jù)的類型、內(nèi)容、性質(zhì)及數(shù)據(jù)之間的聯(lián)系等。它是數(shù)據(jù)模型的基礎,也是刻畫一個數(shù)據(jù)模型性質(zhì)最重要的方面。常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和關系模型(2)數(shù)據(jù)操作 數(shù)據(jù)操作用于描述系統(tǒng)的動態(tài)特征,數(shù)據(jù)庫對數(shù)據(jù)主要操作有插入、修改、刪除和查詢4種操作。數(shù)據(jù)模型必須定義

8、這些操作的確切含義、操作符號、操作規(guī)則及實現(xiàn)操作的語言。 (3)數(shù)據(jù)約束 數(shù)據(jù)的約束條件實際上是一組完整性規(guī)則的集合。完整性規(guī)則是指給定數(shù)據(jù)模型中的數(shù)據(jù)及其聯(lián)系所具有的制約和存儲規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫及其狀態(tài)的變化,以保證數(shù)據(jù)的正確性、有效性和相容性。例如,在銀行系統(tǒng)中任何兩個用戶不能有相同的賬戶,或者年齡的取值不能為負,都屬于完整性規(guī)則。 任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(三)數(shù)據(jù)模型的要素和種類 2、常見的數(shù)據(jù)模型層次模型:用“樹”結構來表示數(shù)據(jù)之間的關系網(wǎng)狀模型:用“圖”結構來表示數(shù)據(jù)之間的關系關系模型:用“表”結構(或稱關系)來表示數(shù)據(jù)之間的關系。任務1-2掌握數(shù)據(jù)庫系

9、統(tǒng)的基本概念-(四)關系模型 (1)關系(Relation)。一個關系就是一張二維表,見下表:1、關系模型的數(shù)據(jù)結構姓名性別出生日期專業(yè)20201061張三男1999-02-30計算機技術20201061李四女1998-12-30計算機應用20201061王五男1998-02-09信息管理任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(四)關系模型(2)元組(Tuple)。元組也稱記錄,關系表中的每行對應一個元組,組成元組的元素稱為分量。數(shù)據(jù)庫中的一個實體或?qū)嶓w之間的一個聯(lián)系均使用一個元組來表示(3)屬性(Attribute)。表中的一列即為一個屬性,給每個屬性取一個名稱為屬性名。屬性具有型和值兩層含義

10、:屬性的型指屬性名和屬性值域;屬性的值是指屬性具體的取值。任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(四)關系模型(4)域(Domain)。屬性的取值范圍。(5)分量(Component)。元組中的一個屬性值。(6)候選碼(Candidate key)。若關系中的某一屬性或?qū)傩越M的值能唯一標識一個元組,且從這個屬性組中去除任何一個屬性,都不再具有這樣的性質(zhì),則稱該屬性或?qū)傩越M為候選碼(Candidate key),候選碼簡稱為碼。(7)主碼(Primary key)。若一個關系中有多個候選碼,則選定其中一個為主碼。任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(四)關系模型(10) 關系模式(Relation

11、 Schema):通數(shù)據(jù)模型一樣,數(shù)據(jù)庫也有型和值,在關系數(shù)據(jù)庫中關系模式是型,關系是值,關系模式是對關系的描述。對關系的描述一般表示為:關系名(屬性1,屬性2,屬性3,屬性n)(8)全碼(All-key)。在最簡單的情況下,候選碼只包含一個屬性;在最極端的情況下,關系模式的所有屬性是這個關系模式的候選碼,稱為全碼。全碼是候選碼的特例。(9)主屬性(Prime Attribute)和非主屬性(Non-prime Attribute)。在關系中,候選碼中的屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性。任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(五)數(shù)據(jù)庫系統(tǒng)的組成 1 數(shù)據(jù)庫(DataBas

12、e,DB)數(shù)據(jù)庫是一個長期存儲在計算機內(nèi)的、有組織的、有共享的、統(tǒng)一管理的數(shù)據(jù)集合,具有較小的冗余度、較高的數(shù)據(jù)獨立性和易擴展性。是一個按數(shù)據(jù)結構來存儲和管理數(shù)據(jù)的計算機軟件系統(tǒng)。任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(五)數(shù)據(jù)庫系統(tǒng)的組成 2 數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,DBMS) 數(shù)據(jù)庫管理系統(tǒng)是一種操縱和管理數(shù)據(jù)庫的大型軟件,是用于建立、使用和維護數(shù)據(jù)庫,簡稱DBMS。它對數(shù)據(jù)庫進行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過DBMS進行數(shù)據(jù)庫的維護工作。它提供多種功能,可使多個應用程序和用

13、戶用不同的方法在同時或不同時刻去建立,修改和詢問數(shù)據(jù)庫。它使用戶能方便地定義和操縱數(shù)據(jù),維護數(shù)據(jù)的安全性和完整性,以及進行多用戶下的并發(fā)控制和恢復數(shù)據(jù)庫。目前比較流行的DBMS有Oracle、Access、SQL Server、MySQL等。任務1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(五)數(shù)據(jù)庫系統(tǒng)的組成 3 數(shù)據(jù)庫系統(tǒng)(DataBase System,DBS) 數(shù)據(jù)庫系統(tǒng)DBS(Data Base System,簡稱DBS)是一個實際可運行的存儲、維護和應用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng),是存儲介質(zhì)、處理對象和管理系統(tǒng)的集合體。它通常由計算機硬件、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應用系統(tǒng)和數(shù)據(jù)庫用戶組成。任

14、務1-3 使用MySQL03任務1-3 使用MySQL-(一) MySQL安裝和配置1 下載MySQL任務1-3 使用MySQL-(一) MySQL安裝和配置2 在window平臺安裝與配置MySQL任務1-3 使用MySQL-(一) MySQL安裝和配置2 在window平臺安裝與配置MySQL任務1-3 使用MySQL-(二)啟動或停止MySQL服務2 在window平臺安裝與配置MySQL任務1-3 使用MySQL-(二)啟動或停止MySQL服務1 Window 服務管理器任務1-3 使用MySQL-(二)啟動或停止MySQL服務2 DOS命令任務1-3 使用MySQL-(三)登錄MyS

15、QL數(shù)據(jù)庫 dos命令登錄成功后界面使用MySQL 8.0 Command Line Client任務1-3 使用MySQL-(四)MySQL常用圖形化管理工具Navicat 運行界面phpMyAdmin運行界面任務1-3 使用MySQL-(四)MySQL常用圖形化管理工具MySQL Workbench運行界面 SQLyog運行界面THANK YOU項目2 設計商品信息管理數(shù)據(jù)庫MySQL數(shù)據(jù)庫原理及應用目錄CONTENTS了解數(shù)據(jù)庫設計任務2-1需求分析任務2-2概念結構設計任務2-3邏輯結構設計任務2-4 數(shù)據(jù)庫的物理設計任務2-5數(shù)據(jù)庫的實施、運行和維護任務2-6設計商品信息管理數(shù)據(jù)庫任

16、務2-7任務2-1了解數(shù)據(jù)庫設計01任務2-1 了解數(shù)據(jù)庫設計任務2-2需求分析02任務2-2需求分析-(一)需求分析的任務及目標THE CLEANTEMPLATE需求分析的任務是通過詳細調(diào)查現(xiàn)實世界要處理的對象(組織、部門、企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計算機系統(tǒng))的工作概況,明確用戶的各種需求,然后在此基礎上確定新系統(tǒng)的功能。任務2-2需求分析-(二)需求分析的方法1 調(diào)查用戶需求的步驟2 常用調(diào)查方法任務2-3概念結構設計03任務2-3概念結構設計(一)概念結構設計的方法和步驟(1)自頂向下。(2)自底向上。(3)逐步擴張。(4)混合策略。任務2-3概念結構設計(一)概念結構設計的

17、方法和步驟任務2-3概念結構設計(二)局部E-R模型設計(1) 根據(jù)需求分析所產(chǎn)生的文檔,確定每一局部結構的范圍。每個應用系統(tǒng)都可以分成幾個子系統(tǒng),每個子系統(tǒng)又可以進一步劃分成更小的子系統(tǒng)。設計局部E-R模型的第一步就是選擇適當層次的子系統(tǒng),這些子系統(tǒng)中的每一個對應了一個局部應用。從這些子系統(tǒng)出發(fā),設計各個局部E-R模型。分析每一局部結構所包含的實體、屬性和相互間的聯(lián)系,設計每一局部結構的E-R圖, 直到所有的局部E-R圖都設計完為止。(2) 針對某個局部應用,分塊設計分E-R模型。選擇好一個局部應用后,就要對每個局部應用逐一設計分E-R模型,就是把一個局部應用繼續(xù)分塊。然后參照數(shù)據(jù)流圖和數(shù)據(jù)

18、字典確定局部應用中的實體、實體的屬性、鍵,確 定實體間的聯(lián)系。任務2-3概念結構設計(二)局部E-R模型設計圖2-6 學生選課局部E-R圖圖2-7 教師授課局部E-R圖任務2-3概念結構設計(三)全局E-R模型設計圖2-8 全局E-R 模型設計任務2-3概念結構設計(三)全局E-R模型設計圖2-9 優(yōu)化后的全局E-R圖任務2-4邏輯結構設計04任務2-4邏輯結構設計(一)初始關系模式設計(1)實體轉(zhuǎn)為關系模式:實體名稱即是關系模式的名稱,實體的屬性則為關系模式的屬性,實體的主鍵就是關系模式的主鍵。圖2-10 商品E-R圖任務2-4邏輯結構設計(一)初始關系模式設計(2)聯(lián)系的轉(zhuǎn)換11:1聯(lián)系的

19、轉(zhuǎn)換:可以轉(zhuǎn)換一個獨立的關系,也可以與任意一端的關系模式合并圖2-11 學生與床位E-R圖任務2-4邏輯結構設計(一)初始關系模式設計1:n聯(lián)系的轉(zhuǎn)換:聯(lián)系不單獨對應一個關系模式,把“1”端主鍵加入到“n”端,構成2個關系模式圖2-12 學生與班級E-R圖任務2-4邏輯結構設計(一)初始關系模式設計m:n聯(lián)系的轉(zhuǎn)換:將聯(lián)系轉(zhuǎn)換為一個獨立的關系模式,其屬性為兩端實體的鍵加上聯(lián)系的屬性,兩端實體的鍵組成該關系模式的鍵或者鍵的一部分。 圖2-13 學生與圖書E-R圖任務2-4邏輯結構設計(二)關系模式的規(guī)范化規(guī)范化理論把關系應滿足的規(guī)范要求稱為范式,滿足最低要求的一級叫做第一范式(1NF),在第一范

20、式的基礎上提出了第二范式(2NF),在第二范式的基礎上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF。范式的等級越高,應滿足的約束集條件也越嚴格。通常情況下,數(shù)據(jù)規(guī)范到第三范式就能夠減少數(shù)據(jù)冗余、消除插入異常、更新異常和刪除異常。任務2-4邏輯結構設計(二)關系模式的規(guī)范化第一范式如果關系模式R中不包含多值屬性(每個屬性必須是不可分的數(shù)據(jù)項),則R滿足第一范式(First Normal Form),記作R1NF。第二范式第三范式如果關系模式R(U,F(xiàn)) 1NF,且R中的每個非主屬性完全函數(shù)依賴于R的某個候選碼,則R滿足第二范式(Second Normal Form),記作

21、R 2NF。如果關系模式R(U,F(xiàn)) 2NF,且每個非主屬性都不傳遞函數(shù)依賴于任何候選碼,則R滿足第三范式(Third Normal Form),記作R 3NF。任務2-5數(shù)據(jù)庫的物理設計05任務2-5數(shù)據(jù)庫的物理設計(一)關系模式存取方法選擇數(shù)據(jù)庫系統(tǒng)是多用戶共享的系統(tǒng),對同一個關系要簡歷多條存取路徑才能滿足多用戶的多種應用要求。物理結構設計的任務之一是根據(jù)關系數(shù)據(jù)庫管理系統(tǒng)支持的存取方法確定選擇哪些存取方法。存取方法是快速存取數(shù)據(jù)庫中數(shù)據(jù)的技術。數(shù)據(jù)庫管理系統(tǒng)一般提供索引方法和聚簇方法。1 索引方法2. 聚簇存取方法的選擇任務2-5數(shù)據(jù)庫的物理設計(二)確定數(shù)據(jù)庫的存儲結構確定數(shù)據(jù)庫物理結

22、構主要指確定數(shù)據(jù)的存放位置和存儲結構,包括確定關系、索引、聚簇、日志、備份等的存儲安排和存儲結構,確定系統(tǒng)配置等。確定數(shù)據(jù)的存放位置和存儲結構要綜合考慮存取時間、存儲空間利用率和維護代價三方面的因素。這三個方面常常是相互矛盾的,因此需要進行權衡選擇一個折中方案。(1)確定數(shù)據(jù)的存放位置(2)確定系統(tǒng)配置任務2-6數(shù)據(jù)庫的實施、運行和維護06任務2-6數(shù)據(jù)庫的實施、運行和維護(一)數(shù)據(jù)庫的實施數(shù)據(jù)庫實施階段包括數(shù)據(jù)的載入與應用程序的編碼和調(diào)試一般數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)量都很大,而且數(shù)據(jù)來源于部門中的各個不同的單位,數(shù)據(jù)的組織方式、結構和格式都與設計的數(shù)據(jù)庫系統(tǒng)有相當?shù)牟罹唷=M織數(shù)據(jù)載入就要將各類源數(shù)據(jù)

23、從各個局部應用中抽取出來。輸入計算機,再分類轉(zhuǎn)換,最后的綜合成符合新設計的數(shù)據(jù)庫結構的形式,輸入數(shù)據(jù)庫。任務2-6數(shù)據(jù)庫的實施、運行和維護(二)數(shù)據(jù)庫的運行與維護13241 數(shù)據(jù)庫的轉(zhuǎn)儲和恢復2 數(shù)據(jù)庫的安全性、完整性控制3數(shù)據(jù)庫信息的監(jiān)督、分析和改進4 數(shù)據(jù)庫的重組織和構造任務2-7設計商品信息管理數(shù)據(jù)庫07任務2-7設計商品信息管理數(shù)據(jù)庫(一)數(shù)據(jù)庫需求分析為了收集數(shù)據(jù)庫需要的信息,設計人員同商場管理人員和系統(tǒng)操作者進行了交談,從交談記錄中,記錄了如下要點。(1)數(shù)據(jù)庫要存儲商品基本信息、員工基本信息、供貨商基本信息。(2)根據(jù)工作要求查詢數(shù)據(jù),如瀏覽商品的基本信息,查看員工基本信息等。(

24、3)根據(jù)要求完成各種數(shù)據(jù)的統(tǒng)計信息,例如查詢某位員工銷售某種商品的銷售量,查詢某種類別的商品有多少種類,查詢指定商品的供貨商。(4)數(shù)據(jù)庫管理人員可以修改數(shù)據(jù),數(shù)據(jù)庫操作人員可以查詢數(shù)據(jù)。(5)使用關系數(shù)據(jù)庫模型任務2-7設計商品信息管理數(shù)據(jù)庫(一)數(shù)據(jù)庫需求分析為了收集數(shù)據(jù)庫需要的信息,設計人員同商場管理人員和系統(tǒng)操作者進行了交談,從交談記錄中,記錄了如下要點。(1)數(shù)據(jù)庫要存儲商品基本信息、員工基本信息、供貨商基本信息。(2)根據(jù)工作要求查詢數(shù)據(jù),如瀏覽商品的基本信息,查看員工基本信息等。(3)根據(jù)要求完成各種數(shù)據(jù)的統(tǒng)計信息,例如查詢某位員工銷售某種商品的銷售量,查詢某種類別的商品有多少種

25、類,查詢指定商品的供貨商。(4)數(shù)據(jù)庫管理人員可以修改數(shù)據(jù),數(shù)據(jù)庫操作人員可以查詢數(shù)據(jù)。(5)使用關系數(shù)據(jù)庫模型任務2-7設計商品信息管理數(shù)據(jù)庫(二)創(chuàng)建E-R模型圖2-14 商品員工E-R圖任務2-7設計商品信息管理數(shù)據(jù)庫(二)創(chuàng)建E-R模型圖2-15 商品供應商E-R圖任務2-7設計商品信息管理數(shù)據(jù)庫(二)創(chuàng)建E-R模型圖2-16 商品與類別E-R圖任務2-7設計商品信息管理數(shù)據(jù)庫(二)創(chuàng)建E-R模型圖2-17 商品與倉庫E-R圖任務2-7設計商品信息管理數(shù)據(jù)庫(三)設計關系模式在商品信息管理系統(tǒng)全局E-R圖聯(lián)系有兩種類型:一對多聯(lián)系和多對多聯(lián)系,其中對于一對多聯(lián)系不單獨創(chuàng)建關系模式,通過

26、添加到n端建立關系模式。得到關系模式如下:商品(商品編號,商品名稱,商品單位,商品價格,類別編號)供應商(供應商編號,名稱,地址)類別(類別編號,類別名稱)員工(員工編號,姓名,部門,職務,電話)供應(供應商編號,商品編號,供應量)銷售(員工編號,商品編號,銷售量)倉庫(倉庫編號,倉庫名稱)庫存(倉庫編號,商品編號,庫存量)任務2-7設計商品信息管理數(shù)據(jù)庫(四)規(guī)范化從第一范式開始,一步步對第三步驟得到關系模式進行規(guī)范化。最終關系模式如下。商品(商品編號,商品名稱,商品單位,商品價格,類別編號)供應商(供應商編號,名稱,地址)類別(類別編號,類別名稱)員工(員工編號,姓名,部門,職務,電話)供

27、應(供應商編號,商品編號,供應量)銷售(員工編號,商品編號,銷售量)倉庫(倉庫編號,倉庫名稱)庫存(倉庫編號,商品編號,庫存量)THANK YOU項目3 創(chuàng)建與維護MySQL數(shù)據(jù)庫MySQL數(shù)據(jù)庫原理及應用目錄CONTENTS認識SQL任務1了解MySQL數(shù)據(jù)庫任務2創(chuàng)建數(shù)據(jù)庫任務3打開數(shù)據(jù)庫任務4刪除數(shù)據(jù)庫任務5理解MySQL數(shù)據(jù)庫的存儲引擎任務6認識SQL01認識SQL1. SQL簡介結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關系數(shù)據(jù)庫系統(tǒng)。SQL語言1974年由

28、Boyce和Chamberlin提出,并首先在IBM公司研制的關系數(shù)據(jù)庫系統(tǒng)SystemR上實現(xiàn)。由于它具有功能豐富、使用方便靈活、語言簡潔易學等突出的優(yōu)點,深受計算機工業(yè)界和計算機用戶的歡迎。2. SQL特點風格統(tǒng)一 高度非過程化 面向集合的操作方式以同一種語法結構提供兩種使用方式語言簡潔,易學易用認識SQL3. SQL語句結構1)數(shù)據(jù)定義語言用來創(chuàng)建或刪除數(shù)據(jù)庫以及表等對象:DROP:刪除數(shù)據(jù)庫和表等對象CREATE:創(chuàng)建數(shù)據(jù)庫和表等對象ALTER:修改數(shù)據(jù)庫和表等對象的結構2)數(shù)據(jù)操作語言用來變更表中的記錄:INSERT:向表中插入新數(shù)據(jù)UPDATE:更新表中的數(shù)據(jù)DELETE:刪除表中

29、的數(shù)據(jù)3)數(shù)據(jù)查詢語言用來查詢表中的記錄,主要包含 SELECT 命令,來查詢表中的數(shù)據(jù)。4)數(shù)據(jù)控制語言用來確認或者取消對數(shù)據(jù)庫中的數(shù)據(jù)進行的變更:GRANT:賦予用戶操作權限REVOKE:取消用戶的操作權限COMMIT:確認對數(shù)據(jù)庫中的數(shù)據(jù)進行的變更ROLLBACK:取消對數(shù)據(jù)庫中的數(shù)據(jù)進行的變更認識SQL4. SQL的基本書寫規(guī)范1)SQL語句要以英文分號(;)結尾。2)SQL語句不區(qū)分大小寫,但為了書寫規(guī)范需要關鍵字大寫、表名的首字母大寫、其余(列名等)小寫。3)常數(shù)的書寫方式是固定的:SQL 語句中含有字符串的時候,需要像 abc 這樣,使用英文單引號將字符串括起來,用來標識這是一個

30、字符串。SQL 語句中含有日期的時候,同樣需要使用英文單引號將其括起來。日期的格式有很多種(26 Jan 2010 或者10/01/26 等)。在 SQL 語句中書寫數(shù)字的時候,不需要使用任何符號標識,直接寫成 1000 這樣的數(shù)字即可。4)單詞之間需要使用半角空格或者換行符進行分隔。了解MySQL數(shù)據(jù)庫02了解MySQL數(shù)據(jù)庫1. 什么是MySQLMySQL是一個關系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database M

31、anagement System,關系數(shù)據(jù)庫管理系統(tǒng)) 應用軟件之一。2. MySQL的特點1)MySQL 是開放源代碼的數(shù)據(jù)庫 ;2)MySQL 的跨平臺性,可以在Windows、UNIX、Linux 和 Mac OS 等操作系統(tǒng)上運行;3)價格優(yōu)勢,社區(qū)版本的 MySQL 是免費試用的,付費的附加功能其價格也是很便宜。4)功能強大且使用方便,是一個真正的多用戶、 多線程 SQL 數(shù)據(jù)庫服務器。創(chuàng)建數(shù)據(jù)庫03創(chuàng)建數(shù)據(jù)庫1. 使用Navicat工具創(chuàng)建商品信息管理數(shù)據(jù)庫1)首先登陸Navicat,然后順利連接數(shù)據(jù)庫。2)在localhost開頭的地址上點右鍵,然后點擊“新建數(shù)據(jù)庫”。3)之后彈

32、出“新建數(shù)據(jù)庫”對話框,在“常規(guī)”選項卡中需要設置數(shù)據(jù)庫名、字符集和排序規(guī)則。4)正常情況下,建議數(shù)據(jù)庫名字以英文命名,字符集選擇utf8, 排序規(guī)則選擇utf8_general_ci。在這里將商品信息管理數(shù)據(jù)庫名命名為merchandise,字符集選擇utf8,排序規(guī)則選擇utf8_general_ci,如下圖所示。設置完成之后點擊“確定”。5)之后可以看到merchandise數(shù)據(jù)庫創(chuàng)建成功,點擊merchandise數(shù)據(jù)庫,可以看到此時尚未創(chuàng)建任何的表。創(chuàng)建數(shù)據(jù)庫2. 使用CREATEDATABASE語句創(chuàng)建商品信息管理數(shù)據(jù)庫1)CREATEDATABASE語法說明在 MySQL 中,可

33、以使用 CREATE DATABASE 語句創(chuàng)建數(shù)據(jù)庫,語法格式如下:CREATE DATABASE IF NOT EXISTS DEFAULT CHARACTER SET DEFAULT COLLATE ; 中的內(nèi)容是可選的。語法說明如下:創(chuàng)建數(shù)據(jù)庫的名稱。MySQL 的數(shù)據(jù)存儲區(qū)將以目錄方式表示 MySQL 數(shù)據(jù)庫,因此數(shù)據(jù)庫名稱必須符合操作系統(tǒng)的文件夾命名規(guī)則,不能以數(shù)字開頭,盡量要有實際意義。注意在 MySQL 中不區(qū)分大小寫。IF NOT EXISTS:在創(chuàng)建數(shù)據(jù)庫之前進行判斷,只有該數(shù)據(jù)庫目前尚不存在時才能執(zhí)行操作。此選項可以用來避免數(shù)據(jù)庫已經(jīng)存在而重復創(chuàng)建的錯誤。DEFAULT

34、CHARACTER SET:指定數(shù)據(jù)庫的字符集。指定字符集的目的是為了避免在數(shù)據(jù)庫中存儲的數(shù)據(jù)出現(xiàn)亂碼的情況。如果在創(chuàng)建數(shù)據(jù)庫時不指定字符集,那么就使用系統(tǒng)的默認字符集。DEFAULT COLLATE:指定字符集的排序規(guī)則。創(chuàng)建數(shù)據(jù)庫2. 使用CREATEDATABASE語句創(chuàng)建商品信息管理數(shù)據(jù)庫2)最簡單的創(chuàng)建商品信息數(shù)據(jù)庫的語句在 MySQL 命令行客戶端輸入“CREATE DATABASE merchandise;”命令即可創(chuàng)建商品信息數(shù)據(jù)庫(注:語句要以英文分號結尾。)3)創(chuàng)建商品信息數(shù)據(jù)庫時指定字符集和排序規(guī)則指定其默認字符集為 utf8,排序規(guī)則為 utf8_general_ci,

35、輸入的 SQL 語句如下:CREATE DATABASE merchandiseDEFAULT CHARACTER SET utf8DEFAULT COLLATE utf8_general_ci;打開數(shù)據(jù)庫04打開數(shù)據(jù)庫1. 使用Navicat工具打開商品信息管理數(shù)據(jù)庫登陸Navicat,然后連接數(shù)據(jù)庫,連接成功后會顯示現(xiàn)有的數(shù)據(jù)庫列表,在需打開的數(shù)據(jù)庫名稱上雙擊即可打開該數(shù)據(jù)庫。2. 使用USE語句打開商品信息管理數(shù)據(jù)庫可以用 USE 來指定當前數(shù)據(jù)庫。其語法格式為:USE 指定后再輸入“SHOW TABLES;”命令即可顯示該數(shù)據(jù)庫中已經(jīng)創(chuàng)建的表格。刪除數(shù)據(jù)庫05刪除數(shù)據(jù)庫1. 使用Nav

36、icat工具刪除商品信息管理數(shù)據(jù)庫1)在要刪除的數(shù)據(jù)庫上點擊鼠標右鍵,在彈出的右鍵菜單中點擊“刪除數(shù)據(jù)庫”選項。2)彈出的對話框中點擊“刪除”按鈕即可刪除選定的數(shù)據(jù)庫。刪除數(shù)據(jù)庫2. 使用DROPDATABASE語句刪除商品信息管理數(shù)據(jù)庫1)DROP DATABASE語法說明在 MySQL 中,當需要刪除已創(chuàng)建的數(shù)據(jù)庫時,還可以使用 DROP DATABASE 語句。其語法格式為:DROP DATABASE IF EXISTS 語法說明如下:指定要刪除的數(shù)據(jù)庫名。IF EXISTS:用于防止當數(shù)據(jù)庫不存在時發(fā)生錯誤。DROP DATABASE:刪除數(shù)據(jù)庫中的所有表格并同時刪除數(shù)據(jù)庫。使用 DR

37、OP DATABASE 命令時要非常謹慎,在執(zhí)行該命令后,MySQL 不會給出任何提示確認信息。DROP DATABASE 刪除數(shù)據(jù)庫后,數(shù)據(jù)庫中存儲的所有數(shù)據(jù)表和數(shù)據(jù)也將一同被刪除,而且不能恢復。因此最好在刪除數(shù)據(jù)庫之前先將數(shù)據(jù)庫進行備份。刪除數(shù)據(jù)庫2. 使用DROPDATABASE語句刪除商品信息管理數(shù)據(jù)庫2)DROP DATABASE刪除數(shù)據(jù)庫操作在 MySQL 命令行客戶端輸入“DROP DATABASE merchandise;”命令即可刪除商品信息數(shù)據(jù)庫。如果使用IF EXISTS從句,可以防止系統(tǒng)報此類錯誤,輸入的命令為“DROP DATABASE IF EXISTS merch

38、andise;”理解MySQL數(shù)據(jù)庫的存儲引擎06理解MySQL數(shù)據(jù)庫的存儲引擎1. 存儲引擎簡介存儲引擎就是存儲數(shù)據(jù)、為存儲的數(shù)據(jù)建立索引和更新、查詢數(shù)據(jù)等技術的實現(xiàn)方法。在Oracle和SQL Server等數(shù)據(jù)庫中只有一種存儲引擎,所有數(shù)據(jù)存儲管理機制都是一樣的。MySQL支持的存儲引擎有InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV和BLACKHOLE等。InnoDB存儲引擎:InnoDB是事務型數(shù)據(jù)庫的首選引擎,是具有提交、回滾和崩潰恢復能力的事務安全存儲引擎,支持行鎖定和外鍵約束。從MySQL 5.5.5之后,InnoDB作為默認存

39、儲引擎。MyISAM存儲引擎:MyISAM存儲引擎是MySQL中常見的存儲引擎,曾是MySQL的默認存儲引擎,不支持事務、外鍵約束,但訪問速度快,對事務完整性不要求,適合于以SELECT/INSERT為主的表。MEMORY存儲引擎:MEMORY存儲引擎是MySQL中一類特殊的存儲引擎。該存儲引擎使用存在于內(nèi)存中的內(nèi)容來創(chuàng)建表,每個表實際對應一個磁盤文件,格式為.frm。這類表因為數(shù)據(jù)在內(nèi)存中,且默認使用HASH索引,所以訪問速度非常快;但一旦服務關閉,表中的數(shù)據(jù)就會丟失。理解MySQL數(shù)據(jù)庫的存儲引擎2.存儲引擎的選擇如果要提供提交、回滾的崩潰恢復能力的事務安全能力,并要求實現(xiàn)并發(fā)控制,則In

40、noDB是一個很好的選擇。如果數(shù)據(jù)表主要用來插入和查詢記錄,則MyISAM引擎能提供較高的處理效率。如果只是臨時存放數(shù)據(jù),數(shù)據(jù)量不大,并且不需要較高的數(shù)據(jù)安全性,則可以選擇將數(shù)據(jù)保存在內(nèi)存中的Memory引擎。功能InnoDBMyISAMMemory存儲限制64TB256TBRAM支持事務支持無無空間使用高低低內(nèi)存使用高低高支持數(shù)據(jù)緩存支持無無插入數(shù)據(jù)速度低高高支持外鍵支持無無THANK YOU項目5 查詢與維護商品信息管理數(shù)據(jù)表MySQL數(shù)據(jù)庫原理及應用目錄CONTENTS掌握簡單數(shù)據(jù)查詢?nèi)蝿?掌握多表連接查詢?nèi)蝿?理解嵌套查詢?nèi)蝿?理解集合查詢?nèi)蝿?數(shù)據(jù)更新任務5掌握簡單數(shù)據(jù)查詢01掌握簡

41、單數(shù)據(jù)查詢1. 單表無條件數(shù)據(jù)查詢語法格式如下:SELECT FROM 在字段列名中,多個不同字段列名用英文逗號“,”分隔,SELECT語句只返回相應字段的數(shù)據(jù)。如果要顯示所有字段,可以使用星號(*)來代替,SELECT語句會返回表的所有字段數(shù)據(jù)。掌握簡單數(shù)據(jù)查詢2. 使用WHERE子句實現(xiàn)條件查詢在 MySQL 中,如果需要有條件的從數(shù)據(jù)表中查詢數(shù)據(jù),可以使用 WHERE 關鍵字來指定查詢條件。使用 WHERE 關鍵字的語法格式如下:WHERE 查詢條件可以是:帶比較運算符和邏輯運算符的查詢條件帶 BETWEEN AND 關鍵字的查詢條件帶 IS NULL 關鍵字的查詢條件帶 IN 關鍵字的

42、查詢條件帶 LIKE 關鍵字的查詢條件掌握簡單數(shù)據(jù)查詢2. 使用WHERE子句實現(xiàn)條件查詢1)單一條件查詢單一條件指的是在 WHERE 關鍵字后只有一個查詢條件。2)多條件查詢在 WHERE 關鍵詞后可以有多個查詢條件,這樣能夠使查詢結果更加精確AND:記錄滿足所有查詢條件時,才會被查詢出來。OR:記錄滿足任意一個查詢條件時,才會被查詢出來。XOR:記錄滿足其中一個條件,并且不滿足另一個條件時,才會被查詢出來。掌握簡單數(shù)據(jù)查詢3. 使用常用聚集函數(shù)統(tǒng)計數(shù)據(jù)函數(shù)名作用MAX(column)返回某列的最低值(有則不會返回NULL,沒有則返回NULL)MIN(column)返回某列的最高值(沒有則返

43、回NULL)COUNT(column)返回某列的行數(shù)(不包括 NULL 值)COUNT(*)返回被選列行數(shù)(包括NULL)SUM(column)求和AVG(column)求平均值掌握簡單數(shù)據(jù)查詢4. 分組篩選數(shù)據(jù)在 MySQL 中,GROUP BY 關鍵字可以根據(jù)一個或多個字段對查詢結果進行分組。在分組的列上我們可以使用 COUNT, SUM, AVG,等函數(shù)。使用 GROUP BY 關鍵字的語法格式如下:GROUP BY 其中,“字段名”表示需要分組的字段名稱,多個字段時用逗號隔開。1)GROUP BY單獨使用單獨使用 GROUP BY 關鍵字時,查詢結果會只顯示每個分組的第一條記錄。2)G

44、ROUP BY 與聚合函在數(shù)據(jù)統(tǒng)計時,GROUP BY 關鍵字經(jīng)常和聚合函數(shù)一起使用。掌握簡單數(shù)據(jù)查詢5. 對查詢結果進行排序通過條件查詢語句可以查詢到符合用戶需求的數(shù)據(jù),但是查詢到的數(shù)據(jù)一般都是按照數(shù)據(jù)最初被添加到表中的順序來顯示。為了使查詢結果的順序滿足用戶的要求,MySQL 提供了 ORDER BY 關鍵字來對查詢結果進行排序。其語法格式如下:ORDER BY ASC|DESC語法說明如下。字段名:表示需要排序的字段名稱,多個字段時用逗號隔開。ASC|DESC:ASC表示字段按升序排序;DESC表示字段按降序排序。其中ASC為默認值。使用 ORDER BY 關鍵字應該注意以下幾個方面:O

45、RDER BY 關鍵字后可以跟子查詢。當排序的字段中存在空值時,ORDER BY 會將該空值作為最小值來對待。ORDER BY 指定多個字段進行排序時,MySQL 會按照字段的順序從左到右依次進行排序。掌握多表連接查詢02掌握多表連接查詢1. 交叉連接多個表交叉連接時,在 FROM 后連續(xù)使用 “CROSS JOIN”或逗號“,”即可。兩種語法的返回結果是相同的,但是第一種語法是官方建議的標準寫法。交叉連接的語法格式如下:SELECT FROM CROSS JOIN WHERE子句或SELECT FROM , WHERE子句 語法說明如下:字段名:需要查詢的字段名稱。:需要交叉連接的表名。WH

46、ERE 子句:用來設置交叉連接的查詢條件。當連接的表之間沒有關系時,我們會省略掉 WHERE 子句,這時返回結果就是兩個表的笛卡爾積,返回結果數(shù)量就是兩個表的數(shù)據(jù)行相乘。掌握多表連接查詢1. 交叉連接SELECT * FROM goods_tb CROSS JOIN catalogs_tb;掌握多表連接查詢1. 交叉連接為了將無意義的數(shù)據(jù)過濾掉,需要用在交叉連接時使用WHERE子句。SELECT * FROM goods_tb CROSS JOIN catalogs_tb WHERE goods_tb.goodsCatId=catalogs_tb.catId;掌握多表連接查詢2. 內(nèi)連接內(nèi)連接

47、(INNER JOIN)主要通過設置連接條件的方式,來移除查詢結果中某些數(shù)據(jù)行的交叉連接。簡單來說,就是利用條件表達式來消除交叉連接的某些數(shù)據(jù)行。內(nèi)連接使用INNER JOIN關鍵字連接兩張表,并使用ON子句來設置連接條件。內(nèi)連接的語法格式如下:SELECT FROM INNER JOIN ON子句語法說明如下:字段名:需要查詢的字段名稱。:需要內(nèi)連接的表名。INNER JOIN :內(nèi)連接中可以省略 INNER 關鍵字,只用關鍵字 JOIN。ON 子句:用來設置內(nèi)連接的連接條件。掌握多表連接查詢2. 內(nèi)連接當對多個表進行查詢時,要在 SELECT 語句后面指定字段是來源于哪一張表。因此,在多表

48、查詢時,SELECT 語句后面的寫法是“表名.列名”。另外,如果表名非常長的話,也可以給表設置別名。掌握多表連接查詢3. 自連接自連接是連接的一種用法,但并不是連接的一種類型,因為他的本質(zhì)是把一張表當成兩張表來使用。MySQL有時在信息查詢時需要采用自連接,使用自連接時需要為表定義別名。例如查詢goods_tb表中庫存量大于棒棒糖庫存量的所有商品信息,其中棒棒糖庫存量goodsStock的值為50,采用自連接進行查詢時,SQL語句和執(zhí)行結果如下。掌握多表連接查詢4. 外連接1)左連接左外連接又稱為左連接,使用 LEFT OUTER JOIN 關鍵字連接兩個表,并使用 ON 子句來設置連接條件。

49、左連接的語法格式如下:SELECT FROM LEFT OUTER JOIN 語法說明如下。字段名:需要查詢的字段名稱。:需要左連接的表名。LEFT OUTER JOIN:左連接中可以省略 OUTER 關鍵字,只使用關鍵字 LEFT JOIN。ON 子句:用來設置左連接的連接條件,不能省略。上述語法中,“表1”為基表,“表2”為參考表。左連接查詢時,可以查詢出“表1”中的所有記錄和“表2”中匹配連接條件的記錄。如果“表1”的某行在“表2”中沒有匹配行,那么在返回結果中,“表2”的字段值均為空值(NULL)。掌握多表連接查詢4. 外連接1)左連接采用左連接查詢商品信息和每個商品對應的類別名稱,其

50、SQL語句和運行結果如下。goodsName為“蘋果”的商品沒有類別名稱,因為對應的catalogs_tb表中沒有該類別的信息,所以該條記錄只取出了goods_tb表中相應的值,而從catalogs_tb表中取出的值為 NULL。掌握多表連接查詢4. 外連接2)右連接右外連接又稱為右連接,右連接是左連接的反向連接。使用 RIGHT OUTER JOIN 關鍵字連接兩個表,并使用 ON 子句來設置連接條件。右連接的語法格式如下:SELECT FROM RIGHT OUTER JOIN 語法說明如下。字段名:需要查詢的字段名稱。:需要右連接的表名。RIGHT OUTER JOIN:右連接中可以省略

51、 OUTER 關鍵字,只使用關鍵字 RIGHT JOIN。ON 子句:用來設置右連接的連接條件,不能省略。與左連接相反,右連接以“表2”為基表,“表1”為參考表。右連接查詢時,可以查詢出“表2”中的所有記錄和“表1”中匹配連接條件的記錄。如果“表2”的某行在“表1”中沒有匹配行,那么在返回結果中,“表1”的字段值均為空值(NULL)。掌握多表連接查詢4. 外連接2)右連接采用左連接查詢商品信息和每個商品對應的類別名稱,其SQL語句和運行結果如下。catName為“玩具”的類別沒有相關的商品,所以該條記錄只取出了catalogs_tb表中相應的值,而從goods_tb表中取出的值為 NULL。理

52、解嵌套查詢03理解嵌套查詢1. 嵌套子查詢嵌套子查詢是 MySQL 中比較常用的查詢方法,通過子查詢可以實現(xiàn)多表查詢。子查詢指將一個查詢語句嵌套在另一個查詢語句中。子查詢可以在 SELECT、UPDATE 和 DELETE 語句中使用,而且可以進行多層嵌套。在實際開發(fā)時,子查詢經(jīng)常出現(xiàn)在 WHERE 子句中。子查詢在 WHERE 中的語法格式如下:WHERE (子查詢)其中,操作符可以是比較運算符和 IN、NOT IN、EXISTS、NOT EXISTS 等關鍵字。MySQL子查詢可以分為相關子查詢和非相關子查詢兩類。理解嵌套查詢2.非相關子查詢非相關子查詢的執(zhí)行不依賴與外部的查詢,其執(zhí)行過程

53、如下:(1)執(zhí)行子查詢,其結果不被顯示,而是傳遞給外部查詢,作為外部查詢的條件使用。(2)執(zhí)行外部查詢,并顯示整個結果。返回單值的子查詢返回列表的子查詢理解嵌套查詢3. 相關子查詢相關子查詢的執(zhí)行依賴于外部查詢。多數(shù)情況下是子查詢的WHERE子句中引用了外部查詢的表。執(zhí)行過程:(1)從外層查詢中取出一個元組,將元組相關列的值傳給內(nèi)層查詢。(2)執(zhí)行內(nèi)層查詢,得到子查詢操作的值。(3)外查詢根據(jù)子查詢返回的結果或結果集得到滿足條件的行。(4)然后外層查詢?nèi)〕鱿乱粋€元組重復做步驟1-3,直到外層的元組全部處理完畢。理解嵌套查詢3. 相關子查詢查詢goods_tb表中大于該類商品價格平均值的商品信息

54、,其SQL語句和執(zhí)行結果如下。與前面介紹過的子查詢不同,相關子查詢無法獨立于外部查詢而得到解決。該子查詢需要一個商品類別編號goodsCatId的值。而這個值是個變量,隨MySQL檢索goods_tb表中的不同行而改變。 理解集合查詢04理解集合查詢SELECT語句的查詢結果是元組的集合,所以多個SELECT語句的結果可進行集合操作。 集合操作主要包括并操作UNION、交操作INTERSECT、差操作EXCEPT。 但需要注意的是,參加集合操作的各查詢結果的列數(shù)必須相同,且對應的數(shù)據(jù)類型也必須相同。1. 并操作MySQL中并操作有直接的關鍵字支持,那就是UNION 和UNION ALL ,但是

55、他倆是有區(qū)別的,UNION得到的結果會把重復的元組去掉,而UNION ALL會保留所有元組。理解集合查詢2. 交操作在SQL語法定義中有交操作的關鍵字INTERSECT,但是遺憾的是MySQL并不支持,只能通過替代語句來實現(xiàn)。查詢goods_tb表中庫存大于50,價格小于8的商品信息,在支持INTERSECT關鍵字的環(huán)境中,其SQL語句可以如下。SELECT * FROM goods_tb WHERE goodsStock 50 INTERSECTSELECT * FROM goods_tb WHERE goodsPrice 50 AND goodsPrice 20 EXCEPTSELECT

56、* FROM goods_tb WHERE goodsPrice 20 AND goodsPrice 8;數(shù)據(jù)更新05數(shù)據(jù)更新1. 數(shù)據(jù)記錄的插入1)INSERT插入一條數(shù)據(jù)數(shù)據(jù)庫與表創(chuàng)建成功以后,需要向數(shù)據(jù)庫的表中插入數(shù)據(jù)。在MySQL中可以使用INSERT語句向數(shù)據(jù)庫已有的表中插入一行或者多行數(shù)據(jù)。以下為向MySQL數(shù)據(jù)表插入一條數(shù)據(jù)的INSERT INTO語法。INSERT INTO table_name ( field1, field2,.fieldN ) VALUES ( value1, value2,.valueN );需要注意的是,如果第一列沒有設置主鍵自增,添加第一列數(shù)據(jù)時比較

57、容易出錯,要不斷的查看待添加的主鍵值是否與現(xiàn)有值重復。如果添加過主鍵自增,第一列可以省略,或者在增加數(shù)據(jù)的時候,可以寫為0或者NULL,這樣添加數(shù)據(jù)可以自增, 從而可以添加全部數(shù)據(jù)。數(shù)據(jù)更新1. 數(shù)據(jù)記錄的插入INSERT INTO goods_tb ( goodsId, goodsName, goodsPrice, goodsUnit, goodsStock, goodsCatId )VALUES(0, 玩具汽車, 56, 輛, 17, 4);INSERT INTO goods_tb ( goodsId, goodsName, goodsPrice, goodsUnit, goodsStoc

58、k, goodsCatId )VALUES(NULL, 玩具汽車, 56, 輛, 17, 4);INSERT INTO goods_tb (goodsName, goodsPrice, goodsUnit, goodsStock, goodsCatId )VALUES(玩具汽車, 56, 輛, 17, 4);INSERT INTO goods_tb VALUES(NULL, 玩具汽車, 56, 輛, 17, 4);INSERT INTO goods_tb VALUES(0, 玩具汽車, 56, 輛, 17, 4);數(shù)據(jù)更新1. 數(shù)據(jù)記錄的插入2)INSERT插入多條數(shù)據(jù)INSERT語句可以一次

59、插入多條數(shù)據(jù),其語法如下,其形式與插入一條數(shù)據(jù)的類似,只是在VALUES后面增加多行值,且每行值之間用逗號分隔。INSERT INTO table_name (field1, field2,.fieldN) VALUES (valueA1,valueA2,.valueAN),(valueB1,valueB2,.valueBN),(valueC1,valueC2,.valueCN).;數(shù)據(jù)更新1. 數(shù)據(jù)記錄的插入3)INSERT SELECT語句此語句的作用是將SELECT語句的結果插入表中,可實現(xiàn)數(shù)據(jù)遷移。SELECT 子句返回的是一個查詢到的結果集,INSERT語句將這個結果集插入指定表中,

60、結果集中的每行數(shù)據(jù)的字段數(shù)、字段的數(shù)據(jù)類型都必須與被操作的表完全一致,其語法如下。INSERT INTO table_name1 (field1, field2,.fieldN) SELECT field1, field2,.fieldN FROM table_name2;數(shù)據(jù)更新2. 數(shù)據(jù)記錄的修改在 MySQL 中,可以使用 UPDATE 語句來修改表中的數(shù)據(jù)。以下是 UPDATE 命令修改表中數(shù)據(jù)的通用 SQL 語法:UPDATE table_name SET field1=new-value1, field2=new-value2WHERE ClauseWHERE子句用于限定表中要修改

溫馨提示

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

評論

0/150

提交評論