MySQL數(shù)據(jù)庫基礎(chǔ)實例教程整本書課件完整版電子教案全套課件最全教學(xué)教程ppt(最新)_第1頁
MySQL數(shù)據(jù)庫基礎(chǔ)實例教程整本書課件完整版電子教案全套課件最全教學(xué)教程ppt(最新)_第2頁
MySQL數(shù)據(jù)庫基礎(chǔ)實例教程整本書課件完整版電子教案全套課件最全教學(xué)教程ppt(最新)_第3頁
MySQL數(shù)據(jù)庫基礎(chǔ)實例教程整本書課件完整版電子教案全套課件最全教學(xué)教程ppt(最新)_第4頁
MySQL數(shù)據(jù)庫基礎(chǔ)實例教程整本書課件完整版電子教案全套課件最全教學(xué)教程ppt(最新)_第5頁
已閱讀5頁,還剩295頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章數(shù)據(jù)庫基礎(chǔ)知識項目知識要點與目標(biāo)項目知識要點知識能力目標(biāo)學(xué)時任務(wù)1 了解數(shù)據(jù)庫的基礎(chǔ)知識1 數(shù)據(jù)與數(shù)據(jù)庫2 數(shù)據(jù)庫技術(shù)的發(fā)展3 數(shù)據(jù)庫管理系統(tǒng)(DBMS)4 數(shù)據(jù)庫系統(tǒng)的組成5 結(jié)構(gòu)化查詢語言SQL6 常見的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)任務(wù)2 安裝與配置MySQL數(shù)據(jù)庫1 MySQL服務(wù)器安裝與配置2 連接與斷開服務(wù)器【典型工作任務(wù)】安裝與配置MySQL數(shù)據(jù)庫【技能要求】:1 MySQL的安裝和配置2 MySQL運行環(huán)境測試【知識要求】:1 數(shù)據(jù)庫管理系統(tǒng)組成2 服務(wù)器連接、啟動和運行2項目實訓(xùn)安裝MySQL數(shù)據(jù)庫2數(shù)據(jù)庫基礎(chǔ)知識數(shù)據(jù)狹義:數(shù)值數(shù)據(jù)廣義:文字、聲音、圖形等一切能被計算機接收且能被

2、處理的符號大量、海量數(shù)據(jù)庫存儲大量數(shù)據(jù),方便檢索和訪問保持?jǐn)?shù)據(jù)信息的一致、完整共享和安全通過組合分析,產(chǎn)生新的有用信息特點數(shù)據(jù)庫管理系統(tǒng)(軟件)管理大量的、持久的、可靠的、共享的數(shù)據(jù)的工具數(shù)據(jù)管理技術(shù)的發(fā)展階段人工管理階段-文件系統(tǒng)階段 - 數(shù)據(jù)庫管理數(shù)據(jù)管理技術(shù)的發(fā)展階段-沒有專用的軟件對數(shù)據(jù)進行管理。-數(shù)據(jù)的組織方式必須由程序員自行設(shè)計與安排。-只有程序的概念而沒有文件的概念、數(shù)據(jù)面向應(yīng)用, 也就是一組數(shù)據(jù)只能對應(yīng)一個程序。數(shù)據(jù)管理技術(shù)的發(fā)展階段文件系統(tǒng)的三個缺陷:數(shù)據(jù)冗余性、數(shù)據(jù)不一致性、數(shù)據(jù)聯(lián)系弱。數(shù)據(jù)管理技術(shù)的發(fā)展階段數(shù)據(jù)庫 訂單 客戶 產(chǎn)品 產(chǎn)品數(shù)據(jù)庫表數(shù)據(jù)庫就是“數(shù)據(jù)”的“倉庫”

3、數(shù)據(jù)庫由表、關(guān)系以及操作對象組成數(shù)據(jù)存放在表中數(shù) 據(jù) 表存儲過程視 圖. 所謂數(shù)據(jù)庫(Database, DB),是將數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲,具有較小的冗余度,較高的數(shù)據(jù)獨立性和易擴展性,并可為各種用戶共享的數(shù)據(jù)集合。列行(記錄)關(guān)系型數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫關(guān)系模型使用的存儲結(jié)構(gòu)是多個二維表格,表中每一行稱為一條記錄,用來描述一個對象的信息;每一列稱為一個字段,用來描述對象的一個屬性。數(shù)據(jù)表于數(shù)據(jù)庫之間存在相應(yīng)的關(guān)聯(lián),這些關(guān)聯(lián)將用來查詢相關(guān)的數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)馬蘭A004楊可A003劉開泰B008李新愛B007數(shù)據(jù)庫檢索數(shù)據(jù)插入數(shù)據(jù)更新數(shù)據(jù)刪除數(shù)據(jù)數(shù)據(jù)庫管理系統(tǒng)-DBMS 數(shù)據(jù)庫管

4、理系統(tǒng)(DBMS-DataBase Management System )對收集到的大量數(shù)據(jù)進行整理、加工、歸并、分類、計算、存儲等處理,產(chǎn)生新的數(shù)據(jù),以便反映事物或現(xiàn)象的本質(zhì)和特征及其內(nèi)在聯(lián)系。數(shù)據(jù)庫系統(tǒng)的基本概念 數(shù)據(jù)庫服務(wù)器響應(yīng)和提供數(shù)據(jù)應(yīng)用程序客戶端操作和查詢數(shù) 據(jù) 庫應(yīng)用程序作用:響應(yīng)操作并顯示結(jié)果、向數(shù)據(jù)庫請求數(shù)據(jù)要求:美觀、操作簡單方便數(shù)據(jù)庫作用:存儲數(shù)據(jù)、檢索數(shù)據(jù)、生成新的數(shù)據(jù)要求:統(tǒng)一、安全、性能等數(shù)據(jù)庫應(yīng)用系統(tǒng)數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(Database System, DBS)一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶結(jié)構(gòu)組成結(jié)構(gòu)化查詢語言SQL

5、2結(jié)構(gòu)化查詢語言SQL(Structured Query Language)SQL語言是用于關(guān)系數(shù)據(jù)庫查詢的結(jié)構(gòu)化語言,最早由Boyce和Chambedin在1974年提出,稱為SEQUEL語言。1976年,IBM公司的San Jose研究所在研制關(guān)系數(shù)據(jù)庫管理系統(tǒng)System R時修改為SEQUEL2,即目前的SQL語言。SQL語言集數(shù)據(jù)查詢(data query)、數(shù)據(jù)操縱(data manipulation)、數(shù)據(jù)定義(data definition)和數(shù)據(jù)控制(data control)功能于一體,充分體現(xiàn)了關(guān)系數(shù)據(jù)語言的特點和優(yōu)點。主要特點包括:(1)綜合統(tǒng)一 (2)高度非過程化(3

6、)面向集合的操作方式(4)以同一種語法結(jié)構(gòu)提供兩種使用方式(5)語言簡潔,易學(xué)易用大數(shù)據(jù)時代的數(shù)據(jù)庫管理系統(tǒng)SQL-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)不同的角色(開發(fā)者,用戶,數(shù)據(jù)庫管理員)使用相同的語言。不同的RDBMS使用統(tǒng)一標(biāo)準(zhǔn)的語言。SQL使用一種高級的非結(jié)構(gòu)化查詢語言。堅持ACID準(zhǔn)則(原子性,一致性,隔離性,持久性),NoSQL-非關(guān)系性數(shù)據(jù)庫采用Key-value方式存儲數(shù)據(jù)。采取最終一致性原則,更加適合互聯(lián)網(wǎng)數(shù)據(jù),但這也可能導(dǎo)致數(shù)據(jù)丟失。NewSQL-結(jié)合SQL和NoSQL 將SQL的ACID保證與NoSQL的可擴展性和高性能相結(jié)合,目前大多數(shù)NewSQL數(shù)據(jù)庫都是專有軟件或僅

