版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
數(shù)據(jù)庫系統(tǒng)原理(復習資料)第一章數(shù)據(jù)庫系統(tǒng)概述一、識記:1)數(shù)據(jù)(Data):是描述事物的符號記錄,是指用物理符號記錄下來的、可以鑒別的信息。(P27)2)數(shù)據(jù)庫(DataBase,DB):通俗的被稱作存儲數(shù)據(jù)的倉庫。3)數(shù)據(jù)庫管理系統(tǒng)(DBMS):是專門用于建立和管理數(shù)據(jù)庫的一套軟件,介于應用程序和操作系統(tǒng)之間。4)數(shù)據(jù)庫系統(tǒng)(DBS):是指在計算機中引入數(shù)據(jù)庫技術(shù)之后的系統(tǒng)。數(shù)據(jù)管理技術(shù)發(fā)展階段:1)人工管理階段、2)文件系統(tǒng)階段、3)數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)階段,與人工管理、文件系統(tǒng)管理相比有如下特點:數(shù)據(jù)集成、數(shù)據(jù)共享性高、數(shù)據(jù)冗余度小、數(shù)據(jù)一致性、數(shù)據(jù)獨立性高P32數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu):是指數(shù)據(jù)庫系統(tǒng)是由模式、外模式和內(nèi)模式三級構(gòu)成(P34)模式:也稱為概念模式或邏輯模式,它是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖;外模式:也成為子模式或用戶模式,它是數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是與某一應用有關(guān)的邏輯表示;內(nèi)模式:也稱儲存模式,它是對數(shù)據(jù)庫中數(shù)據(jù)物理結(jié)構(gòu)和儲存方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示形式;三級模式結(jié)構(gòu)的兩層映像與數(shù)據(jù)獨立性:(1)外模式/模式映像(2)模式/內(nèi)模式映像:定義了數(shù)據(jù)庫全局邏輯結(jié)構(gòu)與物理儲存之間的對應關(guān)系(3)實現(xiàn)概念模式(模式)不受內(nèi)模式變化影響,正是這兩層映像保證了數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)能夠具有較高的邏輯獨立性和物理獨立性,使得數(shù)據(jù)的定義和描述可以從應用程序中分離出去,從而簡化了數(shù)據(jù)庫應用程序的開發(fā)。(P36)四、數(shù)據(jù)庫系統(tǒng)的運行與應用結(jié)構(gòu):目前兩種,客戶/服務器結(jié)構(gòu)、瀏覽器/服務器結(jié)構(gòu)五、數(shù)據(jù)模型:通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束三個要素組成;數(shù)據(jù)模型分類:第一類:概念層數(shù)據(jù)模型,第二類:邏輯層數(shù)據(jù)模型和物理層數(shù)據(jù)模型。概念層數(shù)據(jù)模型:是數(shù)據(jù)抽象級別的最高層,其目的是按用戶的觀點來對世界建模,通常用來抽象、表示現(xiàn)實世界的各種事物及其聯(lián)系;信息世界設計的基本概念如下:實體、屬性、碼或鍵、域、實體性、實體集、聯(lián)系;概念模型表示方法:實體性(矩形表示)、屬性(橢圓形表示)、聯(lián)系(菱形表示)邏輯層數(shù)據(jù)模型:邏輯層是數(shù)據(jù)抽象的中間層,描述數(shù)據(jù)整體的邏輯結(jié)構(gòu)。包括層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P停贿@里給予關(guān)系模型的數(shù)據(jù)庫。(P41)物理層數(shù)據(jù)模型:其描述數(shù)據(jù)在儲存介質(zhì)上的組織結(jié)構(gòu),是邏輯模型的物理實現(xiàn)。第二章關(guān)系數(shù)據(jù)庫一、關(guān)系數(shù)據(jù)庫的基本特征是使用關(guān)系數(shù)據(jù)模型組織數(shù)據(jù),這種思想源于數(shù)學。二、關(guān)系數(shù)據(jù)模型:關(guān)系模型三個組成要素,關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束。以二維表格為例,介紹關(guān)系數(shù)據(jù)庫的基本術(shù)語:表、關(guān)系、列、屬性、行、元組、分量、碼或鍵、超碼和超鍵、候選碼和候選鍵、主碼和主鍵、全碼和全鍵、主屬性、外碼或外鍵、參照關(guān)系和被參照關(guān)系、域、數(shù)據(jù)類型、關(guān)系模式、關(guān)系數(shù)據(jù)庫。(P44)關(guān)系操作集合:常用操作包括查詢操作和插入、刪除、修改操作兩大部分。關(guān)系數(shù)據(jù)語言的分類:關(guān)系代數(shù)語言、關(guān)系演算語言、以及兼兩種特點的結(jié)構(gòu)化查詢語言SQL(將在第四章詳細講解);關(guān)系代數(shù):是關(guān)系操作語言的一種傳統(tǒng)表示方式,它是集合代數(shù)為基礎發(fā)展起來的。操作包括三大要素:操作對象、操作符、操作結(jié)果;(IBM公司研制ISBL的純代數(shù)數(shù)據(jù)操作語言。)A:傳統(tǒng)的集合運算:是二目運算,具有并、差、交、笛卡爾積4種運算(P51看書理解)B:專門的關(guān)系運算:不僅涉及行,還涉及列,它可分為一元專門關(guān)系操作和二元專門關(guān)系操作;其中,一元專門關(guān)系操作包括對單個關(guān)系進行垂直分解的投影運算和進行水平分解選擇運算;二元專門關(guān)系操作則是對兩個關(guān)系進行操作,包括連接運算和除運算。專門的關(guān)系運算有:選擇、投影、連接、除;關(guān)系的完整性約束:有三類完整性約束,實體完整性約束、參照完整性約束、用戶定義完整性約束。關(guān)系模型完整性約束的檢驗:為了維護關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)的完整性,在對關(guān)系數(shù)據(jù)庫執(zhí)行插入、刪除和更新操作時,需要檢驗是否滿足上述三類完整性約束。(P56,看書進行補充)關(guān)系數(shù)據(jù)庫的規(guī)范化理論:關(guān)系模型中可能存在的冗余和異常問題:數(shù)據(jù)冗余、更新異常、插入異常、刪除異常;現(xiàn)在人們提出許多種類型的數(shù)據(jù)依賴,其中最重要的是函數(shù)依賴FD,多值依賴MVD;函數(shù)依賴和關(guān)鍵字:(P57)函數(shù)依賴:是指關(guān)系中屬性間的對應關(guān)系。根據(jù)不同性質(zhì)可分完全函數(shù)依賴、部分函數(shù)依賴、傳遞函數(shù)依賴;關(guān)鍵字:設R為任意給定關(guān)系,U為其所含的全部屬性集合,X為U的子集,若有完全函數(shù)依賴X→U,則X為R的一個候選關(guān)鍵字。九、范式與關(guān)系規(guī)范化過程:關(guān)系數(shù)據(jù)庫中的關(guān)系需要滿足一定的要求,不同程度的要求稱為不同的范式(NF)。滿足最低要求的稱為第一范式(1NF),這是最基本的范式;在第一范式的基礎上進一步滿足一些新要求的稱為第二范式(2NF);以此類推,再進一步的范式成為第三范式(3NF)。第一范式:設定R為任一給定關(guān)系,如果R中每個列與行的交點處的取值都是不可再分的基本元素,則R為第一范式。第二范式:設定R為任一給定關(guān)系,若R為1NF,且其所有非主屬性都完全函數(shù)依賴于候選關(guān)鍵字,則R為第二范式。第三范式:設定R為任一給定關(guān)系,若R為2NF,且其每一個非主屬性都不傳遞函數(shù)依賴于候選關(guān)鍵字,則R為第三范式。BCNF:為了解決3NF有時會出現(xiàn)的插入及刪除操作異常等問題,R.F.Boyce和E.F.Cold提出了第3范式的改進形式BCNF。數(shù)據(jù)庫設計(P64)數(shù)據(jù)庫設計概述數(shù)據(jù)庫生命周期:分兩個階段,數(shù)據(jù)庫分析與設計階段、數(shù)據(jù)庫實現(xiàn)與操作階段。數(shù)據(jù)庫設計的目標:滿足應用功能需求和良好的數(shù)據(jù)庫性能。數(shù)據(jù)庫設計的內(nèi)容:1)數(shù)據(jù)庫結(jié)構(gòu)設計:是針對給定的應用環(huán)境進行數(shù)據(jù)庫的模式或子模式設計,包括數(shù)據(jù)庫的概念結(jié)構(gòu)設計、邏輯結(jié)構(gòu)設計或物理結(jié)構(gòu)設計。模式定義并給出各應用程序共享的結(jié)構(gòu),是靜態(tài)的。2)數(shù)據(jù)庫行為設計:是確定數(shù)據(jù)庫用戶的行為和動作,它們通常是通過應用程序來實現(xiàn)的,由于用戶行為會是數(shù)據(jù)庫的內(nèi)容發(fā)生變化,所以行為設計是動態(tài)的。數(shù)據(jù)庫設計的方法:(1)直觀設計法;(2)規(guī)范設計法:{新奧爾良設計方法,四個階段:需求分析、概念結(jié)構(gòu)設計、邏輯結(jié)構(gòu)設計、物理結(jié)構(gòu)設計}{基于E-R模型的數(shù)據(jù)庫設計方法:1976年由P.P.S.Chen提出}{基于第三范式的設計方法}二、數(shù)據(jù)庫設計的過程:將數(shù)據(jù)庫設計分為這樣幾個階段:需求分析階段;結(jié)構(gòu)設計階段、其中包括概念結(jié)構(gòu)設計、邏輯結(jié)構(gòu)設計和物理結(jié)構(gòu)設計;行為設計階段,其包括功能設計、事務設計和程序設計;數(shù)據(jù)庫實施階段,其包括加載數(shù)據(jù)庫數(shù)據(jù)和調(diào)試運行應用程序;數(shù)據(jù)庫運行和維護階段。三、數(shù)據(jù)庫設計的基本步驟:(P67)需求分析:是數(shù)據(jù)庫設計的起點,一般分為四個步驟,確定數(shù)據(jù)庫范圍、分析數(shù)據(jù)應用過程、收集與分析數(shù)據(jù)、編寫需求分析報告;編寫需求分析報告:1)數(shù)據(jù)庫的應用功能目標2)標明不同用戶視圖范圍3)應用處理過程需求說明i:數(shù)據(jù)流程圖,其主要反映應用部門原始業(yè)務處理的工作流程ii:任務分類表,其標明不同任務的功能及使用情況iii:數(shù)據(jù)操作特征表,標明任務和數(shù)據(jù)間的聯(lián)系及不同數(shù)據(jù)的不同操作特征與執(zhí)行頻率iv:操作過程說明書,其根據(jù)數(shù)據(jù)流程圖、任務分類表和各類原始資料4)數(shù)據(jù)字典(DD),是數(shù)據(jù)庫系統(tǒng)中存儲三級結(jié)構(gòu)定義的數(shù)據(jù)庫,通常指的是數(shù)據(jù)庫系統(tǒng)中各類數(shù)據(jù)詳細描述的集合。5)數(shù)據(jù)量:根據(jù)數(shù)據(jù)分類表中的靜態(tài)數(shù)據(jù)量和操作特征表中的動態(tài)數(shù)據(jù)量,進行統(tǒng)計計算,求出數(shù)據(jù)總量。6)數(shù)據(jù)約束四、概念結(jié)構(gòu)設計設計任務是在需求分析報告的基礎上,按照特定的方法設計滿足應用需求的用戶信息結(jié)構(gòu),該信息結(jié)構(gòu)通常稱為概念模型。邏輯結(jié)構(gòu)設計的目標是將概念模型轉(zhuǎn)換為等價的、并為特定DBMS所支持數(shù)據(jù)模型的結(jié)構(gòu)。數(shù)據(jù)庫邏輯模型一般由層次、網(wǎng)狀、關(guān)系數(shù)據(jù)模型表示。(P71)邏輯結(jié)構(gòu)設計的輸入與輸出信息邏輯結(jié)構(gòu)設計的步驟六、物理設計是指對于一個給定的數(shù)據(jù)庫邏輯結(jié)構(gòu),研究并構(gòu)造物理結(jié)構(gòu)的過程,其具體任務主要是確定數(shù)據(jù)庫在存儲設備上的存儲結(jié)構(gòu)及存取方法,因DBMS的不同還可能包括建立索引和聚焦,以及物理塊大小、緩沖區(qū)個數(shù)和大小、數(shù)據(jù)壓縮的選擇等。數(shù)據(jù)庫實施實施階段主要包括:加載數(shù)據(jù)、應用程序設計和數(shù)據(jù)庫試運行。(P72)七、數(shù)據(jù)庫運行和維護系統(tǒng)維護中最困難的工作是數(shù)據(jù)庫重組和重構(gòu)。重組適當空間利用率和存取效率下降時進行的,它并不改變數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu),只是利用DBMS提供的設施調(diào)整數(shù)據(jù)庫中的數(shù)據(jù)的存儲位置。重構(gòu)是指部分修改數(shù)據(jù)庫的邏輯結(jié)構(gòu)或物理結(jié)構(gòu)。第三節(jié)關(guān)系數(shù)據(jù)庫設計方法一、關(guān)系數(shù)據(jù)庫:是一類采用關(guān)系模型作為邏輯數(shù)據(jù)模型的數(shù)據(jù)庫系統(tǒng),它的設計過程遵從數(shù)據(jù)庫設計基本步驟:需求分析、概念結(jié)構(gòu)設計、邏輯結(jié)構(gòu)設計、物理結(jié)構(gòu)設計、數(shù)據(jù)庫實施、數(shù)據(jù)庫的運行和維護。二、關(guān)系數(shù)據(jù)庫設計過程與各級模式:在邏輯設計階段采用E-R圖轉(zhuǎn)換成具體數(shù)據(jù)庫產(chǎn)品支持的關(guān)系數(shù)據(jù)模型,形成數(shù)據(jù)庫邏輯模式,然后根據(jù)用戶處理的要求、安全性的考慮,在基本表的基礎上再建立必要的視圖,形成數(shù)據(jù)的外模式;在物理結(jié)構(gòu)的設計階段,根據(jù)關(guān)系數(shù)據(jù)庫管理系統(tǒng)的特點和處理的需要,進行物理存儲安排、建立索引,形成數(shù)據(jù)庫內(nèi)模式,關(guān)系數(shù)據(jù)庫各級模式如圖:概念結(jié)構(gòu)設計方法:通常采用自頂向下法,通過兩個步驟完成概念設計,即首先建立局部信息結(jié)構(gòu),然后將局部信息結(jié)構(gòu)合成為全局信息結(jié)構(gòu)并優(yōu)化。E-R圖的表示方法i)實體性,用矩形表示;ii)屬性,用橢圓形表示;iii)聯(lián)系,用菱形表示。兩個實體型之間的聯(lián)系:①一對一聯(lián)系(1:1);②一對多聯(lián)系(1:N)③多對多聯(lián)系(M:N)兩個以上的實體型之間的聯(lián)系:(P75)也存在一對一;一對多;多對多;單個實體型內(nèi)的聯(lián)系:同一個實體集內(nèi)各實體之間也可以存在一對一,一對多,多對多的聯(lián)系。局部信息結(jié)構(gòu)設計:根據(jù)需求分析報告中標明的不同用戶視圖范圍所建立的滿足該范圍內(nèi)用戶需求的信息結(jié)構(gòu)稱為局部信息結(jié)構(gòu)。局部信息結(jié)構(gòu)設計步驟如下:(P77看實例演示)(1)確定局部范圍(2)選擇實體(3)選擇實體的關(guān)鍵字屬性(4)確定實體間聯(lián)系(5)確定實體的屬性6、全局信息結(jié)構(gòu)設計:是將上述產(chǎn)生的所有局部信息結(jié)構(gòu)合并成為一個全局信息結(jié)構(gòu)。合并過程是一個不斷發(fā)現(xiàn)和解決沖突的過程,通常,各局部E-R圖之間的沖突主要表現(xiàn)在三個方面:屬性沖突、命名沖突、結(jié)構(gòu)沖突。(P79看具體理解)(1)屬性沖突:屬性域沖突和屬性取值單位沖突;(2)命名沖突:同名異義和異名同義;(3)結(jié)構(gòu)沖突:i)同一對象在一個局部E-R圖中作為實體,而在另一個局部E-R圖中作為屬性ii)同一個實體在不同的E-R圖中屬性個數(shù)和類型不同iii)實體之間的聯(lián)系在不同的E-R圖中是不同的類型三、邏輯結(jié)構(gòu)設計方法邏輯結(jié)構(gòu)設計任務是把概念結(jié)構(gòu)設計產(chǎn)生的概念模型轉(zhuǎn)換為具體的DBMS所支持的邏輯數(shù)據(jù)模型,也就是導出特定的DBMS可以處理的數(shù)據(jù)庫邏輯結(jié)構(gòu)(數(shù)據(jù)庫的模式和外模式),這些模式在功能、性能、完整性和一致性約束方面滿足應用要求。那么在關(guān)系數(shù)據(jù)庫設計中,邏輯結(jié)構(gòu)設計的任務就是把概念結(jié)構(gòu)設計階段已設計好的E-R圖轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫管理系統(tǒng)所支持的關(guān)系模型,通常包括以下三項工作:1.E-R圖向關(guān)系模型的轉(zhuǎn)換2.數(shù)據(jù)模型的優(yōu)化3.設計用戶子模式四、物理設計方法(P81看實例講解)物理設計的主要任務是通過對關(guān)系建立索引和聚集來實現(xiàn)與應用相關(guān)數(shù)據(jù)的邏輯連接和物理聚集,以改善對數(shù)據(jù)庫的存取效率。建立索引(通常有動態(tài)和靜態(tài)兩種)建立聚集(聚集是將相關(guān)數(shù)據(jù)集中存放的物理存儲技術(shù),借以提高I/O的數(shù)據(jù)命中率而改善存取速度,其功能由具體的DBMS所提供)數(shù)據(jù)聚集結(jié)構(gòu)的一種有效方式--塊結(jié)構(gòu)方式。SQL與關(guān)系數(shù)據(jù)庫基本操作關(guān)系數(shù)據(jù)庫各種基本操作的SQL語句,包括數(shù)據(jù)定義、數(shù)據(jù)更新、數(shù)據(jù)查詢、視圖使用。SQL概述:SQL是1974年由Boyce和Chamberlin提出;SQL的特點:1)SQL不是某個特定的數(shù)據(jù)庫供應商專有的語言。幾乎所有重要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL,所以掌握SQL可以幫助用戶與幾乎所有的關(guān)系數(shù)據(jù)庫進行交互。SQL簡單易學。它的語句全都是由具有很強的描述性的英語單詞所組成,而且這些單詞的數(shù)目不多。SQL盡管看上去很簡單,但它實際上是一種強有力的語言,靈活使用其語言元素,可以進行非常復雜和高級的數(shù)據(jù)庫操作。SQL的組成:SQL是集數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制四大功能為一體。核心包括以下幾個部分:數(shù)據(jù)定義語言(DDL):數(shù)據(jù)定義語言包括主要SQL語句有以下三個:CREATE:用于創(chuàng)建數(shù)據(jù)庫或數(shù)據(jù)庫對象ALTER:用于對數(shù)據(jù)庫或數(shù)據(jù)庫對象進行修改DROP:用于刪除數(shù)據(jù)庫或數(shù)據(jù)庫對象數(shù)據(jù)操縱語言(DML):主要用于操縱數(shù)據(jù)庫中各種對象,特別是檢索和修改數(shù)據(jù)。主要包括語句如下:SELECT:用于從表或視圖中檢索數(shù)據(jù),其是數(shù)據(jù)庫中使用最為頻繁的SQL語句之一。INSERT:用于將數(shù)據(jù)插入到表或視圖中。UPDATE:用于修改表或視圖中的數(shù)據(jù),其即可修改表或視圖中一行數(shù)據(jù),也可同時修改多行或全部數(shù)據(jù)。DELETE:用于從表和視圖中刪除數(shù)據(jù),其中可根據(jù)條件刪除指定的數(shù)據(jù)。數(shù)據(jù)控制語言(DCL):主要用于安全管理,例如確定哪些用戶可以查看或修改數(shù)據(jù)庫中的數(shù)據(jù),主要包括以下SQL語句:GRANT:用于授予權(quán)限,可把語句許可或?qū)ο笤S可的權(quán)限授予其他用戶和角色。REVOKE:用于收回權(quán)限,其功能與GRANT相反,但不影響該用戶或角色從其他角色中作為成員繼承許可權(quán)限。嵌入式和動態(tài)SQL規(guī)則:規(guī)則規(guī)定了SQL語句在高級程序設計語言中使用的規(guī)范方法,以便適應較為復雜的應用。SQL調(diào)用和會話規(guī)則:SQL調(diào)用包括SQL例程和調(diào)用規(guī)則,以便提高SQL的靈活性、有效性、共享性以及使用SQL具有更多的高級語言的特征。SQL會話規(guī)則則可使應用程序連接到多個SQL服務器中的某個,并與之交互。MySQL預備知識目前,使用MySQL數(shù)據(jù)庫管理系統(tǒng)構(gòu)建各種信息管理系統(tǒng)或互聯(lián)網(wǎng)網(wǎng)站的應用環(huán)境主要有如下構(gòu)架方式:LAMP,Linux作為操作系統(tǒng),Apache作為Web服務器,MySQL作為數(shù)據(jù)庫管理系統(tǒng),PHP、Perl或Python語言作為服務器端腳本解釋器。WAMP,Windows作為操作系統(tǒng),Apache作為Web服務器,MySQL作為數(shù)據(jù)庫管理系統(tǒng),PHP、Perl或Python語言作為服務器端腳本解釋器。MySQL中的SQL(P87)MySQL作為一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),遵循SQL標準,提供了對數(shù)據(jù)定義語言DDL,數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL、并且同樣支持關(guān)系數(shù)據(jù)庫的三級模式結(jié)構(gòu)。如圖MySQL在SQL標準的基礎上增加了部分擴展語言要素:包括常量、變量、運算符、表達式、函數(shù)、流程控制語句和注釋。常量:是指在程序運行過程中值不變的量,也稱為字面值或標量值。常量的使用格式取決于值的數(shù)據(jù)類型,可分為字符串常量、數(shù)值常量、十六進制常量、時間日期常量、位字段值、布爾值和NULL值。變量:用于臨時存儲數(shù)據(jù),變量有名字和數(shù)據(jù)類型兩個屬性。其中變量的名字用于標識變量,變量的數(shù)據(jù)類型用于確定變量中存儲數(shù)值的格式和可執(zhí)行的運算。在MySQL中,變量分為用戶變量和系統(tǒng)變量,在使用時,用戶變量前常添一個符號“@”,用于將其和列名區(qū)分開;而大多數(shù)系統(tǒng)變量應用于其他SQL語句時,必須在系統(tǒng)變量名前加兩個“@”運算符(P88)表達式:表達式是常量、變量、列名、復雜計算、運算符、函數(shù)的集合。內(nèi)置函數(shù):●數(shù)學函數(shù),例如ABS()函數(shù)、SORT()函數(shù)●聚合函數(shù),例如COUNT()函數(shù)●字符串函數(shù),例如ASCII()函數(shù)、CHAR()函數(shù)●日期和時間函數(shù),例如NOW()函數(shù)、YEAR()函數(shù)●加密函數(shù),例如ENCODE()函數(shù)、ENCRYPT()函數(shù)●控制流程函數(shù),例如IF()函數(shù)、IFNULL函數(shù)●格式化函數(shù),例如FORMAT()函數(shù)●類型轉(zhuǎn)換函數(shù),例如CAST()函數(shù)●系統(tǒng)信息函數(shù),例如USER()函數(shù)、VERSION()函數(shù)四、數(shù)據(jù)定義SQL的數(shù)據(jù)定義功能包括數(shù)據(jù)庫模式定義、表定義、索引定義和視圖定義。(P89)㈠數(shù)據(jù)庫模式定義:包含數(shù)據(jù)庫的創(chuàng)建、選擇、修改、刪除、查看等操作。創(chuàng)建數(shù)據(jù)庫,可以使用CREATEDATABASE或CREATESCHEMA。選擇數(shù)據(jù)庫,使用USE語句,指定某個數(shù)據(jù)庫為當前數(shù)據(jù)庫之后,才能對該數(shù)據(jù)庫及其存儲的數(shù)據(jù)對象進行各種操作。修改數(shù)據(jù)庫,可以使用ALTERDATABASE或ALTERSCHEMA,來修改已被創(chuàng)建的數(shù)據(jù)庫的相關(guān)參數(shù)。刪除數(shù)據(jù)庫,可以使用DROPDATABASE或DROPSCHEMA。查看數(shù)據(jù)庫,可以使用SHOWDATABASE或SHOWSCHEMA。可選項“LIKE”關(guān)鍵字用于匹配指定的數(shù)據(jù)庫名稱,可選項“WHERE”從句用于指定數(shù)據(jù)庫名稱查詢范圍的條件。㈡表定義:只有成功創(chuàng)建數(shù)據(jù)庫之后,才能在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表,數(shù)據(jù)表是關(guān)系數(shù)據(jù)庫中最重要、最基本的數(shù)據(jù)對象,也是數(shù)據(jù)庫存儲的基本單位。創(chuàng)建表,MySQL使用CREATETABLE語句創(chuàng)建表。該語法主要由表的創(chuàng)建定義、表選項、和分區(qū)選項等內(nèi)容構(gòu)成。臨時表與持久表,帶TEMPORARY為臨時表,不帶為持久表數(shù)據(jù)類型,主要有數(shù)值類型、布爾型、日期和時間類型、字符串類型、空間數(shù)據(jù)類型等。關(guān)鍵字AUTO_INCREMENT指定默認值NULL值,指沒有值或缺值。主鍵,通過PRIMARYKEY關(guān)鍵字來指定,主鍵值必須唯一,且一定要為NOTNULL。2.更新表,為了實現(xiàn)數(shù)據(jù)庫表的規(guī)范化設計的目的,可以使用ALTERTABLE語句來更改原有表的結(jié)構(gòu),有以下幾個子句:1)ADD[COLUMN]子句,增加新列,也可增加多個列。也可在ALTERTABLE下ADDPRIMARYKEY、ADDINDEX和ADDFOREIGNKEY為原表添加一個主鍵、索引和外鍵。2)CHANGE[COLUMN]子句,修改制定列的名稱和數(shù)據(jù)類型,且在ALTERTABLE下同時放入多個CHANGE[COLUMN]子句。3)ALTER[COLUMN]子句,修改或刪除指定列的默認值。4)MODIFY[COLUMN]子句,與ALTER[COLUMN]不同的是,只是修改列的數(shù)據(jù)類型,不會干涉列名。5)DROP[COLUMN]子句,用于卸除多余的列,一旦卸除列,原本存儲在該列的一切內(nèi)容都會跟著被卸除。6)RENAME[COLUMN]子句,為表重新賦予一個表名。3.重命名表,除了前面ALTERTABLE語句,也可以直接用RENAMETABLE進行更改表的名字。4.刪除表,通過DROPTABLE語句實現(xiàn),但操作者必須有該命令權(quán)限,刪除表時,數(shù)據(jù)和分區(qū)信息均會被刪除,但權(quán)限不會刪除。5.查看表,1)顯示表的名稱,使用SHOWTABLES語句;2)顯示表的結(jié)構(gòu),使用SHOWCOLUMNS語句。五、索引定義索引,就是DBMS根據(jù)表中的一列或若干列按照一定順序建立的列值與記錄行之間的對應關(guān)系表,因而索引實質(zhì)上是一張描述索引列值與原表中記錄行之間一一對應關(guān)系的有序表。索引是提高數(shù)據(jù)文件訪問效率的有效方法,也存在弊端:1)索引是以文件的形式存儲的,DBMS會將一個表的所有索引保存在同一個索引文件中,索引文件需要占用磁盤空間;2)索引在提高查詢速度的同時,會降低更新表的速度。索引在邏輯上通常包含以下幾類:普通索引(INDEX),通常使用關(guān)鍵字INDEX或KEY唯一性索引(UNIQUE),索引列的所有值都只能出現(xiàn)一次主鍵(PRIMARYKEY),主鍵是一種唯一性索引,創(chuàng)建主鍵時,必須指定關(guān)鍵字PRIMARYKEY,且不能有空值。實際使用中,索引通常索引通常被創(chuàng)建程單列索引和組合索引。索引的創(chuàng)建1.使用CREATEINDEX語句創(chuàng)建索引,但該句不能創(chuàng)建主鍵。語法格式:CREATE[UNIQUE]INDEXindex_nameONtbl_name(index_col_name...)關(guān)鍵字:ASC(升序)和DESC(降序),默認時為ASC使用CREATETABLE語句創(chuàng)建索引,索引可以在創(chuàng)建表的同時被創(chuàng)建。使用ALTERTABLE語句創(chuàng)建索引,在使用ALTERTABLE語句修改表的同時,可以向已有的表中添加索引。(語法項P100)索引的查看,可以使用SHOWINDEX語句索引的刪除,可以使用DROPINDEX或ALTERINDEX語句來刪除。數(shù)據(jù)更新(P102)數(shù)據(jù)更新在SQL中三類相應語句,插入數(shù)據(jù)(INSERT)、修改數(shù)據(jù)(UPDATE)、刪除數(shù)據(jù)(DELETE)㈠插入數(shù)據(jù)_(詳細看書)使用INSERT...VALUES語句插入單行或多行元組數(shù)據(jù)語法格式:INSERT[INTO]tbl_name[(col_name,…)]{VALUES|VALUE}({expr|DEFAULT},…),(…),…語法中:1)”tbl_name”指定欲被插入數(shù)據(jù)的表名”col_name”指定需要插入數(shù)據(jù)的列名列表通過關(guān)鍵字”VALUES”或”VALUE”引導的子句,其包含各列需要插入的數(shù)據(jù)單.”expr”表示常量、變量或一個表達式,也可以是空值NULL,其值的數(shù)據(jù)類型要與列的數(shù)據(jù)類型一致。關(guān)鍵字“DEFAULT”即用于指定此列值為該列的默認值,前提是該列之前已經(jīng)明確指定了默認值,否則插入語句會出錯。使用INSERT...SET語句插入部分列值數(shù)據(jù)可以使用INSERT...SET語句直接給表中的某(些)列指定對應的列值,既要插入數(shù)據(jù)的列名在SET子句中指定,這種方式更靈活,語法格式如下:INSERT[INTO]tbl_nameSETcol_name={expr|DEFAULT},…使用INSERT...SELECT語句插入子查詢數(shù)據(jù)子查詢不僅可以嵌套在SELECT語句中,用于構(gòu)造父查詢的條件,也可以嵌套在INSERT語句中,用于生成要批量插入的數(shù)據(jù)。語法格式:INSERT[INTO]tbl_name[(col_name,…)]SELECT…㈡刪除數(shù)據(jù)在MySQL中,可以使用DELETE語句刪除表中的一行或多行數(shù)據(jù),語法格式如下:DELETEFROMtbl_name[WHEREwhere_condition][ORDERBY…][LIMITrow_count]㈢修改數(shù)據(jù)可以使用UPDATE語句來修改更新一個表中的數(shù)據(jù),實現(xiàn)對表中行的列數(shù)據(jù)進行修改,語法格式如下:UPDATEtbl_nameSETcol_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]…[WHEREwhere_condition][ORDERBY…][LIMITrow_count]數(shù)據(jù)查詢(P105)數(shù)據(jù)查詢是SQL語言的核心功能,其用途是從數(shù)據(jù)庫的一張或多張表中檢索出滿足條件的數(shù)據(jù)信息。SQL是提供SELECT語句進行數(shù)據(jù)查詢,該功能強大、使用靈活,數(shù)學理論基礎是關(guān)系數(shù)據(jù)模型中對表對象的一組關(guān)系運算,既選擇、投影和連接。㈠SELECT語句使用SELECT可以在需要時從數(shù)據(jù)庫中快捷方便的檢索、統(tǒng)計或輸出數(shù)據(jù)。該語句的執(zhí)行過程是從數(shù)據(jù)庫中選取匹配的特定行和列,并將這些數(shù)據(jù)組織成一個結(jié)果集,然后以一張臨時表的形式返回。SELECT語法格式如下:SELECT[ALL|DISTINCT|DISTINCTROW]seiect_expr[,select_expr…]FROMtable_references[WHEREwhere_condition][GROUPBY{col_name|expr|position}[ASC|DESC],…[WITHROLLUP]][HAVINGwhere_condition][ORDERBY{col_name|expr|position}[ASC|DESC],…][LIMIT{[offset,]row_count|row_countOFFSEToffset}]此語法結(jié)構(gòu)中,SELECT子句用于指定輸出字段;FROM子句用于指定數(shù)據(jù)的來源;WHERE子句用于指定數(shù)據(jù)的選擇條件;ORDERBY子句用于對查詢的結(jié)果進行排序。在這些子句中,SELECT子句和FROM子句是必需的,其他子句都是可選的,并且在SELECT語句的使用中,所有被添加選用的子句必須依照SELECT語句的語法格式所羅列的順序來寫。此外,在SELECT語句的語法結(jié)構(gòu)中,三個關(guān)鍵字“ALL”“DISTINCT”“DISTINCTROW”為可選項,用于指定是否應返回結(jié)果集中的重復行。㈡列的選擇與指定在SELECT語句中,語法項“select_expr”主要用于指定需要查詢的內(nèi)容,其指定的方法有以下幾種:選擇指定的列(P107詳細)選擇一個或多個表中的某個或某些列作為SELECT語句的查詢列。若查詢列有多個,則各列名之間需要用逗號進行分隔,且查詢結(jié)果返回時,結(jié)果集中各列的次序是依照SELECT語句中指定列的次序給出的;若查詢一個表中所有列,則可在SELECT語句指定列的位置上直接使用星號“*”通配符,而不必逐個列出所有列名,此時結(jié)果集中各列的次序一般是這些列在表定義中出現(xiàn)的次序。另外,列名的指定可以采用直接給出該列的名稱的方式,也可以使用完全限定的列名方式,既“tbl_name.col_name”定義并使用列的別名在系統(tǒng)輸出查詢結(jié)果集中某些列或所有列的名稱時,若希望這些列的名稱顯示為自定義的列名,而非原表中的列名,則可以在SELECT語句中添加AS子句到指定列名之后,以此來修改查詢結(jié)果集中列的別名。其具體使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拆封涼臺合同范例
- 承包國外裝修合同范例
- 數(shù)碼監(jiān)控采購合同范例
- 房屋催收合同范例
- 施工簡易合同范例
- 買房合同范例集合六篇
- 新疆租房合同模板
- 技術(shù)企業(yè)員工合同范例
- 廢舊鋁板回收合同模板
- 包子店加盟簽約合同模板
- 以人民為中心
- 2024年盾構(gòu)機電纜行業(yè)分析報告及未來發(fā)展趨勢
- 運維培訓課件
- 慢性咳嗽中醫(yī)護理宣教
- 伐檀課件教案
- 供應鏈中心組織架構(gòu)
- 小學教育中的體驗式學習方法
- 《機房技術(shù)培訓》課件
- 裝載機操作安全規(guī)程培訓
- 透析中低血壓的預防及防治
- Part1-2 Unit5 Ancient Civilization教案-【中職專用】高一英語精研課堂(高教版2021·基礎模塊2)
評論
0/150
提交評論