版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、項目1 數(shù)據(jù)庫系統(tǒng)基礎(chǔ)知識目錄CONTENTS體驗數(shù)據(jù)庫的應(yīng)用任務(wù)1-1掌握數(shù)據(jù)庫系統(tǒng)的基本概念任務(wù)1-2使用MySQL任務(wù)1-3任務(wù)1-1體驗數(shù)據(jù)庫的應(yīng)用01任務(wù)1-1體驗數(shù)據(jù)庫的應(yīng)用(一)Access數(shù)據(jù)庫Microsoft Access是當(dāng)前流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng)之一,其核心是Microsoft Jet數(shù)據(jù)庫引擎。通常情況下,安裝Microsoft Office時選擇“默認(rèn)安裝”,Access數(shù)據(jù)庫即被安裝到計算機(jī)上。Microsoft Access是一個非常容易掌握的數(shù)據(jù)庫管理系統(tǒng),利用它可以創(chuàng)建、修改和維護(hù)數(shù)據(jù)庫和數(shù)據(jù)庫中的數(shù)據(jù),并且可以利用向?qū)硗瓿蓪?shù)據(jù)庫的一系列操作。Acce
2、ss能夠滿足小型企業(yè)客戶/服務(wù)器解決方案的要求,是一種功能較完備的系統(tǒng),它幾乎包含了數(shù)據(jù)庫領(lǐng)域的所有技術(shù)和內(nèi)容,對于初學(xué)者學(xué)習(xí)數(shù)據(jù)庫知識非常有幫助。(三)Oracle數(shù)據(jù)庫Oracle是美國ORACLE公司(甲骨文)提供的以分布式數(shù)據(jù)庫為核心的一組軟件產(chǎn)品。Oracle是目前世界上使用最為廣泛的關(guān)系數(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的最新版本,是迄今為止最強(qiáng)大和最全面的SQL Server版本。下面對SQL Server 2008的企業(yè)版、標(biāo)準(zhǔn)版和工作組版進(jìn)行簡要說明。任務(wù)1-1體驗數(shù)據(jù)庫的應(yīng)用(四)MySQL數(shù)據(jù)庫MySQL數(shù)據(jù)庫是一款開源的關(guān)系型數(shù)據(jù)庫,在2009年被Oracle公司收購,但是MySQL仍然是開源的,與其他數(shù)據(jù)庫相比它有著體積小、速度快、使用靈活等特點。很多中小型網(wǎng)站都會選擇MySQL作為數(shù)據(jù)庫。(五) SQLiteSQLite是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標(biāo)
4、是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。這款數(shù)據(jù)庫的運(yùn)行處理速度比Mysql、PostgreSQL這兩款都要快。任務(wù)1-1體驗數(shù)據(jù)庫的應(yīng)用任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念02 1 概念數(shù)據(jù)模型任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(一)數(shù)據(jù)模型簡稱為概念模型,表示實體類型及實體間的聯(lián)系,是獨立于計算機(jī)系統(tǒng)的模型。概念模型用于建立信息世界的數(shù)據(jù)模型,強(qiáng)調(diào)其語義表達(dá)功能,要求概念簡單、清晰,易于用戶理解,它是現(xiàn)實世界的第1層抽象,是用戶和數(shù)據(jù)庫設(shè)計人員之間進(jìn)行交流的工具。2 邏輯數(shù)據(jù)模型任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念
5、-(一)數(shù)據(jù)模型主要有網(wǎng)狀數(shù)據(jù)模型、層次數(shù)據(jù)模型和關(guān)系數(shù)據(jù)模型三種類型。此模型既要面向用戶,又要面向系統(tǒng),主要用于數(shù)據(jù)庫管理系統(tǒng)的實現(xiàn)。在數(shù)據(jù)庫中用數(shù)據(jù)模型來抽象、表示和處理現(xiàn)實世界中的數(shù)據(jù)和信息,主要是研究數(shù)據(jù)的邏輯結(jié)構(gòu)。3.物理數(shù)據(jù)模型任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(一)數(shù)據(jù)模型不但與具體的數(shù)據(jù)庫管理系統(tǒng)有關(guān),而且還與操作系統(tǒng)和硬件有關(guān)。每一種邏輯數(shù)據(jù)模型在實現(xiàn)時都有與其相對應(yīng)的物理數(shù)據(jù)模型。數(shù)據(jù)庫管理系統(tǒng)為了保證其獨立性與可移植性,將大部分物理數(shù)據(jù)模型的實現(xiàn)工作交由系統(tǒng)自動完成,而設(shè)計者只設(shè)計索引、聚集等特殊結(jié)構(gòu)。任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(二)概念模型概念模型是對信息世
6、界的建模,它應(yīng)當(dāng)能夠全面、準(zhǔn)確地描述信息世界,是信息世界的基本概念。概念模型的表示方法很多,其中最為著名和使用最為廣泛的是P.P.Chen于1976年提出的E-R(Entity-Relationship)模型。任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(二)概念模型E-R圖通用的表示方式如下。(1)用矩形框表示實體型,在框內(nèi)寫上實體名。(2)用橢圓形框表示實體的屬性,并用無向邊把實體和屬性連接起來。(3)用菱形框表示實體間的聯(lián)系,在菱形框內(nèi)寫上聯(lián)系名,用無向邊分別把菱形框與有關(guān)實體連接起來,在無向邊旁注明聯(lián)系的類型。如果實體間的聯(lián)系也有屬性,則把屬性和菱形框也用無向邊連接起來。任務(wù)1-2掌握數(shù)據(jù)庫系
7、統(tǒng)的基本概念-(二)概念模型 圖1-2 班級學(xué)生E-R圖 圖1-3 課程學(xué)生E-R圖任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(三)數(shù)據(jù)模型的要素和種類 圖1-2 班級學(xué)生E-R圖 圖1-3 課程學(xué)生E-R圖任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(三)數(shù)據(jù)模型的要素和種類 1、數(shù)據(jù)模型的三要素(1)數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)用于描述系統(tǒng)的靜態(tài)特征,包括數(shù)據(jù)的類型、內(nèi)容、性質(zhì)及數(shù)據(jù)之間的聯(lián)系等。它是數(shù)據(jù)模型的基礎(chǔ),也是刻畫一個數(shù)據(jù)模型性質(zhì)最重要的方面。常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和關(guān)系模型(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)中任何兩個用戶不能有相同的賬戶,或者年齡的取值不能為負(fù),都屬于完整性規(guī)則。 任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(三)數(shù)據(jù)模型的要素和種類 2、常見的數(shù)據(jù)模型層次模型:用“樹”結(jié)構(gòu)來表示數(shù)據(jù)之間的關(guān)系網(wǎng)狀模型:用“圖”結(jié)構(gòu)來表示數(shù)據(jù)之間的關(guān)系關(guān)系模型:用“表”結(jié)構(gòu)(或稱關(guān)系)來表示數(shù)據(jù)之間的關(guān)系。任務(wù)1-2掌握數(shù)據(jù)庫系
9、統(tǒng)的基本概念-(四)關(guān)系模型 (1)關(guān)系(Relation)。一個關(guān)系就是一張二維表,見下表:1、關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)姓名性別出生日期專業(yè)20201061張三男1999-02-30計算機(jī)技術(shù)20201061李四女1998-12-30計算機(jī)應(yīng)用20201061王五男1998-02-09信息管理任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(四)關(guān)系模型(2)元組(Tuple)。元組也稱記錄,關(guān)系表中的每行對應(yīng)一個元組,組成元組的元素稱為分量。數(shù)據(jù)庫中的一個實體或?qū)嶓w之間的一個聯(lián)系均使用一個元組來表示(3)屬性(Attribute)。表中的一列即為一個屬性,給每個屬性取一個名稱為屬性名。屬性具有型和值兩層含義
10、:屬性的型指屬性名和屬性值域;屬性的值是指屬性具體的取值。任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(四)關(guān)系模型(4)域(Domain)。屬性的取值范圍。(5)分量(Component)。元組中的一個屬性值。(6)候選碼(Candidate key)。若關(guān)系中的某一屬性或?qū)傩越M的值能唯一標(biāo)識一個元組,且從這個屬性組中去除任何一個屬性,都不再具有這樣的性質(zhì),則稱該屬性或?qū)傩越M為候選碼(Candidate key),候選碼簡稱為碼。(7)主碼(Primary key)。若一個關(guān)系中有多個候選碼,則選定其中一個為主碼。任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(四)關(guān)系模型(10) 關(guān)系模式(Relation
11、 Schema):通數(shù)據(jù)模型一樣,數(shù)據(jù)庫也有型和值,在關(guān)系數(shù)據(jù)庫中關(guān)系模式是型,關(guān)系是值,關(guān)系模式是對關(guān)系的描述。對關(guān)系的描述一般表示為:關(guān)系名(屬性1,屬性2,屬性3,屬性n)(8)全碼(All-key)。在最簡單的情況下,候選碼只包含一個屬性;在最極端的情況下,關(guān)系模式的所有屬性是這個關(guān)系模式的候選碼,稱為全碼。全碼是候選碼的特例。(9)主屬性(Prime Attribute)和非主屬性(Non-prime Attribute)。在關(guān)系中,候選碼中的屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性。任務(wù)1-2掌握數(shù)據(jù)庫系統(tǒng)的基本概念-(五)數(shù)據(jù)庫系統(tǒng)的組成 1 數(shù)據(jù)庫(DataBas
12、e,DB)數(shù)據(jù)庫是一個長期存儲在計算機(jī)內(nèi)的、有組織的、有共享的、統(tǒng)一管理的數(shù)據(jù)集合,具有較小的冗余度、較高的數(shù)據(jù)獨立性和易擴(kuò)展性。是一個按數(shù)據(jù)結(jié)構(gòu)來存儲和管理數(shù)據(jù)的計算機(jī)軟件系統(tǒng)。任務(wù)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ù)庫的大型軟件,是用于建立、使用和維護(hù)數(shù)據(jù)庫,簡稱DBMS。它對數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。用戶通過DBMS訪問數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫管理員也通過DBMS進(jìn)行數(shù)據(jù)庫的維護(hù)工作。它提供多種功能,可使多個應(yīng)用程序和用
13、戶用不同的方法在同時或不同時刻去建立,修改和詢問數(shù)據(jù)庫。它使用戶能方便地定義和操縱數(shù)據(jù),維護(hù)數(shù)據(jù)的安全性和完整性,以及進(jìn)行多用戶下的并發(fā)控制和恢復(fù)數(shù)據(jù)庫。目前比較流行的DBMS有Oracle、Access、SQL Server、MySQL等。任務(wù)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)是一個實際可運(yùn)行的存儲、維護(hù)和應(yīng)用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng),是存儲介質(zhì)、處理對象和管理系統(tǒng)的集合體。它通常由計算機(jī)硬件、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應(yīng)用系統(tǒng)和數(shù)據(jù)庫用戶組成。任
14、務(wù)1-3 使用MySQL03任務(wù)1-3 使用MySQL-(一) MySQL安裝和配置1 下載MySQL任務(wù)1-3 使用MySQL-(一) MySQL安裝和配置2 在window平臺安裝與配置MySQL任務(wù)1-3 使用MySQL-(一) MySQL安裝和配置2 在window平臺安裝與配置MySQL任務(wù)1-3 使用MySQL-(二)啟動或停止MySQL服務(wù)2 在window平臺安裝與配置MySQL任務(wù)1-3 使用MySQL-(二)啟動或停止MySQL服務(wù)1 Window 服務(wù)管理器任務(wù)1-3 使用MySQL-(二)啟動或停止MySQL服務(wù)2 DOS命令任務(wù)1-3 使用MySQL-(三)登錄MyS
15、QL數(shù)據(jù)庫 dos命令登錄成功后界面使用MySQL 8.0 Command Line Client任務(wù)1-3 使用MySQL-(四)MySQL常用圖形化管理工具Navicat 運(yùn)行界面phpMyAdmin運(yùn)行界面任務(wù)1-3 使用MySQL-(四)MySQL常用圖形化管理工具M(jìn)ySQL Workbench運(yùn)行界面 SQLyog運(yùn)行界面THANK YOU項目2 設(shè)計商品信息管理數(shù)據(jù)庫MySQL數(shù)據(jù)庫原理及應(yīng)用目錄CONTENTS了解數(shù)據(jù)庫設(shè)計任務(wù)2-1需求分析任務(wù)2-2概念結(jié)構(gòu)設(shè)計任務(wù)2-3邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4 數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5數(shù)據(jù)庫的實施、運(yùn)行和維護(hù)任務(wù)2-6設(shè)計商品信息管理數(shù)據(jù)庫任
16、務(wù)2-7任務(wù)2-1了解數(shù)據(jù)庫設(shè)計01任務(wù)2-1 了解數(shù)據(jù)庫設(shè)計任務(wù)2-2需求分析02任務(wù)2-2需求分析-(一)需求分析的任務(wù)及目標(biāo)THE CLEANTEMPLATE需求分析的任務(wù)是通過詳細(xì)調(diào)查現(xiàn)實世界要處理的對象(組織、部門、企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計算機(jī)系統(tǒng))的工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。任務(wù)2-2需求分析-(二)需求分析的方法1 調(diào)查用戶需求的步驟2 常用調(diào)查方法任務(wù)2-3概念結(jié)構(gòu)設(shè)計03任務(wù)2-3概念結(jié)構(gòu)設(shè)計(一)概念結(jié)構(gòu)設(shè)計的方法和步驟(1)自頂向下。(2)自底向上。(3)逐步擴(kuò)張。(4)混合策略。任務(wù)2-3概念結(jié)構(gòu)設(shè)計(一)概念結(jié)構(gòu)設(shè)計的
17、方法和步驟任務(wù)2-3概念結(jié)構(gòu)設(shè)計(二)局部E-R模型設(shè)計(1) 根據(jù)需求分析所產(chǎn)生的文檔,確定每一局部結(jié)構(gòu)的范圍。每個應(yīng)用系統(tǒng)都可以分成幾個子系統(tǒng),每個子系統(tǒng)又可以進(jìn)一步劃分成更小的子系統(tǒng)。設(shè)計局部E-R模型的第一步就是選擇適當(dāng)層次的子系統(tǒng),這些子系統(tǒng)中的每一個對應(yīng)了一個局部應(yīng)用。從這些子系統(tǒng)出發(fā),設(shè)計各個局部E-R模型。分析每一局部結(jié)構(gòu)所包含的實體、屬性和相互間的聯(lián)系,設(shè)計每一局部結(jié)構(gòu)的E-R圖, 直到所有的局部E-R圖都設(shè)計完為止。(2) 針對某個局部應(yīng)用,分塊設(shè)計分E-R模型。選擇好一個局部應(yīng)用后,就要對每個局部應(yīng)用逐一設(shè)計分E-R模型,就是把一個局部應(yīng)用繼續(xù)分塊。然后參照數(shù)據(jù)流圖和數(shù)據(jù)
18、字典確定局部應(yīng)用中的實體、實體的屬性、鍵,確 定實體間的聯(lián)系。任務(wù)2-3概念結(jié)構(gòu)設(shè)計(二)局部E-R模型設(shè)計圖2-6 學(xué)生選課局部E-R圖圖2-7 教師授課局部E-R圖任務(wù)2-3概念結(jié)構(gòu)設(shè)計(三)全局E-R模型設(shè)計圖2-8 全局E-R 模型設(shè)計任務(wù)2-3概念結(jié)構(gòu)設(shè)計(三)全局E-R模型設(shè)計圖2-9 優(yōu)化后的全局E-R圖任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計04任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計(一)初始關(guān)系模式設(shè)計(1)實體轉(zhuǎn)為關(guān)系模式:實體名稱即是關(guān)系模式的名稱,實體的屬性則為關(guān)系模式的屬性,實體的主鍵就是關(guān)系模式的主鍵。圖2-10 商品E-R圖任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計(一)初始關(guān)系模式設(shè)計(2)聯(lián)系的轉(zhuǎn)換11:1聯(lián)系的
19、轉(zhuǎn)換:可以轉(zhuǎn)換一個獨立的關(guān)系,也可以與任意一端的關(guān)系模式合并圖2-11 學(xué)生與床位E-R圖任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計(一)初始關(guān)系模式設(shè)計1:n聯(lián)系的轉(zhuǎn)換:聯(lián)系不單獨對應(yīng)一個關(guān)系模式,把“1”端主鍵加入到“n”端,構(gòu)成2個關(guān)系模式圖2-12 學(xué)生與班級E-R圖任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計(一)初始關(guān)系模式設(shè)計m:n聯(lián)系的轉(zhuǎn)換:將聯(lián)系轉(zhuǎn)換為一個獨立的關(guān)系模式,其屬性為兩端實體的鍵加上聯(lián)系的屬性,兩端實體的鍵組成該關(guān)系模式的鍵或者鍵的一部分。 圖2-13 學(xué)生與圖書E-R圖任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計(二)關(guān)系模式的規(guī)范化規(guī)范化理論把關(guān)系應(yīng)滿足的規(guī)范要求稱為范式,滿足最低要求的一級叫做第一范式(1NF),在第一范
20、式的基礎(chǔ)上提出了第二范式(2NF),在第二范式的基礎(chǔ)上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF。范式的等級越高,應(yīng)滿足的約束集條件也越嚴(yán)格。通常情況下,數(shù)據(jù)規(guī)范到第三范式就能夠減少數(shù)據(jù)冗余、消除插入異常、更新異常和刪除異常。任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計(二)關(guān)系模式的規(guī)范化第一范式如果關(guān)系模式R中不包含多值屬性(每個屬性必須是不可分的數(shù)據(jù)項),則R滿足第一范式(First Normal Form),記作R1NF。第二范式第三范式如果關(guān)系模式R(U,F(xiàn)) 1NF,且R中的每個非主屬性完全函數(shù)依賴于R的某個候選碼,則R滿足第二范式(Second Normal Form),記作
21、R 2NF。如果關(guān)系模式R(U,F(xiàn)) 2NF,且每個非主屬性都不傳遞函數(shù)依賴于任何候選碼,則R滿足第三范式(Third Normal Form),記作R 3NF。任務(wù)2-5數(shù)據(jù)庫的物理設(shè)計05任務(wù)2-5數(shù)據(jù)庫的物理設(shè)計(一)關(guān)系模式存取方法選擇數(shù)據(jù)庫系統(tǒng)是多用戶共享的系統(tǒng),對同一個關(guān)系要簡歷多條存取路徑才能滿足多用戶的多種應(yīng)用要求。物理結(jié)構(gòu)設(shè)計的任務(wù)之一是根據(jù)關(guān)系數(shù)據(jù)庫管理系統(tǒng)支持的存取方法確定選擇哪些存取方法。存取方法是快速存取數(shù)據(jù)庫中數(shù)據(jù)的技術(shù)。數(shù)據(jù)庫管理系統(tǒng)一般提供索引方法和聚簇方法。1 索引方法2. 聚簇存取方法的選擇任務(wù)2-5數(shù)據(jù)庫的物理設(shè)計(二)確定數(shù)據(jù)庫的存儲結(jié)構(gòu)確定數(shù)據(jù)庫物理結(jié)
22、構(gòu)主要指確定數(shù)據(jù)的存放位置和存儲結(jié)構(gòu),包括確定關(guān)系、索引、聚簇、日志、備份等的存儲安排和存儲結(jié)構(gòu),確定系統(tǒng)配置等。確定數(shù)據(jù)的存放位置和存儲結(jié)構(gòu)要綜合考慮存取時間、存儲空間利用率和維護(hù)代價三方面的因素。這三個方面常常是相互矛盾的,因此需要進(jìn)行權(quán)衡選擇一個折中方案。(1)確定數(shù)據(jù)的存放位置(2)確定系統(tǒng)配置任務(wù)2-6數(shù)據(jù)庫的實施、運(yùn)行和維護(hù)06任務(wù)2-6數(shù)據(jù)庫的實施、運(yùn)行和維護(hù)(一)數(shù)據(jù)庫的實施數(shù)據(jù)庫實施階段包括數(shù)據(jù)的載入與應(yīng)用程序的編碼和調(diào)試一般數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)量都很大,而且數(shù)據(jù)來源于部門中的各個不同的單位,數(shù)據(jù)的組織方式、結(jié)構(gòu)和格式都與設(shè)計的數(shù)據(jù)庫系統(tǒng)有相當(dāng)?shù)牟罹唷=M織數(shù)據(jù)載入就要將各類源數(shù)據(jù)
23、從各個局部應(yīng)用中抽取出來。輸入計算機(jī),再分類轉(zhuǎn)換,最后的綜合成符合新設(shè)計的數(shù)據(jù)庫結(jié)構(gòu)的形式,輸入數(shù)據(jù)庫。任務(wù)2-6數(shù)據(jù)庫的實施、運(yùn)行和維護(hù)(二)數(shù)據(jù)庫的運(yùn)行與維護(hù)13241 數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)2 數(shù)據(jù)庫的安全性、完整性控制3數(shù)據(jù)庫信息的監(jiān)督、分析和改進(jìn)4 數(shù)據(jù)庫的重組織和構(gòu)造任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫07任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫(一)數(shù)據(jù)庫需求分析為了收集數(shù)據(jù)庫需要的信息,設(shè)計人員同商場管理人員和系統(tǒng)操作者進(jìn)行了交談,從交談記錄中,記錄了如下要點。(1)數(shù)據(jù)庫要存儲商品基本信息、員工基本信息、供貨商基本信息。(2)根據(jù)工作要求查詢數(shù)據(jù),如瀏覽商品的基本信息,查看員工基本信息等。(
24、3)根據(jù)要求完成各種數(shù)據(jù)的統(tǒng)計信息,例如查詢某位員工銷售某種商品的銷售量,查詢某種類別的商品有多少種類,查詢指定商品的供貨商。(4)數(shù)據(jù)庫管理人員可以修改數(shù)據(jù),數(shù)據(jù)庫操作人員可以查詢數(shù)據(jù)。(5)使用關(guān)系數(shù)據(jù)庫模型任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫(一)數(shù)據(jù)庫需求分析為了收集數(shù)據(jù)庫需要的信息,設(shè)計人員同商場管理人員和系統(tǒng)操作者進(jìn)行了交談,從交談記錄中,記錄了如下要點。(1)數(shù)據(jù)庫要存儲商品基本信息、員工基本信息、供貨商基本信息。(2)根據(jù)工作要求查詢數(shù)據(jù),如瀏覽商品的基本信息,查看員工基本信息等。(3)根據(jù)要求完成各種數(shù)據(jù)的統(tǒng)計信息,例如查詢某位員工銷售某種商品的銷售量,查詢某種類別的商品有多少種
25、類,查詢指定商品的供貨商。(4)數(shù)據(jù)庫管理人員可以修改數(shù)據(jù),數(shù)據(jù)庫操作人員可以查詢數(shù)據(jù)。(5)使用關(guān)系數(shù)據(jù)庫模型任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫(二)創(chuàng)建E-R模型圖2-14 商品員工E-R圖任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫(二)創(chuàng)建E-R模型圖2-15 商品供應(yīng)商E-R圖任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫(二)創(chuàng)建E-R模型圖2-16 商品與類別E-R圖任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫(二)創(chuàng)建E-R模型圖2-17 商品與倉庫E-R圖任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫(三)設(shè)計關(guān)系模式在商品信息管理系統(tǒng)全局E-R圖聯(lián)系有兩種類型:一對多聯(lián)系和多對多聯(lián)系,其中對于一對多聯(lián)系不單獨創(chuàng)建關(guān)系模式,通過
26、添加到n端建立關(guān)系模式。得到關(guān)系模式如下:商品(商品編號,商品名稱,商品單位,商品價格,類別編號)供應(yīng)商(供應(yīng)商編號,名稱,地址)類別(類別編號,類別名稱)員工(員工編號,姓名,部門,職務(wù),電話)供應(yīng)(供應(yīng)商編號,商品編號,供應(yīng)量)銷售(員工編號,商品編號,銷售量)倉庫(倉庫編號,倉庫名稱)庫存(倉庫編號,商品編號,庫存量)任務(wù)2-7設(shè)計商品信息管理數(shù)據(jù)庫(四)規(guī)范化從第一范式開始,一步步對第三步驟得到關(guān)系模式進(jìn)行規(guī)范化。最終關(guān)系模式如下。商品(商品編號,商品名稱,商品單位,商品價格,類別編號)供應(yīng)商(供應(yīng)商編號,名稱,地址)類別(類別編號,類別名稱)員工(員工編號,姓名,部門,職務(wù),電話)供
27、應(yīng)(供應(yīng)商編號,商品編號,供應(yīng)量)銷售(員工編號,商品編號,銷售量)倉庫(倉庫編號,倉庫名稱)庫存(倉庫編號,商品編號,庫存量)THANK YOU項目3 創(chuàng)建與維護(hù)MySQL數(shù)據(jù)庫MySQL數(shù)據(jù)庫原理及應(yīng)用目錄CONTENTS認(rèn)識SQL任務(wù)1了解MySQL數(shù)據(jù)庫任務(wù)2創(chuàng)建數(shù)據(jù)庫任務(wù)3打開數(shù)據(jù)庫任務(wù)4刪除數(shù)據(jù)庫任務(wù)5理解MySQL數(shù)據(jù)庫的存儲引擎任務(wù)6認(rèn)識SQL01認(rèn)識SQL1. SQL簡介結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。SQL語言1974年由
28、Boyce和Chamberlin提出,并首先在IBM公司研制的關(guān)系數(shù)據(jù)庫系統(tǒng)SystemR上實現(xiàn)。由于它具有功能豐富、使用方便靈活、語言簡潔易學(xué)等突出的優(yōu)點,深受計算機(jī)工業(yè)界和計算機(jī)用戶的歡迎。2. SQL特點風(fēng)格統(tǒng)一 高度非過程化 面向集合的操作方式以同一種語法結(jié)構(gòu)提供兩種使用方式語言簡潔,易學(xué)易用認(rèn)識SQL3. SQL語句結(jié)構(gòu)1)數(shù)據(jù)定義語言用來創(chuàng)建或刪除數(shù)據(jù)庫以及表等對象:DROP:刪除數(shù)據(jù)庫和表等對象CREATE:創(chuàng)建數(shù)據(jù)庫和表等對象ALTER:修改數(shù)據(jù)庫和表等對象的結(jié)構(gòu)2)數(shù)據(jù)操作語言用來變更表中的記錄:INSERT:向表中插入新數(shù)據(jù)UPDATE:更新表中的數(shù)據(jù)DELETE:刪除表中
29、的數(shù)據(jù)3)數(shù)據(jù)查詢語言用來查詢表中的記錄,主要包含 SELECT 命令,來查詢表中的數(shù)據(jù)。4)數(shù)據(jù)控制語言用來確認(rèn)或者取消對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更:GRANT:賦予用戶操作權(quán)限REVOKE:取消用戶的操作權(quán)限COMMIT:確認(rèn)對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更ROLLBACK:取消對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行的變更認(rèn)識SQL4. SQL的基本書寫規(guī)范1)SQL語句要以英文分號(;)結(jié)尾。2)SQL語句不區(qū)分大小寫,但為了書寫規(guī)范需要關(guān)鍵字大寫、表名的首字母大寫、其余(列名等)小寫。3)常數(shù)的書寫方式是固定的:SQL 語句中含有字符串的時候,需要像 abc 這樣,使用英文單引號將字符串括起來,用來標(biāo)識這是一個
30、字符串。SQL 語句中含有日期的時候,同樣需要使用英文單引號將其括起來。日期的格式有很多種(26 Jan 2010 或者10/01/26 等)。在 SQL 語句中書寫數(shù)字的時候,不需要使用任何符號標(biāo)識,直接寫成 1000 這樣的數(shù)字即可。4)單詞之間需要使用半角空格或者換行符進(jìn)行分隔。了解MySQL數(shù)據(jù)庫02了解MySQL數(shù)據(jù)庫1. 什么是MySQLMySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database M
31、anagement System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。2. MySQL的特點1)MySQL 是開放源代碼的數(shù)據(jù)庫 ;2)MySQL 的跨平臺性,可以在Windows、UNIX、Linux 和 Mac OS 等操作系統(tǒng)上運(yùn)行;3)價格優(yōu)勢,社區(qū)版本的 MySQL 是免費(fèi)試用的,付費(fèi)的附加功能其價格也是很便宜。4)功能強(qiáng)大且使用方便,是一個真正的多用戶、 多線程 SQL 數(shù)據(jù)庫服務(wù)器。創(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è)置數(shù)據(jù)庫名、字符集和排序規(guī)則。4)正常情況下,建議數(shù)據(jù)庫名字以英文命名,字符集選擇utf8, 排序規(guī)則選擇utf8_general_ci。在這里將商品信息管理數(shù)據(jù)庫名命名為merchandise,字符集選擇utf8,排序規(guī)則選擇utf8_general_ci,如下圖所示。設(shè)置完成之后點擊“確定”。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ù)庫之前進(jìn)行判斷,只有該數(shù)據(jù)庫目前尚不存在時才能執(zhí)行操作。此選項可以用來避免數(shù)據(jù)庫已經(jīng)存在而重復(fù)創(chuàng)建的錯誤。DEFAULT
34、CHARACTER SET:指定數(shù)據(jù)庫的字符集。指定字符集的目的是為了避免在數(shù)據(jù)庫中存儲的數(shù)據(jù)出現(xiàn)亂碼的情況。如果在創(chuàng)建數(shù)據(jù)庫時不指定字符集,那么就使用系統(tǒng)的默認(rèn)字符集。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ù)庫(注:語句要以英文分號結(jié)尾。)3)創(chuàng)建商品信息數(shù)據(jù)庫時指定字符集和排序規(guī)則指定其默認(rèn)字符集為 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 來指定當(dāng)前數(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ù)庫上點擊鼠標(biāo)右鍵,在彈出的右鍵菜單中點擊“刪除數(shù)據(jù)庫”選項。2)彈出的對話框中點擊“刪除”按鈕即可刪除選定的數(shù)據(jù)庫。刪除數(shù)據(jù)庫2. 使用DROPDATABASE語句刪除商品信息管理數(shù)據(jù)庫1)DROP DATABASE語法說明在 MySQL 中,當(dāng)需要刪除已創(chuàng)建的數(shù)據(jù)庫時,還可以使用 DROP DATABASE 語句。其語法格式為:DROP DATABASE IF EXISTS 語法說明如下:指定要刪除的數(shù)據(jù)庫名。IF EXISTS:用于防止當(dāng)數(shù)據(jù)庫不存在時發(fā)生錯誤。DROP DATABASE:刪除數(shù)據(jù)庫中的所有表格并同時刪除數(shù)據(jù)庫。使用 DR
37、OP DATABASE 命令時要非常謹(jǐn)慎,在執(zhí)行該命令后,MySQL 不會給出任何提示確認(rèn)信息。DROP DATABASE 刪除數(shù)據(jù)庫后,數(shù)據(jù)庫中存儲的所有數(shù)據(jù)表和數(shù)據(jù)也將一同被刪除,而且不能恢復(fù)。因此最好在刪除數(shù)據(jù)庫之前先將數(shù)據(jù)庫進(jìn)行備份。刪除數(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ù)等技術(shù)的實現(xiàn)方法。在Oracle和SQL Server等數(shù)據(jù)庫中只有一種存儲引擎,所有數(shù)據(jù)存儲管理機(jī)制都是一樣的。MySQL支持的存儲引擎有InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV和BLACKHOLE等。InnoDB存儲引擎:InnoDB是事務(wù)型數(shù)據(jù)庫的首選引擎,是具有提交、回滾和崩潰恢復(fù)能力的事務(wù)安全存儲引擎,支持行鎖定和外鍵約束。從MySQL 5.5.5之后,InnoDB作為默認(rèn)存
39、儲引擎。MyISAM存儲引擎:MyISAM存儲引擎是MySQL中常見的存儲引擎,曾是MySQL的默認(rèn)存儲引擎,不支持事務(wù)、外鍵約束,但訪問速度快,對事務(wù)完整性不要求,適合于以SELECT/INSERT為主的表。MEMORY存儲引擎:MEMORY存儲引擎是MySQL中一類特殊的存儲引擎。該存儲引擎使用存在于內(nèi)存中的內(nèi)容來創(chuàng)建表,每個表實際對應(yīng)一個磁盤文件,格式為.frm。這類表因為數(shù)據(jù)在內(nèi)存中,且默認(rèn)使用HASH索引,所以訪問速度非??欤坏坏┓?wù)關(guān)閉,表中的數(shù)據(jù)就會丟失。理解MySQL數(shù)據(jù)庫的存儲引擎2.存儲引擎的選擇如果要提供提交、回滾的崩潰恢復(fù)能力的事務(wù)安全能力,并要求實現(xiàn)并發(fā)控制,則In
40、noDB是一個很好的選擇。如果數(shù)據(jù)表主要用來插入和查詢記錄,則MyISAM引擎能提供較高的處理效率。如果只是臨時存放數(shù)據(jù),數(shù)據(jù)量不大,并且不需要較高的數(shù)據(jù)安全性,則可以選擇將數(shù)據(jù)保存在內(nèi)存中的Memory引擎。功能InnoDBMyISAMMemory存儲限制64TB256TBRAM支持事務(wù)支持無無空間使用高低低內(nèi)存使用高低高支持?jǐn)?shù)據(jù)緩存支持無無插入數(shù)據(jù)速度低高高支持外鍵支持無無THANK YOU項目5 查詢與維護(hù)商品信息管理數(shù)據(jù)表MySQL數(shù)據(jù)庫原理及應(yīng)用目錄CONTENTS掌握簡單數(shù)據(jù)查詢?nèi)蝿?wù)1掌握多表連接查詢?nèi)蝿?wù)2理解嵌套查詢?nèi)蝿?wù)3理解集合查詢?nèi)蝿?wù)4數(shù)據(jù)更新任務(wù)5掌握簡單數(shù)據(jù)查詢01掌握簡
41、單數(shù)據(jù)查詢1. 單表無條件數(shù)據(jù)查詢語法格式如下:SELECT FROM 在字段列名中,多個不同字段列名用英文逗號“,”分隔,SELECT語句只返回相應(yīng)字段的數(shù)據(jù)。如果要顯示所有字段,可以使用星號(*)來代替,SELECT語句會返回表的所有字段數(shù)據(jù)。掌握簡單數(shù)據(jù)查詢2. 使用WHERE子句實現(xiàn)條件查詢在 MySQL 中,如果需要有條件的從數(shù)據(jù)表中查詢數(shù)據(jù),可以使用 WHERE 關(guān)鍵字來指定查詢條件。使用 WHERE 關(guān)鍵字的語法格式如下:WHERE 查詢條件可以是:帶比較運(yùn)算符和邏輯運(yùn)算符的查詢條件帶 BETWEEN AND 關(guān)鍵字的查詢條件帶 IS NULL 關(guān)鍵字的查詢條件帶 IN 關(guān)鍵字的
42、查詢條件帶 LIKE 關(guān)鍵字的查詢條件掌握簡單數(shù)據(jù)查詢2. 使用WHERE子句實現(xiàn)條件查詢1)單一條件查詢單一條件指的是在 WHERE 關(guān)鍵字后只有一個查詢條件。2)多條件查詢在 WHERE 關(guān)鍵詞后可以有多個查詢條件,這樣能夠使查詢結(jié)果更加精確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 關(guān)鍵字可以根據(jù)一個或多個字段對查詢結(jié)果進(jìn)行分組。在分組的列上我們可以使用 COUNT, SUM, AVG,等函數(shù)。使用 GROUP BY 關(guān)鍵字的語法格式如下:GROUP BY 其中,“字段名”表示需要分組的字段名稱,多個字段時用逗號隔開。1)GROUP BY單獨使用單獨使用 GROUP BY 關(guān)鍵字時,查詢結(jié)果會只顯示每個分組的第一條記錄。2)G
44、ROUP BY 與聚合函在數(shù)據(jù)統(tǒng)計時,GROUP BY 關(guān)鍵字經(jīng)常和聚合函數(shù)一起使用。掌握簡單數(shù)據(jù)查詢5. 對查詢結(jié)果進(jìn)行排序通過條件查詢語句可以查詢到符合用戶需求的數(shù)據(jù),但是查詢到的數(shù)據(jù)一般都是按照數(shù)據(jù)最初被添加到表中的順序來顯示。為了使查詢結(jié)果的順序滿足用戶的要求,MySQL 提供了 ORDER BY 關(guān)鍵字來對查詢結(jié)果進(jìn)行排序。其語法格式如下:ORDER BY ASC|DESC語法說明如下。字段名:表示需要排序的字段名稱,多個字段時用逗號隔開。ASC|DESC:ASC表示字段按升序排序;DESC表示字段按降序排序。其中ASC為默認(rèn)值。使用 ORDER BY 關(guān)鍵字應(yīng)該注意以下幾個方面:O
45、RDER BY 關(guān)鍵字后可以跟子查詢。當(dāng)排序的字段中存在空值時,ORDER BY 會將該空值作為最小值來對待。ORDER BY 指定多個字段進(jìn)行排序時,MySQL 會按照字段的順序從左到右依次進(jìn)行排序。掌握多表連接查詢02掌握多表連接查詢1. 交叉連接多個表交叉連接時,在 FROM 后連續(xù)使用 “CROSS JOIN”或逗號“,”即可。兩種語法的返回結(jié)果是相同的,但是第一種語法是官方建議的標(biāo)準(zhǔn)寫法。交叉連接的語法格式如下:SELECT FROM CROSS JOIN WHERE子句或SELECT FROM , WHERE子句 語法說明如下:字段名:需要查詢的字段名稱。:需要交叉連接的表名。WH
46、ERE 子句:用來設(shè)置交叉連接的查詢條件。當(dāng)連接的表之間沒有關(guān)系時,我們會省略掉 WHERE 子句,這時返回結(jié)果就是兩個表的笛卡爾積,返回結(jié)果數(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è)置連接條件的方式,來移除查詢結(jié)果中某些數(shù)據(jù)行的交叉連接。簡單來說,就是利用條件表達(dá)式來消除交叉連接的某些數(shù)據(jù)行。內(nèi)連接使用INNER JOIN關(guān)鍵字連接兩張表,并使用ON子句來設(shè)置連接條件。內(nèi)連接的語法格式如下:SELECT FROM INNER JOIN ON子句語法說明如下:字段名:需要查詢的字段名稱。:需要內(nèi)連接的表名。INNER JOIN :內(nèi)連接中可以省略 INNER 關(guān)鍵字,只用關(guān)鍵字 JOIN。ON 子句:用來設(shè)置內(nèi)連接的連接條件。掌握多表連接查詢2. 內(nèi)連接當(dāng)對多個表進(jìn)行查詢時,要在 SELECT 語句后面指定字段是來源于哪一張表。因此,在多表
48、查詢時,SELECT 語句后面的寫法是“表名.列名”。另外,如果表名非常長的話,也可以給表設(shè)置別名。掌握多表連接查詢3. 自連接自連接是連接的一種用法,但并不是連接的一種類型,因為他的本質(zhì)是把一張表當(dāng)成兩張表來使用。MySQL有時在信息查詢時需要采用自連接,使用自連接時需要為表定義別名。例如查詢goods_tb表中庫存量大于棒棒糖庫存量的所有商品信息,其中棒棒糖庫存量goodsStock的值為50,采用自連接進(jìn)行查詢時,SQL語句和執(zhí)行結(jié)果如下。掌握多表連接查詢4. 外連接1)左連接左外連接又稱為左連接,使用 LEFT OUTER JOIN 關(guān)鍵字連接兩個表,并使用 ON 子句來設(shè)置連接條件。
49、左連接的語法格式如下:SELECT FROM LEFT OUTER JOIN 語法說明如下。字段名:需要查詢的字段名稱。:需要左連接的表名。LEFT OUTER JOIN:左連接中可以省略 OUTER 關(guān)鍵字,只使用關(guān)鍵字 LEFT JOIN。ON 子句:用來設(shè)置左連接的連接條件,不能省略。上述語法中,“表1”為基表,“表2”為參考表。左連接查詢時,可以查詢出“表1”中的所有記錄和“表2”中匹配連接條件的記錄。如果“表1”的某行在“表2”中沒有匹配行,那么在返回結(jié)果中,“表2”的字段值均為空值(NULL)。掌握多表連接查詢4. 外連接1)左連接采用左連接查詢商品信息和每個商品對應(yīng)的類別名稱,其
50、SQL語句和運(yùn)行結(jié)果如下。goodsName為“蘋果”的商品沒有類別名稱,因為對應(yīng)的catalogs_tb表中沒有該類別的信息,所以該條記錄只取出了goods_tb表中相應(yīng)的值,而從catalogs_tb表中取出的值為 NULL。掌握多表連接查詢4. 外連接2)右連接右外連接又稱為右連接,右連接是左連接的反向連接。使用 RIGHT OUTER JOIN 關(guān)鍵字連接兩個表,并使用 ON 子句來設(shè)置連接條件。右連接的語法格式如下:SELECT FROM RIGHT OUTER JOIN 語法說明如下。字段名:需要查詢的字段名稱。:需要右連接的表名。RIGHT OUTER JOIN:右連接中可以省略
51、 OUTER 關(guān)鍵字,只使用關(guān)鍵字 RIGHT JOIN。ON 子句:用來設(shè)置右連接的連接條件,不能省略。與左連接相反,右連接以“表2”為基表,“表1”為參考表。右連接查詢時,可以查詢出“表2”中的所有記錄和“表1”中匹配連接條件的記錄。如果“表2”的某行在“表1”中沒有匹配行,那么在返回結(jié)果中,“表1”的字段值均為空值(NULL)。掌握多表連接查詢4. 外連接2)右連接采用左連接查詢商品信息和每個商品對應(yīng)的類別名稱,其SQL語句和運(yùn)行結(jié)果如下。catName為“玩具”的類別沒有相關(guān)的商品,所以該條記錄只取出了catalogs_tb表中相應(yīng)的值,而從goods_tb表中取出的值為 NULL。理
52、解嵌套查詢03理解嵌套查詢1. 嵌套子查詢嵌套子查詢是 MySQL 中比較常用的查詢方法,通過子查詢可以實現(xiàn)多表查詢。子查詢指將一個查詢語句嵌套在另一個查詢語句中。子查詢可以在 SELECT、UPDATE 和 DELETE 語句中使用,而且可以進(jìn)行多層嵌套。在實際開發(fā)時,子查詢經(jīng)常出現(xiàn)在 WHERE 子句中。子查詢在 WHERE 中的語法格式如下:WHERE (子查詢)其中,操作符可以是比較運(yùn)算符和 IN、NOT IN、EXISTS、NOT EXISTS 等關(guān)鍵字。MySQL子查詢可以分為相關(guān)子查詢和非相關(guān)子查詢兩類。理解嵌套查詢2.非相關(guān)子查詢非相關(guān)子查詢的執(zhí)行不依賴與外部的查詢,其執(zhí)行過程
53、如下:(1)執(zhí)行子查詢,其結(jié)果不被顯示,而是傳遞給外部查詢,作為外部查詢的條件使用。(2)執(zhí)行外部查詢,并顯示整個結(jié)果。返回單值的子查詢返回列表的子查詢理解嵌套查詢3. 相關(guān)子查詢相關(guān)子查詢的執(zhí)行依賴于外部查詢。多數(shù)情況下是子查詢的WHERE子句中引用了外部查詢的表。執(zhí)行過程:(1)從外層查詢中取出一個元組,將元組相關(guān)列的值傳給內(nèi)層查詢。(2)執(zhí)行內(nèi)層查詢,得到子查詢操作的值。(3)外查詢根據(jù)子查詢返回的結(jié)果或結(jié)果集得到滿足條件的行。(4)然后外層查詢?nèi)〕鱿乱粋€元組重復(fù)做步驟1-3,直到外層的元組全部處理完畢。理解嵌套查詢3. 相關(guān)子查詢查詢goods_tb表中大于該類商品價格平均值的商品信息
54、,其SQL語句和執(zhí)行結(jié)果如下。與前面介紹過的子查詢不同,相關(guān)子查詢無法獨立于外部查詢而得到解決。該子查詢需要一個商品類別編號goodsCatId的值。而這個值是個變量,隨MySQL檢索goods_tb表中的不同行而改變。 理解集合查詢04理解集合查詢SELECT語句的查詢結(jié)果是元組的集合,所以多個SELECT語句的結(jié)果可進(jìn)行集合操作。 集合操作主要包括并操作UNION、交操作INTERSECT、差操作EXCEPT。 但需要注意的是,參加集合操作的各查詢結(jié)果的列數(shù)必須相同,且對應(yīng)的數(shù)據(jù)類型也必須相同。1. 并操作MySQL中并操作有直接的關(guān)鍵字支持,那就是UNION 和UNION ALL ,但是
55、他倆是有區(qū)別的,UNION得到的結(jié)果會把重復(fù)的元組去掉,而UNION ALL會保留所有元組。理解集合查詢2. 交操作在SQL語法定義中有交操作的關(guān)鍵字INTERSECT,但是遺憾的是MySQL并不支持,只能通過替代語句來實現(xiàn)。查詢goods_tb表中庫存大于50,價格小于8的商品信息,在支持INTERSECT關(guān)鍵字的環(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è)置主鍵自增,添加第一列數(shù)據(jù)時比較
57、容易出錯,要不斷的查看待添加的主鍵值是否與現(xiàn)有值重復(fù)。如果添加過主鍵自增,第一列可以省略,或者在增加數(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語句的結(jié)果插入表中,可實現(xiàn)數(shù)據(jù)遷移。SELECT 子句返回的是一個查詢到的結(jié)果集,INSERT語句將這個結(jié)果集插入指定表中,
60、結(jié)果集中的每行數(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)系上傳者。文件的所有權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度耕地質(zhì)量提升工程耕地指標(biāo)出讓與執(zhí)行合同3篇
- 二零二五年度公共設(shè)施蟲鼠害防治與環(huán)境衛(wèi)生管理合同4篇
- 個人勞務(wù)合同簡單范本(2024版)
- 二零二五版智能語音助手軟件采購及集成合同2篇
- 2025年新材料研發(fā)廠房抵押租賃合同3篇
- 2025版危險化學(xué)品倉儲物流購銷合同范本3篇
- 2025年節(jié)日慶典宣傳品制作合同范本2篇
- 2025年度農(nóng)業(yè)科技產(chǎn)品推廣合同范本4篇
- 2025年度廚師食材采購與供應(yīng)鏈管理合同范本4篇
- 2025版企業(yè)禮儀培訓(xùn)與文化傳播戰(zhàn)略合作伙伴合同3篇
- 2025年山東浪潮集團(tuán)限公司招聘25人高頻重點提升(共500題)附帶答案詳解
- 2024年財政部會計法律法規(guī)答題活動題目及答案一
- 2025年江西省港口集團(tuán)招聘筆試參考題庫含答案解析
- (2024年)中國傳統(tǒng)文化介紹課件
- 液化氣安全檢查及整改方案
- 《冠心病》課件(完整版)
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會考試題庫
- 公園保潔服務(wù)投標(biāo)方案
- 光伏電站項目合作開發(fā)合同協(xié)議書三方版
- 高中物理答題卡模板
- 芳香植物與芳香療法講解課件
評論
0/150
提交評論