7、適用于特定場景,這顯然限制了新技術(shù)的普及和應(yīng)用。 數(shù)據(jù)庫產(chǎn)品分類圖數(shù)據(jù)庫流行排行榜Oracle、MySQL、SQL Server排前三位,其流行度遠遠超過其他數(shù)據(jù)庫。在非關(guān)系型數(shù)據(jù)庫中,比較流行的有MongoDB,Elasticsearch,Redis等。時下流行的DBMS簡介OracleOracle公司的產(chǎn)品,世界上最好的數(shù)據(jù)庫系統(tǒng)“關(guān)系-對象”型數(shù)據(jù)庫支持70多種操作系統(tǒng),配置、管理和維護復(fù)雜主要滿足對銀行、金融、保險等企業(yè)、事業(yè)開發(fā)大型數(shù)據(jù)庫需求MySQL瑞典MySQLAB公司開發(fā), 現(xiàn)在MySQL并入了Oracle旗下體積小、速度快、成本低、開放源碼 廣泛地應(yīng)用在Internet上的中

8、小型網(wǎng)站中SQL ServerMicrosoft公司的產(chǎn)品,針對不同用戶群體的多個版本要求在Windows操作系統(tǒng)平臺上運行易用性好1.- 下載MySQL社區(qū)版任務(wù)二 MySQL的安裝與配置 2. MySQL社區(qū)版是免費的,有MSI和zip兩種安裝方式下載前先選擇安裝平臺(windows)和安裝文件方式(MSI或Zip)MySQL的安裝3.安裝向?qū)?產(chǎn)品類型選擇:Server only(服務(wù)器)MySQL的安裝4.配置向?qū)?類型和網(wǎng)絡(luò)配置:Server ComputerMySQL的安裝5.配置向?qū)?賬號和角色配置:為MySQL的超級用戶root設(shè)置密碼MySQL的安裝連接服務(wù)器“開始”“程序”

9、MySQL“MySQL Server 8.0” “MySQL 8.0 Command Line Client”在客戶端窗口輸入安裝時為root用戶設(shè)置的密碼窗口中出現(xiàn)MySQL命令行提示符“mysql“,安裝成功MySQL圖形化管理工具 Navicat for MySQL是一個桌面版MySQL數(shù)據(jù)庫管理和開發(fā)工具,易學(xué)易用,很受大家的歡迎。本課程將以Navicat for MySQL為例介紹MySQL數(shù)據(jù)庫管理工具的使用。第二章數(shù)據(jù)庫設(shè)計項目知識要點與目標(biāo)項目知識要點知識能力目標(biāo)學(xué)時任務(wù)1 設(shè)計數(shù)據(jù)庫關(guān)系模型1 數(shù)據(jù)模型2 概念模型3 E-R圖的設(shè)計4 數(shù)據(jù)庫關(guān)系模型的建立任務(wù)2 數(shù)據(jù)庫設(shè)計規(guī)

10、范化1 關(guān)系型數(shù)據(jù)庫范式理論 2 數(shù)據(jù)庫規(guī)范化實例 3 綜合實例 PetStore數(shù)據(jù)庫的設(shè)計 【典型工作任務(wù)】 對數(shù)據(jù)庫系統(tǒng)進行分析,建立E-R圖,關(guān)系模型【技能要求】 1 設(shè)計數(shù)據(jù)庫關(guān)系模型2 數(shù)據(jù)庫規(guī)范化【知識要求技能訓(xùn)練】1 掌握數(shù)據(jù)庫設(shè)計的相關(guān)知識2 運用E-R圖等工具設(shè)計數(shù)據(jù)庫 4項目實訓(xùn)創(chuàng)建“圖書管理系統(tǒng)”的數(shù)據(jù)模型2修建茅屋需要設(shè)計嗎?修建大廈需要設(shè)計嗎?結(jié)論:當(dāng)數(shù)據(jù)庫比較復(fù)雜時我們需要設(shè)計數(shù)據(jù)庫為什么需要設(shè)計數(shù)據(jù)庫 數(shù)據(jù)庫設(shè)計就是將數(shù)據(jù)庫中的數(shù)據(jù)對象以及這些數(shù)據(jù)對象之間關(guān)系進行規(guī)劃和結(jié)構(gòu)化的過程任務(wù)一 設(shè)計數(shù)據(jù)庫關(guān)系模型 設(shè)計數(shù)據(jù)庫關(guān)系模型概念模型:把現(xiàn)實世界轉(zhuǎn)換為信息世界的

11、模型,E-R模型實施模型:把信息世界轉(zhuǎn)化為數(shù)據(jù)世界使用的模型,關(guān)系模型現(xiàn)實世界建模信息世界模型轉(zhuǎn)換 規(guī)范化數(shù)據(jù)庫世界數(shù) 據(jù) 庫數(shù) 據(jù) 庫事物類事物性質(zhì)實體集實體屬性文件記錄數(shù)據(jù)項實體模型概念模型數(shù)據(jù)模型實體模型 現(xiàn)實世界客觀存在的、可以被描述事物都是“實體”層次模型 按層次模型組織的數(shù)據(jù)示例 網(wǎng)狀模型 按網(wǎng)狀模型組織的數(shù)據(jù)示例 關(guān)系模型 按關(guān)系模型組織的數(shù)據(jù)示例 學(xué)號總學(xué)分專業(yè)名出生日期性別姓名學(xué)生課程課程號學(xué)分學(xué)時開課學(xué)期類別課程名選課成績實體名聯(lián)系名屬性名屬性名或E-R圖的組成要素及其畫法(5)映射基數(shù) 1:1,1:n,m:n(1)實體(2)聯(lián)系(3)屬性(4)關(guān)鍵字mn概念模型-E-R圖

12、建模:把現(xiàn)實世界轉(zhuǎn)換為信息世界的模型,E-R模型實體間不同聯(lián)系情況的E-R圖表示法一對一(1:1)聯(lián)系:1院長學(xué)院管理1姓名年齡學(xué)歷編號學(xué)院編號學(xué)院名稱任職時間例:某學(xué)校有若干個學(xué)院,每個學(xué)院只有一個院長。院長和學(xué)院之間是一對一的關(guān)系。主任與系之間的一對一的聯(lián)系一對多(1:m)的聯(lián)系例: 在某倉庫管理系統(tǒng)中,有兩個實體集:倉庫和商品。倉庫用來存放商品,且規(guī)定一類商品只能存放在一個倉庫中,一個倉庫可以存放多件商品。倉庫和商品是一對多(1:m)的聯(lián)系,在存放聯(lián)系中要反映出存放商品的數(shù)量。 1倉庫商品存放n地點面積倉庫號商品號價格數(shù)量商品名實體間不同聯(lián)系情況的E-R圖表示法倉庫和商品之間一對多的聯(lián)系

13、多對多(m:n)聯(lián)系:假設(shè)在某教務(wù)管理系統(tǒng)中,一個教師可以上多門課,一門課也可以由多個老師去上。教師和課程之間是多對多(m:n)聯(lián)系,在“講授”聯(lián)系中應(yīng)能反映出教師的授課質(zhì)量。 m教師課程講授n教師名職稱教師號課程號班級質(zhì)量課程名實體間不同聯(lián)系情況的E-R圖表示法教師和課程之間的多對多聯(lián)系 E-R圖設(shè)計實例【例】 網(wǎng)絡(luò)圖書銷售系統(tǒng)處理會員圖書銷售。簡化的業(yè)務(wù)處理過程為:網(wǎng)絡(luò)銷售的圖書信息包括:圖書編號,圖書類別,書名,作者,出版社,出版時間,單價,數(shù)量,折扣,封面圖片等;用戶需要購買圖書必須先注冊為會員,提供身份證號,會員姓名,密碼,性別,聯(lián)系電話,注冊時間等信息;系統(tǒng)根據(jù)會員的購買訂單形成銷

14、售信息,包括訂單號,身份證號,圖書編號,訂購冊數(shù),訂購時間,是否發(fā)貨,是否收貨,是否結(jié)清。 請畫出網(wǎng)絡(luò)圖書銷售數(shù)據(jù)庫E-R圖。 E-R圖設(shè)計步驟1.確定實體集: 網(wǎng)絡(luò)圖書銷售系統(tǒng)中有兩個實體集:圖書和會員2.確定實體集屬性及主碼: (1)實體集會員屬性有:身份證號,會員姓名,性別,聯(lián)系電話,注冊時間,密碼。 會員實體集中可用身份證號來唯一標(biāo)識各會員,所以主碼為身份證號。(2)實體集圖書屬性有:圖書編號,圖書類別,書名,作者,出版社,出版時間,單價,數(shù)量,折扣,封面圖片。 圖書實體集中可用圖書編號來唯一標(biāo)識圖書,所以主碼為圖書編號。3. 確定實體集之間的聯(lián)系:圖書銷售給會員時圖書與會員建立關(guān)聯(lián),

15、 聯(lián)系“銷售”的屬性有:訂購冊數(shù),訂購時間,是否發(fā)貨,是否收貨,是否結(jié)清。 為了更方便標(biāo)識銷售記錄,可添加訂單號作為該聯(lián)系的主碼。4.確定聯(lián)系關(guān)系: 因為一個會員可以購買多種圖書,一種圖書可銷售各多個會員,所以這是一種多對多(m:n)的聯(lián)系。 根據(jù)以上分析畫出的網(wǎng)絡(luò)圖書銷售數(shù)據(jù)庫E-R圖網(wǎng)絡(luò)圖書銷售數(shù)據(jù)庫E-R圖E-R圖設(shè)計步驟 對于復(fù)雜的系統(tǒng),E-R圖設(shè)計通常都應(yīng)經(jīng)過以下兩個階段: (1)針對每一用戶畫出該用戶信息的局部ER圖,確定該用戶視圖的實體、屬性和聯(lián)系。需注意的是:能作為屬性的就不要作為實體,這有利于ER圖的簡化。 (2)綜合局部ER圖,生成總體ER圖。在綜合過程中,同名實體只能出現(xiàn)

16、一次,還要去掉不必要的聯(lián)系,以便消除冗余。一般來說,從總體ER圖必須能導(dǎo)出原來的所有局部視圖,包括實體、屬性和聯(lián)系。復(fù)雜E-R圖設(shè)計實例 【例】 工廠物流管理中的涉及雇員、部門、供應(yīng)商、原材料、成品和倉庫等實體,并且存在以下關(guān)聯(lián): (1)一個雇員只能在一個部門工作,一個部門可以有多個雇員。(2)每一個部門可以生產(chǎn)多種成品,但一種成品只能由一個部門生產(chǎn)。(3)一個供應(yīng)商可以供應(yīng)多種原材料,一種原材料也可以由多個供應(yīng)商供貨。(4)購買的原材料放在倉庫中,成品也放在倉庫中。一個倉庫可以存放多種產(chǎn)品,一種產(chǎn)品也可以存放在不同的倉庫中。(5)各部門從倉庫中提取原料,并將成品放在倉庫中。一個倉庫可以存放多

17、個部門的產(chǎn)品,一個部門的產(chǎn)品也可以存放在不同的倉庫中。 畫出簡單的工廠物流管理系統(tǒng)E-R模型。局部E-R圖1、找出工廠物流管理系統(tǒng)實體集:分別是雇員、部門、成品、供應(yīng)商、原材料和倉庫。2.從生產(chǎn)的角度,根據(jù)(1)和(2)畫出雇員、部門和成品三個實體間的初步聯(lián)系3.從供應(yīng)的角度,根據(jù)(3)畫出供應(yīng)商和原材料兩個實體間的初步聯(lián)系,4.為是問題簡化,實體的屬性先不畫出。全局E-R圖5.從倉儲的角度,根據(jù)(4)和(5)畫出倉庫與各實體之間的聯(lián)系,最終得到工廠物流管理系統(tǒng)的E-R圖6.實體聯(lián)系中有多個數(shù)量屬性,分別用數(shù)量1,數(shù)量2以區(qū)分課堂練習(xí)學(xué)校有若干個學(xué)院,每個學(xué)院有各自的編號、名稱和院長;每個學(xué)院

18、有若干名教師和學(xué)生,教師有教師號、教師名和職稱屬性,每個教師可以擔(dān)任若干門課程,一門課程只能由一位教師講授,課程有課程號、課程名和學(xué)分,并參加多項項目,一個項目有多人合作,且責(zé)任輕重有個排名,項目有項目號、名稱和負(fù)責(zé)人;學(xué)生有學(xué)號、姓名、年齡、性別,每個學(xué)生可以同時選修多門課程,選修有分?jǐn)?shù)。請設(shè)計此學(xué)校的教學(xué)管理的E-R模型課堂練習(xí)分析學(xué)校有若干個學(xué)院,每個學(xué)院有各自的編號、名稱和院長;每個學(xué)院有若干名教師和學(xué)生,教師有教師號、教師名和職稱屬性,每個教師可以擔(dān)任若干門課程,一門課程只能由一位教師講授,課程有課程號、課程名和學(xué)分,并參加多項項目,一個項目有多人合作,且責(zé)任輕重有個排名,項目有項目

19、號、名稱和負(fù)責(zé)人;學(xué)生有學(xué)號、姓名、年齡、性別,每個學(xué)生可以同時選修多門課程,選修有分?jǐn)?shù)。實體集:學(xué)院、教師、學(xué)生、課程、項目E-R圖設(shè)計中常見問題分析【例】 畫出出版社和圖書的E-R圖。 1.實體與聯(lián)系分析:一個出版社可以出版多本圖書,一本圖書只能由一個出版社出版,出版社和圖書之間就是一對多的關(guān)系。 2.屬性與主碼:出版社實體有社名、地址、郵編、網(wǎng)址、聯(lián)系電話等屬性。為了建立出版社與圖書實體一對多的聯(lián)系,還應(yīng)該有一個出版社代碼來唯一標(biāo)識出版社; 圖書實體有出版社、書名、作者、價格等屬性。為了唯一標(biāo)識圖書,還應(yīng)設(shè)置書號屬性。 根據(jù)以上分析,畫出出版社與圖書的E-R圖如下:圖書出版E-R圖問題思

20、考(1)1、怎么標(biāo)識書號-屬性內(nèi)容如何選?。繛榱斯芾矸奖?,國際上規(guī)定:全世界的每本書都應(yīng)該有唯一的編號,這個號碼叫做ISBN號,俗稱書號。因此,用ISBN書號作為圖書的唯一標(biāo)識似乎是非常合理的。但是,有時候出版社也出版一些沒有書號的資料。所以,在設(shè)計實際數(shù)據(jù)庫系統(tǒng)的時候,可也以根據(jù)實際情況不以ISBN書號唯一標(biāo)識圖書實體,而自己定義唯一標(biāo)識圖書實體的屬性。在現(xiàn)實世界中,類似這樣的問題有很多,通常需要為實體集定義額外的關(guān)鍵字段。圖書出版E-R圖問題思考(2)2、有些屬性的值如果有多個,該怎么辦?如出版社實體應(yīng)該有電話屬性。但一個出版社一般不止一部電話,怎么處理?一種方法是仍使用一個電話屬性,只記

21、下一部或幾部甚至全部的電話號碼即可,這種方法適合于小單位。第二種方法是將電話屬性獨立出來,建立一個新的電話實體,通過出版社代碼屬性,建立和出版社的一對多聯(lián)系,圖書出版E-R圖問題思考(3)3、一個實體究竟有多少屬性?實體的屬性可以說是無窮無盡,到底應(yīng)提取哪些屬性,要結(jié)合具體應(yīng)用系統(tǒng)考慮。比如,圖書的一般屬性有書號、社代碼、書名、作者、價格、版次等,如果開發(fā)的是書店管理系統(tǒng),這些屬性一般夠用了,但如果要開發(fā)印刷廠管理系統(tǒng),還需要增加圖書大?。?2開還是16開,或具體數(shù)字)、印刷紙張規(guī)格(60克紙還是70克紙,書寫紙還是雙面膠)、是否彩印、彩印規(guī)格、印刷數(shù)量、交貨日期等屬性。所以,提取一個實體的屬

22、性也要具體問題具體分析。 通過出版社圖書的例子引出的三個問題,說明建立在現(xiàn)實世界基礎(chǔ)上的E-R模型并不只有唯一答案。面向不同的應(yīng)用、使用不同的方法,可以設(shè)計出不同的E-R模型。ER模型到關(guān)系模型的轉(zhuǎn)換 把E-R圖轉(zhuǎn)換為關(guān)系模型可遵循如下原則 : (1)對于ER圖中每個實體集,都應(yīng)轉(zhuǎn)換為一個關(guān)系,該關(guān)系應(yīng)包括對應(yīng)實體的全部屬性,并應(yīng)根據(jù)關(guān)系所表達的語義確定哪個屬性或哪幾個屬性組作為“主關(guān)鍵字”,主關(guān)鍵字用來標(biāo)識實體。 (2)對于ER圖中的聯(lián)系,情況比較復(fù)雜,要根據(jù)實體聯(lián)系方式的不同,采取不同的手段加以實現(xiàn)。(1 : 1)聯(lián)系的E-R圖轉(zhuǎn)換(1)聯(lián)系單獨對應(yīng)一關(guān)系模式,則由聯(lián)系屬性、參與聯(lián)系的各實

23、體集的主碼屬性構(gòu)成關(guān)系模式,其主碼可選參與聯(lián)系的實體集的任一方的主碼。BJ(班級編號,院系,專業(yè)名,人數(shù))BZ(學(xué)號,姓名)SY(學(xué)號,班級編號)(2)聯(lián)系不單獨對應(yīng)一關(guān)系模式,聯(lián)系的屬性及一方的主碼加入另一方實體集對應(yīng)的關(guān)系模式中。 BJ(班級編號,院系,專業(yè)名,人數(shù)) BZ(學(xué)號,姓名,班級編號)或者 BJ(班級編號,院系,專業(yè)名,人數(shù),學(xué)號) BZ(學(xué)號,姓名)(1 : n)聯(lián)系的E-R圖轉(zhuǎn)換(1)聯(lián)系單獨對應(yīng)一關(guān)系模式,則由聯(lián)系的屬性、參與聯(lián)系的各實體集的主碼屬性構(gòu)成關(guān)系模式,n端的主碼作為該關(guān)系模式的主碼。BJ(班級編號,院系,專業(yè)名,人數(shù))XS (學(xué)號,姓名,專業(yè)名,性別,出生時間

24、,總學(xué)分,備注)SY(學(xué)號,班級編號)(2)聯(lián)系不單獨對應(yīng)一個關(guān)系模式,則將聯(lián)系的屬性及1端的主碼加入n端實體集對應(yīng)的關(guān)系模式中,主碼仍為n端的主碼 BJ(班級編號,院系,專業(yè)名,人數(shù)) XS (學(xué)號,姓名,專業(yè)名,性別,出生時間,總學(xué)分,備注,班級編號)(m : n)聯(lián)系的E-R圖轉(zhuǎn)換 對于(m : n)的聯(lián)系,單獨對應(yīng)一關(guān)系模式,該關(guān)系模式包括聯(lián)系的屬性、參與聯(lián)系的各實體集的主碼屬性,該關(guān)系模式的主碼由各實體集的主碼屬性共同組成。XS (學(xué)號,姓名,專業(yè)名,性別,出生時間,總學(xué)分,備注)KC(課程號,課程名稱,類別,開課學(xué)期,學(xué)時,學(xué)分)XS_KC (學(xué)號,課程號,成績)假設(shè)A實體集與B實

25、體集是1:1的聯(lián)系,聯(lián)系的轉(zhuǎn)換有三種方法: 把A實體集的主關(guān)鍵字加入到B實體集對應(yīng)的關(guān)系中,如果聯(lián)系有屬性也一并加入; 把B實體集的主關(guān)鍵字加入到A實體集對應(yīng)的關(guān)系中,如果聯(lián)系有屬性也一并加入; 建立第三個關(guān)系,關(guān)系中包含兩個實體集的主關(guān)鍵字,如果聯(lián)系有屬性也一并加入。 兩實體集間1:n聯(lián)系 兩實體集間1:n聯(lián)系,可將“一方”實體的主關(guān)鍵字納入“n方”實體集對應(yīng)的關(guān)系中作為“外部關(guān)鍵字”,同時把聯(lián)系的屬性也一并納入“n方”對應(yīng)的關(guān)系中。兩實體集間m:n聯(lián)系 對于兩實體集間m:n聯(lián)系,必須對“聯(lián)系”單獨建立一個關(guān)系,用來聯(lián)系雙方實體集。該關(guān)系的屬性中至少要包括被它所聯(lián)系的雙方實體集的“主關(guān)鍵字”

26、,并且如果聯(lián)系有屬性,也要歸入這個關(guān)系中。 E-R模型到關(guān)系模型的轉(zhuǎn)換總結(jié)數(shù)據(jù)庫設(shè)計規(guī)范化僅有好的RDBMS并不足以避免數(shù)據(jù)冗余,必須在數(shù)據(jù)庫的設(shè)計中創(chuàng)建好的表結(jié)構(gòu)關(guān)系數(shù)據(jù)庫范式理論是在數(shù)據(jù)庫設(shè)計過程中將要依據(jù)的準(zhǔn)則,數(shù)據(jù)庫結(jié)構(gòu)必須要滿足這些準(zhǔn)則,才能確保數(shù)據(jù)的準(zhǔn)確性和可靠性。這些準(zhǔn)則則被稱為規(guī)范化形式,即范式。Dr E.F.codd 最初定義了規(guī)范化的三個級別,范式是具有最小冗余的表結(jié)構(gòu)。這些范式是:第一范式(1st NF First Normal Fromate)第二范式(2nd NFSecond Normal Fromate)第三范式(3rd NF Third Normal Fromat

27、e)第一范式 (1st NF)BuyerIDCountryCity1342中國英國日本美國北京倫敦東京紐約BuyerIDAddress1234中國北京市 美國紐約市 英國倫敦日本東京市 第一范式的目標(biāo)是確保每列的原子性如果每列都是不可再分的最小數(shù)據(jù)單元(也稱為最小的原子單元),則滿足第一范式(1NF)第二范式 (2nd NF)如果一個關(guān)系滿足1NF,并且除了主鍵以外的其他列,都依賴與該主鍵,則滿足第二范式(2NF) 第二范式要求每個表只描述一件事情Orders字段例子訂單編號產(chǎn)品編號訂購日期產(chǎn)品名稱001A0012000-2-3洗衣機規(guī)格 Orders字段例子訂單編號訂購日期0012000-2

28、-3Products字段例子產(chǎn)品編號產(chǎn)品名稱A001洗衣機規(guī)格第三范式 (3rd NF)如果一個關(guān)系滿足2NF,并且除了主鍵以外的其他列都不傳遞依賴于主鍵列,則滿足第三范式(3NF) Orders字段例子訂單編號產(chǎn)品編號單價001AB00130數(shù)量50金額 Orders字段例子訂單編號產(chǎn)品編號單價001AB00130數(shù)量 50一張表:6*10*5000=30,0000 個數(shù)據(jù)三張表:學(xué)生表:3*5000=1500 0 課程表:2*10=20 成績表:3*10*5000=150000三張表合計:15000+20+150000=16,5020A與B方案數(shù)據(jù)差:30,0000-16,5020 =13

29、,4980 以下是兩個同學(xué)設(shè)計的學(xué)生成績系統(tǒng)的表格,A同學(xué)設(shè)計成表格1的形式,B同學(xué)設(shè)計了表格2、3、4三張表格,請問:A、B同學(xué)哪個的方案更合理?假設(shè):設(shè)計的表格需要記錄5000個同學(xué)的10門課成績,用A同學(xué)設(shè)計表格要填寫多少個數(shù)據(jù)?用B同學(xué)設(shè)計的表格要填寫多少個數(shù)據(jù)?根據(jù)計算結(jié)果,哪種設(shè)計更節(jié)省空間。學(xué)號姓名年齡課程名稱成績學(xué)分010101張三20計算機基礎(chǔ)802010102李四20計算機基礎(chǔ)852010101張三20英語753010102李四20英語853學(xué)號姓名年齡010101張三20010102李四20課程名稱學(xué)分計算機基礎(chǔ)2英語3學(xué)號課程名稱成績010101計算機基礎(chǔ) 800101

30、02計算機基礎(chǔ)85010101英語75010102英語85A同學(xué)設(shè)計表格B同學(xué)設(shè)計表格課堂練習(xí)分析規(guī)范化實例分析(1)假設(shè)某建筑公司要設(shè)計一個數(shù)據(jù)庫。公司的業(yè)務(wù)規(guī)則概括說明如下:公司承擔(dān)多個工程項目,每一項工程有:工程號、工程名稱、施工人員等公司有多名職工,每一名職工有:職工號、姓名、性別、職務(wù)(工程師、技術(shù)員)等公司按照工時和小時工資率支付工資,小時工資率由職工的職務(wù)決定(例如,技術(shù)員的小時工資率與工程師不同)公司定期制定一個工資報表,如圖-1所示規(guī)范化實例分析(2)工程號工程名稱職工號姓名職務(wù)小時工資率工時實發(fā)工資A1花園大廈1001齊光明工程師6513845.001002李思岐技術(shù)員60

31、16960.001004葛宇宏律師60191140.00小計2945.00A2立交橋1001齊光明工程師6515975.001003鞠明亮工人5517935.00小計1910.00A3臨江飯店1002李思岐技術(shù)員60181080.001004葛宇洪技術(shù)員6014840.00小計1920.00圖-1 某公司的工資表規(guī)范化實例分析(3)工程號工程名稱職工號姓名職務(wù)小時工資率工時A1花園大廈1001齊光明工程師6513A1花園大廈1002李思岐技術(shù)員6016A2立交橋1001齊光明工程師6515A2立交橋1003鞠明亮工人5517A3臨江飯店1002李思岐技術(shù)員6018A3臨江飯店1004葛宇洪技術(shù)

32、員6014圖-2 某公司的項目工時表規(guī)范化實例分析(4)表中包含大量的冗余,可能會導(dǎo)致數(shù)據(jù)異常:更新異常 例如,修改職工號=1001的職務(wù),則必須修改所有職工號=1001的行添加異常 若要增加一個新的職工時,首先必須給這名職工分配一個工程?;蛘邽榱颂砑右幻侣毠さ臄?shù)據(jù),先給這名職工分配一個虛擬的工程。(因為主關(guān)鍵字不能為空)刪除異常 例如,1001號職工要辭職,則必須刪除所有職工號1001的數(shù)據(jù)行。這樣的刪除操作,很可能丟失了其它有用的數(shù)據(jù) 采用這種方法設(shè)計表的結(jié)構(gòu),雖然很容易產(chǎn)生工資報表,但是每當(dāng)一名職工分配一個工程時,都要重復(fù)輸入大量的數(shù)據(jù)。這種重復(fù)的輸入操作,很可能導(dǎo)致數(shù)據(jù)的不一致性。一

33、張表描述了多件事情,如圖-3所示。規(guī)范化實例分析(5)工程號工程名稱職工號姓名職務(wù)小時工資率工時圖-3 函數(shù)依賴圖工程信息員工信息項目工時信息應(yīng)用第二范式規(guī)范化工程號工程名稱職工號姓名職務(wù)小時工資率工程號職工號工時圖-4 應(yīng)用第二范式工程表員工表項目工時表滿足第三范式嗎? 應(yīng)用第三范式規(guī)范化工程號工程名稱職工號姓名職務(wù)職務(wù)小時工資率工程號職工號工時工程表員工表職務(wù)表工程表課堂練習(xí)S公司商品銷售管理系統(tǒng)中員工表如下:Employees (員工號,姓名,性別,出生年月,聘任日期,工資,獎金,所在部門和部門主管) 其中獎金按工資*30%+工作年限*50計算而得。請對員工表進行規(guī)范化。規(guī)范化和性能的關(guān)

34、系 為滿足某種商業(yè)目標(biāo),數(shù)據(jù)庫性能比規(guī)范化數(shù)據(jù)庫更重要通過在給定的表中添加額外的字段,以大量減少需要從中搜索信息所需的時間通過在給定的表中插入計算列(如成績總分),以方便查詢進行規(guī)范化的同時,還需要綜合考慮數(shù)據(jù)庫的性能。總結(jié)在需求分析階段,設(shè)計數(shù)據(jù)庫的一般步驟為:收集信息標(biāo)識對象標(biāo)識每個對象的屬性標(biāo)識對象之間的關(guān)系在概要設(shè)計階段和詳細(xì)設(shè)計階段,設(shè)計數(shù)據(jù)庫的步驟為:繪制E-R圖將E-R圖轉(zhuǎn)換為表格應(yīng)用三大范式規(guī)范化表格為了設(shè)計結(jié)構(gòu)良好的數(shù)據(jù)庫,需要遵守一些專門的規(guī)則,稱為數(shù)據(jù)庫的設(shè)計范式。第一范式(1NF)的目標(biāo):確保每列的原子性。第二范式(2NF)的目標(biāo):確保表中的每列,都和主鍵相關(guān) 。第三范

35、式(3NF)的目標(biāo):確保每列都和主鍵列直接相關(guān),而不是間接相關(guān) 。第三章數(shù)據(jù)定義項目知識要點知識能力目標(biāo)學(xué)時任務(wù)1 創(chuàng)建與管理數(shù)據(jù)庫1 創(chuàng)建數(shù)據(jù)庫2 管理數(shù)據(jù)庫任務(wù)2 創(chuàng)建與管理數(shù)據(jù)庫表1 創(chuàng)建數(shù)據(jù)庫表2 管理數(shù)據(jù)庫表任務(wù)3 數(shù)據(jù)完整性約束 1 主鍵約束 2 替代鍵約束 3 參照完整性約束 4 CHECK完整性約束 【典型工作任務(wù)】: 學(xué)會創(chuàng)建與管理數(shù)據(jù)庫和表【技能要求】:1 掌握創(chuàng)建與管理數(shù)據(jù)庫的方法2 掌握創(chuàng)建與管理數(shù)據(jù)庫表的方法3 掌握建立數(shù)據(jù)完整性約束的方法【知識要求】:1 數(shù)據(jù)庫和數(shù)據(jù)庫表的結(jié)構(gòu)2 數(shù)據(jù)完整性約束3 數(shù)據(jù)庫及表操作的SQL語句4項目實訓(xùn)創(chuàng)建“圖書管理系統(tǒng)”數(shù)據(jù)庫4項目

36、知識要點與目標(biāo) E-R圖設(shè)計實例【例1.1】 網(wǎng)絡(luò)圖書銷售系統(tǒng)處理會員圖書銷售。簡化的業(yè)務(wù)處理過程為:網(wǎng)絡(luò)銷售的圖書信息包括:圖書編號,圖書類別,書名,作者,出版社,出版時間,單價,數(shù)量,折扣,封面圖片等;用戶需要購買圖書必須先注冊為會員,提供身份證號,會員姓名,密碼,性別,聯(lián)系電話,注冊時間等信息;系統(tǒng)根據(jù)會員的購買訂單形成銷售信息,包括訂單號,身份證號,圖書編號,訂購冊數(shù),訂購時間,是否發(fā)貨,是否收貨,是否結(jié)清。 請畫出網(wǎng)絡(luò)圖書銷售數(shù)據(jù)庫E-R圖,并將其轉(zhuǎn)化為關(guān)系模型網(wǎng)絡(luò)圖書銷售數(shù)據(jù)庫E-R圖網(wǎng)絡(luò)圖書銷售數(shù)據(jù)庫E-R圖關(guān)系模型:Bookstore(數(shù)據(jù)庫)1、book( 圖書編號,圖書類別

37、,書名,作者,出版社,出版時間,單價,數(shù)量,折扣,封面圖片) 2、members(用戶號,姓名,性別,密碼,聯(lián)系電話,注冊時間)3、sell (訂單號,用戶號 ,圖書編號,訂購冊數(shù),訂購單價,訂購時間,是否發(fā)貨,是否收貨,是否結(jié)清)網(wǎng)絡(luò)圖書銷售數(shù)據(jù)庫E-R圖1.book表2. members表3. sell表MySQL數(shù)據(jù)庫模型在數(shù)據(jù)庫服務(wù)器中可以存儲多個數(shù)據(jù)庫文件,所以建立數(shù)據(jù)庫時要設(shè)定數(shù)據(jù)庫的文件名,每個數(shù)據(jù)庫有惟一的數(shù)據(jù)庫文件名作為與其它數(shù)據(jù)庫區(qū)別的標(biāo)識。數(shù)據(jù)庫文件: 數(shù)據(jù)庫是由相關(guān)數(shù)據(jù)表組成,一個數(shù)據(jù)庫包括多個數(shù)據(jù)表。數(shù)據(jù)庫文件用于記錄數(shù)據(jù)庫中數(shù)據(jù)表構(gòu)成的信息。數(shù)據(jù)庫只能由得到授權(quán)的用

38、戶訪問,這樣保證了數(shù)據(jù)庫的安全。成績數(shù)據(jù)庫xscj網(wǎng)絡(luò)圖書庫bookstore雇員管理庫YGGL.庫MySQL服務(wù)器數(shù)據(jù)庫數(shù)據(jù)庫和表數(shù)據(jù)庫可以看成是一個存儲數(shù)據(jù)對象的容器,這些數(shù)據(jù)對象包括表、視圖、觸發(fā)器、存儲過程等,其中,表是最基本的數(shù)據(jù)對象,用以存放數(shù)據(jù)庫的數(shù)據(jù)。必須首先創(chuàng)建數(shù)據(jù)庫,然后才能創(chuàng)建數(shù)據(jù)庫的數(shù)據(jù)對象。 MySQL可以采用兩種方式創(chuàng)建、操作數(shù)據(jù)庫和數(shù)據(jù)對象(1)命令行方式(2)圖形界面工具方式數(shù)據(jù)表視圖存儲過程DELIMITER $CREATE PROCEDURE DELETE_STUDENT(IN XH CHAR(6)BEGIN創(chuàng)建數(shù)據(jù)庫 MySQL安裝后,系統(tǒng)自動地創(chuàng)建inf

39、ormation_scema和MySQL數(shù)據(jù)庫,MySQL把有關(guān)數(shù)據(jù)庫的信息存儲在這兩個數(shù)據(jù)庫中。如果刪除了這些數(shù)據(jù)庫,MySQL就不能正常工作。 對于用戶的數(shù)據(jù),需要創(chuàng)建新的數(shù)據(jù)庫來存放。 語法格式: CREATE DATABASE | SCHEMA IF NOT EXISTS 數(shù)據(jù)庫名 DEFAULT CHARACTER SET 字符集名 | DEFAULT COLLATE 校對規(guī)則名說明:語句中“ ”內(nèi)為可選項。 | 表示二選一。Create database bookstore創(chuàng)建數(shù)據(jù)庫 命令行方式創(chuàng)建數(shù)據(jù)庫 在SQL語言創(chuàng)建數(shù)據(jù)庫命令create database中,如果省略語句中“

40、 ”中的所有可選項,其結(jié)構(gòu)形式如下: CREATE DATABASE 數(shù)據(jù)庫名;數(shù)據(jù)庫名 表示被創(chuàng)建數(shù)據(jù)庫名,數(shù)據(jù)庫名必須符合以下規(guī)則: 數(shù)據(jù)庫名必須唯一;名稱內(nèi)不能含有“/”及“.”等非法字符;最大不能超過64字節(jié)?!纠?.1】 創(chuàng)建一個名為Bookstore的數(shù)據(jù)庫。 CREATE DATABASE Bookstore; 顯示數(shù)據(jù)庫顯示服務(wù)器中已建立的數(shù)據(jù)庫,使用SHOW DATABASES命令。語法格式: SHOW DATABASES 此命令沒有用戶變量,執(zhí)行“SHOW DATABASES;” 。注意:在MySQL中,每一條SQL語句都以“;”作為結(jié)束標(biāo)志。顯示數(shù)據(jù)庫命令因為MySQL服

41、務(wù)器中有多個數(shù)據(jù)庫,可以使用USE命令可指定當(dāng)前數(shù)據(jù)庫。 語法格式: USE 數(shù)據(jù)庫名說明:這個語句也可以用來從一個數(shù)據(jù)庫“跳轉(zhuǎn)”到另一個數(shù)據(jù)庫,在用CREATE DATABASE語句創(chuàng)建了數(shù)據(jù)庫之后,該數(shù)據(jù)庫不會自動成為當(dāng)前數(shù)據(jù)庫,需要用這條USE語句來指定。【例】將數(shù)據(jù)庫test1設(shè)置為當(dāng)前數(shù)據(jù)庫。 Use test1;打開數(shù)據(jù)庫MySQL中的字符集和校對規(guī)則字符集是一套符號和編碼。校對規(guī)則是在字符集內(nèi)用于比較字符的一套規(guī)則。ASCII字符集中四個字母:A、B、a、b,每個字母賦予一個數(shù)值:A=65,B= 66,a= 97,b= 98。字母A是一個符號,數(shù)字65是A的編碼,字母和它們的編碼

42、組合在一起是一個字符集。假設(shè)我們希望比較兩個字符串的值:A和a。比較的最簡單的方法是查找編碼:A為65,a為97。因為65 小于97,我們可以說A小于a。我們做的僅僅是在我們的字符集上應(yīng)用了一個校對規(guī)則。MySQL字符集和校對規(guī)則應(yīng)用 MySQL支持30多種字符集的70多種校對規(guī)則。在同一臺服務(wù)器、同一個數(shù)據(jù)庫或甚至在同一個表中使用不同字符集或校對規(guī)則來混合字符串。 可用SHOW CHARACTER SET命令查看。兩個不同的字符集不能有相同的校對規(guī)則。每個字符集有一個默認(rèn)校對規(guī)則?!纠?.2】 創(chuàng)建一個名為Bookstore的數(shù)據(jù)庫,采用字符集gb2312和校對規(guī)則gb2312_chines

43、e_ci。CREATE DATABASE Bookstore DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci; 修改數(shù)據(jù)庫數(shù)據(jù)庫創(chuàng)建后,如果需要修改數(shù)據(jù)庫的參數(shù),可以使用ALTER DATABASE命令。 語法格式: ALTER DATABASE | SCHEMA 數(shù)據(jù)庫名 DEFAULT CHARACTER SET 字符集名 | DEFAULT COLLATE 校對規(guī)則名 【例3.3】 修改數(shù)據(jù)庫Pet的默認(rèn)字符集為latin1,校對規(guī)則為latin1_swedish_ci。ALTER DATABASE PetDEFAULT CH

44、ARACTER SET latin1DEFAULT COLLATE latin1_swedish_ci; 刪除數(shù)據(jù)庫已經(jīng)創(chuàng)建的數(shù)據(jù)庫需要刪除,使用DROP DATABASE命令。 語法格式: DROP DATABASE IF EXISTS 數(shù)據(jù)庫名數(shù)據(jù)庫test2命令如下: DROP DATABASE test2;刪顯示服務(wù)器中已建立的數(shù)據(jù)庫, 使用SHOW DATABASES命令。 語法格式: SHOW DATABASES;數(shù)據(jù)庫表結(jié)構(gòu)分析 book1表結(jié)構(gòu)分析圖書編號類別書名出版時間單價數(shù)量SC13/02機械機械制圖2016-10-1645.5045TP10/04計算機PHP_MySQL網(wǎng)

45、站制作2013-08-1633.2550TP21/01計算機JavaScript網(wǎng)站制作2015-08-1633.7260圖書目錄表圖書編號類別書名出版時間單價數(shù)量tp.4235計算機跟我學(xué)網(wǎng)頁設(shè)計2009-09-1023.5012tp.3361計算機網(wǎng)頁編程技術(shù)2008-10-0154.1523tp.0731計算機數(shù)據(jù)庫應(yīng)用技術(shù)2007-06-1033.2331字段名字段類型寬度是否為空默認(rèn)值說明圖書編號char10 x主鍵,采用10位字符編號類別char8x計算機2-4個漢字書名varchar40 x不超過40個字符出版時間datex單價Float5,2元為單位,精確到分?jǐn)?shù)量int MyS

46、QL數(shù)據(jù)類型大數(shù)據(jù)類型:textblob時間類型:datetimedatetime數(shù)值類型:intFloat(M,D)字符串類型:Char(n)Varchar(n)MySQL常用數(shù)據(jù)類型:CREATE TABLE命令 為數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)表,可以使用SQL命令CREATE TABLE來完成。此語句的完整語法是相當(dāng)復(fù)雜的,因為存在很多的可選子句創(chuàng)建表使用CREATE TABLE命令。 語法格式: CREATE TABLE IF NOT EXISTS 表名 (列名 數(shù)據(jù)類型 NOT NULL | NULL DEFAULT 列默認(rèn)值) ENGINE = 存儲引擎 CREATE TABLE命令的基本格式:

47、 CREATE TABLE tbl_name (列名1 數(shù)據(jù)類型 1 NOT NULL | NULL , 列名2 數(shù)據(jù)類型 2 NOT NULL | NULL , .) 命令行方式創(chuàng)建數(shù)據(jù)庫表命令行方式創(chuàng)建數(shù)據(jù)庫表的最基本格式: CREATE TABLE 數(shù)據(jù)庫表名 ( 字段名1 數(shù)據(jù)類型1 NOT NULL | NULL, 字段名2 數(shù)據(jù)類型2 NOT NULL | NULL, . ); 圖書編號類別書名出版時間單價數(shù)量字段名字段類型寬度是否為空默認(rèn)值說明圖書編號char10 x主鍵,采用10位字符編號類別char8x計算機2-4個漢字書名varchar40 x不超過40個字符出版時間dat

48、ex單價Float5,2元為單位,精確到分?jǐn)?shù)量int 命令行方式創(chuàng)建數(shù)據(jù)庫表book1命令方式創(chuàng)建表bookCREATE TABLE book ( 圖書編號 char(10) NOT NULL, 類別 varchar(8) NOT NULL DEFAULT 計算機, 書名 varchar(40) NOT NULL , 出版時間 date NOT NULL , 單價 float(5,2) NULL , 數(shù)量 int ); 圖書編號類別書名出版時間單價數(shù)量顯示數(shù)據(jù)表信息(1)顯示數(shù)據(jù)表文件名 語法格式: SHOW TABLES 【例3.11】顯示Bookstore 數(shù)據(jù)庫建立的數(shù)據(jù)表文件: USE

49、 Bookstore SHOW TABLES ;(2)顯示數(shù)據(jù)表結(jié)構(gòu) 語法格式: DESCRIBE | DESC 表名 列名 | 通配符 DESC是DESCRIBE的簡寫,二者用法相同?!纠?.12】 用DESCRIBE語句查看 Book 表的列的信息。 USE Bookstore DESCRIBE Book ;【例3.13】 查看 Book 表圖書編號 列的信息。 USE Bookstore DESC Book 圖書編號 ;修改表 ALTER TABLE用于更改原有表的結(jié)構(gòu)。例如,可以增加或刪減列,創(chuàng)建或取消索引,更改原有列的類型,重新命名列或表,還可以更改表的評注和表的類型。語法格式:AL

50、TER TABLE 表名 ADD COLUMN 列定義 FIRST | AFTER列名 /*添加列*/ | ALTER COLUMN 列名 SET DEFAULT 默認(rèn)值| DROP DEFAULT /*修改默認(rèn)值*/ | CHANGE COLUMN 舊列名 列定義 /*對列重命名*/ FIRST|AFTER列名 | MODIFY COLUMN 列定義 FIRST | AFTER 列名 /*修改列類型*/ | DROP COLUMN 列名 /*刪除列*/ | RENAME TO 新表名 /*重命名該表*/ 復(fù)制表語法格式:CREATE TABLE IF NOT EXISTS 新表名 LIKE

51、參照表名 | AS (select語句) 使用LIKE關(guān)鍵字創(chuàng)建一個與參照表相同結(jié)構(gòu)的新表,但內(nèi)容不會復(fù)制,因此創(chuàng)建的新表是一個空表。 使用AS關(guān)鍵字可以復(fù)制表的內(nèi)容,但索引和完整性約束是不會復(fù)制的?!纠?假設(shè)數(shù)據(jù)庫BookStore中有一個表Book,創(chuàng)建Book表的一個名為book_copy1的拷貝。 CREATE TABLE book_copy1 LIKE Book; 【例 】 創(chuàng)建表Book的一個名為book_copy2的拷貝,并且復(fù)制其內(nèi)容。 CREATE TABLE book_copy2 AS (SELECT * FROM Book); 修改表結(jié)構(gòu)增加列 ALTER TABLE

52、表名 ADD 列定義 FIRST | AFTER 列名例在表book中增加一列“瀏覽次數(shù)”。ALTER TABLE book ADD 瀏覽次數(shù) int NULL;擴展在表book中增加一列“瀏覽次數(shù)”,位置在單價列的后面。ALTER TABLE book ADD 瀏覽次數(shù) int NULL after 單價;刪除列 ALTER TABLE 表名 DROP 列名例刪除book表中“瀏覽次數(shù)”列。ALTER TABLE book DROP 瀏覽次數(shù);在表book中增加“瀏覽次數(shù)”列,刪除“封面圖片”列。ALTER TABLE book ADD 瀏覽次數(shù) int NULL, DROP 封面圖片;擴展

53、修改表結(jié)構(gòu)更改列名 ALTER TABLE 表名 CHANGE 舊列名 列定義 例將book表中“出版時間”列改為“出版日期”列。ALTER TABLE book CHANGE 出版時間 出版日期 date not null;更改列類型 ALTER TABLE 表名 MODIFY 列定義例將book表中“出版日期”列類型改為日期時間類型。ALTER TABLE book MODIFY 出版日期 datetime not null;修改表結(jié)構(gòu) ALTER TABLE用于更改原有表的結(jié)構(gòu)??梢栽黾踊騽h減列,創(chuàng)建或取消索引,更改原有列的類型,重新命名列或表,還可以更改表完整性約束和表的類型等。增加列

54、 ALTER TABLE 表名 ADD 列定義刪除列 ALTER TABLE 表名 DROP 列名更改列名 ALTER TABLE 表名 CHANGE 舊列名 列定義 更改列類型 ALTER TABLE 表名 MODIFY 列定義刪除表需要刪除一個表時可以使用DROP TABLE語句。語法格式: DROP TABLE IF EXISTS 表名1 ,表名2 . 這個命令將表的描述、表的完整性約束、索引及和表相關(guān)的權(quán)限等都全部刪除?!纠?刪除表test。 USE XSCJ DROP TABLE IF EXISTS test ;數(shù)據(jù)完整性輸入的類型是否正確?年齡必須是數(shù)字輸入的格式是否正確?Ema

55、il必須包含符號是否在允許的范圍內(nèi)?性別只能是”男”或者”女”是否存在重復(fù)輸入?員工信息輸入了兩次是否符合其他特定要求?信譽值大于5的客戶才能夠加入客戶表列值要求(約束)整行要求(約束) 數(shù)據(jù)完整性約束 實體完整性域完整性參照完整性用戶定義的完整性 實體完整性河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010015江西南昌雷銅0010014湖南新田吳蘭0010013山東定陶李山0010012.地址姓名學(xué)號江西南昌雷銅0010014約束方法:唯一約束、主鍵約束域完整性河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010015江西南昌雷銅0010014湖南新田吳蘭0010013山東定陶李山00100

56、12.地址姓名學(xué)號湖北江門李亮8700000000約束方法:限制數(shù)據(jù)類型、檢查約束、外鍵約束、默認(rèn)值、非空約束引用完整性河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010015江西南昌雷銅0010014湖南新田吳蘭0010013山東定陶李山0010012地址姓名學(xué)號980010021數(shù)學(xué)約束方法:外鍵約束科目學(xué)號分?jǐn)?shù)數(shù)學(xué)001001288數(shù)學(xué)001001374語文001001267語文001001381數(shù)學(xué)001001698自定義完整性AV121322喬峰CV0016AV372133玄痛CV0015AV378291沙悟凈AV0014AV378290豬悟能AV0013AV378289孫悟空AV0

57、012.會員證用戶姓名用戶編號約束方法:存儲過程、存儲函數(shù)、觸發(fā)器帳號姓名信用.00192孫悟空700288豬悟能612333段譽890111虛竹4093000岳不群-10觸發(fā)器:檢查信用值約束與完整性之間的關(guān)系 完整性類型約束類型描 述約束對象列完整性Default當(dāng)使用INSERT語句插入數(shù)據(jù)時,若已定義默認(rèn)值的列沒有提供指定值,則將該默認(rèn)值插入記錄中 列Check指定某一列可接受的值實體完整性Primary Key每行記錄的惟一標(biāo)識符,確保用戶不能輸入重復(fù)值,并自動創(chuàng)建索引,提高性能,該列不允許使用空值行Unique在列集內(nèi)強制執(zhí)行值的惟一性,防止出現(xiàn)重復(fù)值,表中不允許有兩行的同一列包含

58、相同的非空值參考完整性Foreign Key定義一列或幾列,其值于本表或其他表的主鍵或UNIQUE列相匹配表與表之間主鍵約束 主鍵就是表中的一列或多個列的一組,其值能唯一地標(biāo)志表中的每一行。通過定義PRIMARY KEY約束來創(chuàng)建主鍵,而且PRIMARY KEY約束中的列不能取空值。由于PRIMARY KEY約束能確保數(shù)據(jù)的唯一,所以經(jīng)常用來定義標(biāo)志列。如果 PRIMARY KEY 約束是由多列組合定義的,則某一列的值可以重復(fù),但 PRIMARY KEY 約束定義中所有列的組合值必須唯一??梢杂脙煞N方式定義主鍵:作為列或表的完整性約束。作為列的完整性約束時,只需在列定義的時候加上關(guān)鍵字PRIM

59、ARY KEY。作為表的完整性約束時,需要在語句最后加上一條PRIMARY KEY(col_name,)語句。主鍵約束 (1)列的完整性約束: 【例】 創(chuàng)建表book2,將編號定義為主鍵。 CREATE TABLE book2 ( 編號 char(6) NOT NULL PRIMARY KEY, 書名 char(10) NOT NULL, 數(shù)量 int );(2)表的完整性約束【例】創(chuàng)建cj表,將學(xué)號和課程號定義為復(fù)合主鍵。 CREATE TABLE cj (學(xué)號 char(6) NOT NULL,課程號 char(3) NOT NULL,成績 int ,PRIMARY KEY(學(xué)號, 課程號

60、) );主鍵約束原則 原則上,任何列或者列的組合都可以充當(dāng)一個主鍵。但是主鍵列必須遵守一些規(guī)則。 (1)每個表只能定義一個主鍵。 (2)關(guān)系模型理論要求必須為每個表定義一個主鍵。 (3)唯一性原則:表中的兩個不同的行在主鍵上不能具有相同的值。 (4)最小化規(guī)則:如果從一個復(fù)合主鍵中刪除一列后,剩下的列構(gòu)成主鍵仍然滿足唯一性原則,那么,這個復(fù)合主鍵是不正確的,這條規(guī)則稱為最小化規(guī)則。MySQL自動地為主鍵創(chuàng)建一個索引。通常,這個索引名為PRIMARY。然而,可以重新給這個索引起名。替代鍵約束在關(guān)系模型中,替代鍵像主鍵一樣,是表的一列或一組列,它們的值在任何時候都是唯一的。替代鍵是沒有被選做主鍵的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論