版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單元1數(shù)據(jù)模型的規(guī)劃與設(shè)計項目知識要點與目標項目知識要點知識能力目標學(xué)時任務(wù)1設(shè)計數(shù)據(jù)庫關(guān)系模型1數(shù)據(jù)模型2概念模型3E-R圖的設(shè)計4數(shù)據(jù)庫關(guān)系模型的建立任務(wù)2數(shù)據(jù)庫設(shè)計規(guī)范化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é)論:當數(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ù)庫良好的數(shù)據(jù)庫設(shè)計節(jié)省數(shù)據(jù)的存儲空間能夠保證數(shù)據(jù)的完整性方便進行數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)糟糕的數(shù)據(jù)庫設(shè)計:數(shù)據(jù)冗余、存儲空間浪費內(nèi)存空間浪費數(shù)據(jù)更新和插入的異常數(shù)據(jù)冗余編號姓名年齡民族部門部門位置1王濤33漢族人事管理部行政樓3012李梅27漢族人事管理部行政樓301存在冗余為減少數(shù)據(jù)查找的麻煩,允許數(shù)據(jù)有一定的冗余數(shù)據(jù)冗余:指數(shù)據(jù)重復(fù)的現(xiàn)象1127李梅21133王濤1部門編碼民族編碼年齡姓名編號回族2漢族1民族民族編碼市場營銷部2人事管理部1部門部門編碼行政樓402行政樓301部門位置數(shù)據(jù)完整性存在不正確、不準確的數(shù)據(jù),數(shù)據(jù)庫“失去了完整性”編碼姓名地址銷售代碼11阿蘭海淀黃莊菜園子AC09112東方求敗海淀龍王廟鬼樓AC04315張無忌中關(guān)村大街3-201AC01113菜鳥特注海淀龍王廟樹林AC04114趙可海淀龍王廟樹林AC01215張無忌中關(guān)村大街2-101AC011姓名不同的地址!數(shù)據(jù)完整性:指數(shù)據(jù)的準確性
設(shè)計數(shù)據(jù)庫關(guān)系模型概念模型:把現(xiàn)實世界轉(zhuǎn)換為信息世界的模型,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ù)示例關(guān)系模型特點關(guān)系模型中基本數(shù)據(jù)結(jié)構(gòu)是二維數(shù)據(jù)表,且必須滿足相應(yīng)的要求:(1)表說明的是關(guān)系模型中某一特定的方面或部分的對象及其屬性(2)表中的行通常叫做記錄或元組,代表具有相同屬性的對象中的一個(3)表中的列通常叫做字段或?qū)傩?,代表存儲對象的共有的屬性?)數(shù)據(jù)表之間的關(guān)聯(lián)通過“鍵”來實現(xiàn)的,鍵分為主鍵和外鍵兩種。(5)表必須符合某些特定條件①信息原則:每個單元只能存貯一條數(shù)據(jù);②列有唯一性的名稱,貯存在列下的數(shù)據(jù)必須具有相同數(shù)據(jù)類型;列沒有順序;③每行數(shù)據(jù)是唯一的;行沒有順序;④實體完整性原則,即主鍵不能為空;⑤引用完整性原則,即外鍵不能為空;概念模型建模步驟:收集信息:與該系統(tǒng)有關(guān)人員進行交流、坐談,充分理解數(shù)據(jù)庫需要完成的任務(wù)標識對象(實體-Entity)標識數(shù)據(jù)庫要管理的關(guān)鍵對象或?qū)嶓w標識每個實體的屬性(Attribute)標識對象之間的關(guān)系(Relationship)建模:把現(xiàn)實世界轉(zhuǎn)換為信息世界的模型,E-R模型建模實例:學(xué)生選課系統(tǒng)建模張三選修李四王五計算機基礎(chǔ)英語MySQL數(shù)據(jù)庫個體學(xué)號總學(xué)分專業(yè)名出生日期性別姓名共性學(xué)生實體抽象抽象實體共性課程課程號學(xué)分學(xué)時開課學(xué)期類別課程名關(guān)聯(lián)選課成績個體主碼(關(guān)鍵字)
主碼,也叫關(guān)鍵字實體集中的屬性或最小屬性組合的值,能唯一標識其對應(yīng)實體,則將該屬性或?qū)傩越M合稱為主碼。對于每一個實體集,可指定一個碼為主碼。學(xué)生和課程實體集屬性描述概念結(jié)構(gòu)設(shè)計概念結(jié)構(gòu)設(shè)計-E-R圖方法實體關(guān)系圖:簡記E-R圖,是指以實體、關(guān)系、屬性三個基本概念概括數(shù)據(jù)的基本結(jié)構(gòu),從而描述靜態(tài)數(shù)據(jù)結(jié)構(gòu)的概念模式。實體型(Entity):具有相同的特征和性質(zhì)的集合體,用實體名及其屬性名來抽象和刻畫同類實體;在E-R圖中用矩形表示,矩形框內(nèi)寫明實體名;比如學(xué)生張三、學(xué)生李四都是實體屬性(Attribute):實體所具有的某一特性,一個實體可由若干個屬性來刻畫。在E-R圖中用橢圓形表示,并用無向邊將其與相應(yīng)的實體連接起來;比如學(xué)生的姓名、學(xué)號、性別、都是屬性。聯(lián)系(Relationship):數(shù)據(jù)對象彼此之間相互連接的方式稱為聯(lián)系,也稱為關(guān)系。E-R模型E-R圖的組成要素及其畫法實體名聯(lián)系名屬性名實體集表示屬性表示聯(lián)系表示實體集及其屬性表示繪制E-R圖映射基數(shù)一對一XXXXYYYYXXXXYYYY一對多XXXXY
YY多對一XXXXYYYY多對多客戶訂單產(chǎn)品
MN
1N一對一聯(lián)系(1:1)實體間不同聯(lián)系情況的E-R圖表示法一對一聯(lián)系(1:1):1主任系管理1姓名年齡學(xué)歷編號系編號系名任職時間例:每個系只有一個主任。則主任和系之間是一對一的關(guān)系。主任負責管理系的工作,主任和系之間是一個管理關(guān)系主任與系之間的一對一的聯(lián)系一對多的聯(lián)系(1:m):例:在某倉庫管理系統(tǒng)中,有兩個實體集:倉庫和商品。倉庫用來存放商品,且規(guī)定一類商品只能存放在一個倉庫中,一個倉庫可以存放多件商品。當商品存放在倉庫時,存放聯(lián)系中要反映出存放商品的數(shù)量。1倉庫商品存放n地點面積倉庫號商品號價格數(shù)量商品名一對多的聯(lián)系(1:m)倉庫和商品之間一對多的聯(lián)系多對多聯(lián)系(m:n):例:在某教務(wù)管理系統(tǒng)中,一個教師可以上多門課,一門課也可以由多個老師去上。教師和課程之間的多對多聯(lián)系,教師通過講授課程與課程發(fā)生聯(lián)系,在“講授”聯(lián)系中應(yīng)能反映出教師的授課質(zhì)量。m教師課程講授n教師名職稱教師號課程號班級質(zhì)量課程名多對多聯(lián)系(m:n)教師和課程之間的多對多聯(lián)系
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圖?!纠?.1】E-R圖設(shè)計步驟1.確定實體集:網(wǎng)絡(luò)圖書銷售系統(tǒng)中有兩個實體集:圖書和會員2.確定實體集屬性及主碼:(1)實體集會員屬性有:身份證號,會員姓名,性別,聯(lián)系電話,注冊時間,密碼。
會員實體集中可用身份證號來唯一標識各會員,所以主碼為身份證號。(2)實體集圖書屬性有:圖書編號,圖書類別,書名,作者,出版社,出版時間,單價,數(shù)量,折扣,封面圖片。
圖書實體集中可用圖書編號來唯一標識圖書,所以主碼為圖書編號。3.確定實體集之間的聯(lián)系:
圖書銷售給會員時圖書與會員建立關(guān)聯(lián),聯(lián)系“銷售”的屬性有:訂購冊數(shù),訂購時間,是否發(fā)貨,是否收貨,是否結(jié)清。為了更方便標識銷售記錄,可添加訂單號作為該聯(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)針對每一用戶畫出該用戶信息的局部E—R圖,確定該用戶視圖的實體、屬性和聯(lián)系。需注意的是:能作為屬性的就不要作為實體,這有利于E—R圖的簡化。
(2)綜合局部E—R圖,生成總體E—R圖。在綜合過程中,同名實體只能出現(xiàn)一次,還要去掉不必要的聯(lián)系,以便消除冗余。一般來說,從總體E—R圖必須能導(dǎo)出原來的所有局部視圖,包括實體、屬性和聯(lián)系。復(fù)雜E-R圖設(shè)計實例
【例2.2】工廠物流管理中的涉及雇員、部門、供應(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)各部門從倉庫中提取原料,并將成品放在倉庫中。一個倉庫可以存放多個部門的產(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ū)分E-R圖設(shè)計中常見問題分析【例2.3】畫出出版社和圖書的E-R圖。1.實體與聯(lián)系分析:一個出版社可以出版多本圖書,一本圖書只能由一個出版社出版,出版社和圖書之間就是一對多的關(guān)系。2.屬性與主碼:出版社實體有社名、地址、郵編、網(wǎng)址、聯(lián)系電話等屬性。為了建立出版社與圖書實體一對多的聯(lián)系,還應(yīng)該有一個出版社代碼來唯一標識出版社;
圖書實體有出版社、書名、作者、價格等屬性。為了唯一標識圖書,還應(yīng)設(shè)置書號屬性。
根據(jù)以上分析,畫出出版社與圖書的E-R圖如下:圖書出版E-R圖案例分析
出版社和圖書的E-R圖分析:(1)出版社和圖書的關(guān)系:出版社通過出版與圖書建立關(guān)聯(lián)。一個出版社可以出版多本圖書,一本圖書一般由一個出版社出版,出版社和圖書之間就是一對多的關(guān)系。(2)出版社實體有社名、地址、郵編、網(wǎng)址、聯(lián)系電話等屬性,為了建立出版社與圖書實體一對多的聯(lián)系,還應(yīng)該有一個出版社代碼來唯一標識出版社(3)圖書實體有出版社代碼、書名、作者、價格等屬性。為了唯一標識圖書,還應(yīng)設(shè)置書號屬性。圖書出版E-R圖問題思考(1)1、怎么標識書號(選取關(guān)鍵字)?國際上規(guī)定:全世界的每本書都應(yīng)該有唯一的編號,這個號碼叫做ISBN號,俗稱書號。ISBN號碼又分為幾個子域,每個域的代碼表示不同的含義,從而保證了圖書書號的全球唯一性。因此,用ISBN書號作為圖書的唯一標識似乎是非常合理的。在實際管理過程中,如果有些書或者資料還沒有書號怎么處理?一般不能以ISBN書號唯一標識圖書實體,而應(yīng)該自己定義唯一標識圖書實體的屬性,如定義內(nèi)部的圖書編號規(guī)則。在現(xiàn)實世界中,類似這樣的問題有很多,通常需要為實體集定義額外的關(guān)鍵字段。圖書出版E-R圖問題思考(2)2、有些屬性的值如果有多個,該怎么辦?出版社實體有電話屬性。但一個出版社一般不止一部電話,怎么處理?一種方法是仍使用一個電話屬性,采用只保存一部電話或幾部電話寫在一起,這種方法適合于小單位。第二種方法是將電話屬性獨立出來,建立一個新的電話實體集,通過出版社代碼屬性,建立和出版社的一對多聯(lián)系。圖書出版E-R圖問題思考(3)3、如何提取實體的屬性?實體的屬性可以說是無窮無盡,到底應(yīng)提取哪些屬性,要結(jié)合具體應(yīng)用系統(tǒng)考慮。比如,對圖書實體,一般屬性有書號、社代碼、書名、作者、價格、版次等,如果開發(fā)的是書店管理系統(tǒng),這些屬性一般夠用了,但如果要開發(fā)印刷廠管理系統(tǒng),還需要增加圖書大小(32開還是16開,或具體數(shù)字)、印刷紙張規(guī)格、是否彩印、彩印規(guī)格、印刷數(shù)量、交貨日期等屬性。所以,提取一個實體的屬性也要具體問題具體分析。通過出版社—圖書的例子引出的三個問題,說明建立在現(xiàn)實世界基礎(chǔ)上的E-R模型并不只有唯一答案。面向不同的應(yīng)用、使用不同的方法,可以設(shè)計出不同的E-R模型。E—R模型到關(guān)系模型的轉(zhuǎn)換
把E-R圖轉(zhuǎn)換為關(guān)系模型可遵循如下原則:
(1)對于E—R圖中每個實體集,都應(yīng)轉(zhuǎn)換為一個關(guān)系,該關(guān)系應(yīng)包括對應(yīng)實體的全部屬性,并應(yīng)根據(jù)關(guān)系所表達的語義確定哪個屬性或哪幾個屬性組作為“主關(guān)鍵字”,主關(guān)鍵字用來標識實體。(2)對于E—R圖中的聯(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)系的各實體集的主碼屬性構(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è)名,性別,出生時間,總學(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實體集是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)鍵字”,并且如果聯(lián)系有屬性,也要歸入這個關(guān)系中。E-R模型到關(guān)系模型的轉(zhuǎn)換總結(jié)任務(wù)二數(shù)據(jù)庫設(shè)計規(guī)范化僅有好的RDBMS并不足以避免數(shù)據(jù)冗余,必須在數(shù)據(jù)庫的設(shè)計中創(chuàng)建好的表結(jié)構(gòu)DrE.F.codd最初定義了規(guī)范化的三個級別,范式是具有最小冗余的表結(jié)構(gòu)。這些范式是:第一范式(1stNF-FirstNormalFromate)第二范式(2ndNF-SecondNormalFromate)第三范式(3rdNF-ThirdNormalFromate)關(guān)系數(shù)據(jù)庫范式理論是在數(shù)據(jù)庫設(shè)計過程中將要依據(jù)的準則,數(shù)據(jù)庫結(jié)構(gòu)必須要滿足這些準則,才能確保數(shù)據(jù)的準確性和可靠性。這些準則則被稱為規(guī)范化形式,即范式。第一范式(1stNF)BuyerIDCountryCity1342中國英國日本美國北京倫敦東京紐約………BuyerIDAddress1234中國北京市美國紐約市英國倫敦日本東京市……第一范式的目標是確保每列的原子性如果每列都是不可再分的最小數(shù)據(jù)單元(也稱為最小的原子單元),則滿足第一范式(1NF)第二范式(2ndNF)如果一個關(guān)系滿足1NF,并且除了主鍵以外的其他列,都依賴與該主鍵,則滿足第二范式(2NF)第二范式要求每個表只描述一件事情Orders字段例子訂單編號產(chǎn)品編號訂購日期價格001A0012000-2-3$29.00……Orders字段例子訂單編號訂購日期0012000-2-3Products字段例子產(chǎn)品編號價格A001$29.00第三范式(3rdNF)如果一個關(guān)系滿足2NF,并且除了主鍵以外的其他列都不傳遞依賴于主鍵列,則滿足第三范式(3NF)金額=單價*數(shù)量,是可以通過其它列計算得到,存在函數(shù)依賴關(guān)系,不滿足第三范式Orders字段例子訂單編號產(chǎn)品編號單價001AB00130數(shù)量50金額
1500Orders字段例子訂單編號產(chǎn)品編號單價001AB00130數(shù)量
50規(guī)范化實例分析(1)假設(shè)某建筑公司要設(shè)計一個數(shù)據(jù)庫。公司的業(yè)務(wù)規(guī)則概括說明如下:公司承擔多個工程項目,每一項工程有:工程號、工程名稱、施工人員等公司有多名職工,每一名職工有:職工號、姓名、性別、職務(wù)(工程師、技術(shù)員)等公司按照工時和小時工資率支付工資,小時工資率由職工的職務(wù)決定(例如,技術(shù)員的小時工資率與工程師不同)公司定期制定一個工資報表,如圖-1所示規(guī)范化實例分析(2)工程號工程名稱職工號姓名職務(wù)小時工資率工時實發(fā)工資A1花園大廈1001齊光明工程師6513845.001002李思岐技術(shù)員6016960.001004葛宇宏律師60191140.00小計2945.00A2立交橋1001齊光明工程師6515975.001003鞠明亮工人5517935.00小計1910.00A3臨江飯店1002李思岐技術(shù)員60181080.001004葛宇洪技術(shù)員6014840.00小計1920.00工資發(fā)放表規(guī)范化實例分析(3)工程號工程名稱職工號姓名職務(wù)小時工資率工時A1花園大廈1001齊光明工程師6513A1花園大廈1002李思岐技術(shù)員6016A1花園大廈1001齊光明工程師6513A1花園大廈1003鞠明亮工人5517A3臨江飯店1002李思岐技術(shù)員6018A3臨江飯店1004葛宇洪技術(shù)員6014項目工時表規(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)生工資報表,但是每當一名職工分配一個工程時,都要重復(fù)輸入大量的數(shù)據(jù)。這種重復(fù)的輸入操作,很可能導(dǎo)致數(shù)據(jù)的不一致性。一張表描述了多件事情,如下圖所示。規(guī)范化實例分析(5)工程號工程名稱職工號姓名職務(wù)小時工資率工時工程信息員工信息項目工時信息應(yīng)用第二范式規(guī)范化工程號工程名稱職工號姓名職務(wù)小時工資率工程號職工號工時工程表員工表項目工時表滿足第三范式嗎?應(yīng)用第三范式規(guī)范化工程號工程名稱職工號姓名職務(wù)職務(wù)小時工資率工程號職工號工時工程表員工表職務(wù)表工程表規(guī)范化和性能的關(guān)系為滿足某種商業(yè)目標,數(shù)據(jù)庫性能比規(guī)范化數(shù)據(jù)庫更重要通過在給定的表中添加額外的字段,以大量減少需要從中搜索信息所需的時間通過在給定的表中插入計算列(如成績總分),以方便查詢進行規(guī)范化的同時,還需要綜合考慮數(shù)據(jù)庫的性能??偨Y(jié)在需求分析階段,設(shè)計數(shù)據(jù)庫的一般步驟為:收集信息標識對象標識每個對象的屬性標識對象之間的關(guān)系在概要設(shè)計階段和詳細設(shè)計階段,設(shè)計數(shù)據(jù)庫的步驟為:繪制E-R圖將E-R圖轉(zhuǎn)換為表格應(yīng)用三大范式規(guī)范化表格為了設(shè)計結(jié)構(gòu)良好的數(shù)據(jù)庫,需要遵守一些專門的規(guī)則,稱為數(shù)據(jù)庫的設(shè)計范式。第一范式(1NF)的目標:確保每列的原子性。第二范式(2NF)的目標:確保表中的每列,都和主鍵相關(guān)。第三范式(3NF)的目標:確保每列都和主鍵列直接相關(guān),而不是間接相關(guān)。單元2數(shù)據(jù)庫管理環(huán)境的建立項目知識要點與目標項目知識要點知識能力目標學(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ù)庫1MySQL服務(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ù)廣義:文字、聲音、圖形等一切能被計算機接收且能被處理的符號大量、海量數(shù)據(jù)庫存儲大量數(shù)據(jù),方便檢索和訪問保持數(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ù)”的“倉庫”數(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ù)庫管理系統(tǒng)(DBMS-DataBaseManagementSystem
)對收集到的大量數(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)(DatabaseSystem,DBS)一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶結(jié)構(gòu)組成大數(shù)據(jù)時代的數(shù)據(jù)庫管理系統(tǒng)當前主要的OldSQL(關(guān)系數(shù)據(jù)庫)、NoSQL和NewSQL類數(shù)據(jù)庫產(chǎn)品分類大數(shù)據(jù)時代的數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫流行排行榜DB-EnginesRanking大數(shù)據(jù)時代的數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫趨勢流行度排名DB-EnginesRanking時下流行的DBMS簡介(1)OracleOracle公司的產(chǎn)品,世界上最好的數(shù)據(jù)庫系統(tǒng)“關(guān)系-對象”型數(shù)據(jù)庫支持70多種操作系統(tǒng),配置、管理和維護復(fù)雜主要滿足對銀行、金融、保險等企業(yè)、事業(yè)開發(fā)大型數(shù)據(jù)庫需求SQLServerMicrosoft公司的產(chǎn)品,針對不同用戶群體的多個版本要求在Windows操作系統(tǒng)平臺上運行易用性好時下流行的DBMS簡介(2)MySQL瑞典MySQLAB公司開發(fā),被SUN公司收購,后Oracle收購Sun,現(xiàn)在MySQL并入了Oracle旗下。體積小、速度快、成本低、開放源碼廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中注意:招聘時通常要求“熟練使用SQLServer/Oracle/MySQL一種或多種數(shù)據(jù)庫”結(jié)構(gòu)化查詢語言SQL2.結(jié)構(gòu)化查詢語言SQL(StructuredQueryLanguage)SQL語言是用于關(guān)系數(shù)據(jù)庫查詢的結(jié)構(gòu)化語言,集數(shù)據(jù)查詢(dataquery)、數(shù)據(jù)操縱(datamanipulation)、數(shù)據(jù)定義(datadefinition)和數(shù)據(jù)控制(datacontrol)功能于一體,充分體現(xiàn)了關(guān)系數(shù)據(jù)語言的特點和優(yōu)點。主要特點包括:(1)綜合統(tǒng)一(2)高度非過程化(3)面向集合的操作方式(4)以同一種語法結(jié)構(gòu)提供兩種使用方式(5)語言簡潔,易學(xué)易用任務(wù)二MySQL的安裝與配置
選用MySQL數(shù)據(jù)庫有以下幾方面的優(yōu)勢。
技術(shù)趨勢
成本因素
跨平臺性
性價比高
集群功能MySQL8.0的部分新特性。
更簡便的NoSQL支持
更好的索引
安全和賬戶管理
InnoDB的變化
字符集支持MySQL的安裝下載地址:/downloads/--下載MySQL社區(qū)版MySQL的安裝MySQL社區(qū)版是免費的,有MSI和zip兩種安裝方式:下載前先選擇安裝平臺(windows)安裝文件方式(MSI或Zip)MySQL的安裝安裝向?qū)?-產(chǎn)品類型選擇:Serveronly(服務(wù)器)MySQL的安裝配置向?qū)?-類型和網(wǎng)絡(luò)配置:ServerComputerMySQL的安裝配置向?qū)?-賬號和角色配置:為MySQL的超級用戶root設(shè)置密碼連接服務(wù)器“開始”→“程序”→MySQL→“MySQLServer8.0”→“MySQL8.0CommandLineClient”。在客戶端窗口輸入安裝時為root用戶設(shè)置的密碼。窗口中出現(xiàn)MySQL命令行提示符“mysql>“,安裝成功。MySQL圖形化管理工具
NavicatforMySQL是一個桌面版MySQL數(shù)據(jù)庫管理和開發(fā)工具,易學(xué)易用,很受大家的歡迎。本課程將以NavicatforMySQL為例介紹MySQL數(shù)據(jù)庫管理工具的使用。單元3數(shù)據(jù)庫和表的創(chuàng)建與管理項目知識要點知識能力目標學(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參照完整性約束4CHECK完整性約束【典型工作任務(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項目知識要點與目標網(wǎng)絡(luò)圖書銷售系統(tǒng)設(shè)計實例1、網(wǎng)絡(luò)圖書銷售系統(tǒng)簡化的業(yè)務(wù)邏輯網(wǎng)絡(luò)銷售的圖書信息包括:圖書實體:圖書編號,圖書類別,書名,作者,出版社,出版時間,單價,數(shù)量,折扣等;用戶需要購買圖書必須先注冊為會員會員實體:身份證號,會員姓名,密碼,性別,聯(lián)系電話,注冊時間等;系統(tǒng)根據(jù)會員的購買訂單形成銷售信息訂單信息:訂單號,身份證號,圖書編號,訂購冊數(shù),訂購時間,是否發(fā)貨,是否收貨,是否結(jié)清
網(wǎng)絡(luò)圖書銷售系統(tǒng)設(shè)計實例2.網(wǎng)絡(luò)圖書銷售數(shù)據(jù)庫E-R圖網(wǎng)絡(luò)圖書銷售系統(tǒng)設(shè)計實例3.將E-R圖轉(zhuǎn)換為關(guān)系模型:Bookstore(數(shù)據(jù)庫)①Book(
圖書編號,圖書類別,書名,作者,出版社,出版時間,單價,數(shù)量,折扣)②Members(用戶號,姓名,性別,密碼,聯(lián)系電話,注冊時間)③ell(訂單號,用戶號,圖書編號,訂購冊數(shù),訂購單價,訂購時間,是否發(fā)貨,是否收貨,是否結(jié)清)網(wǎng)絡(luò)圖書銷售系統(tǒng)設(shè)計實例4.由關(guān)系模型到數(shù)據(jù)庫基本表Book表:Members表:Sell表:MySQL數(shù)據(jù)庫模型在數(shù)據(jù)庫服務(wù)器中可以存儲多個數(shù)據(jù)庫文件,所以建立數(shù)據(jù)庫時要設(shè)定數(shù)據(jù)庫的文件名,每個數(shù)據(jù)庫有惟一的數(shù)據(jù)庫文件名作為與其它數(shù)據(jù)庫區(qū)別的標識。數(shù)據(jù)庫文件:數(shù)據(jù)庫是由相關(guān)數(shù)據(jù)表組成,一個數(shù)據(jù)庫包括多個數(shù)據(jù)表。數(shù)據(jù)庫文件用于記錄數(shù)據(jù)庫中數(shù)據(jù)表構(gòu)成的信息。數(shù)據(jù)庫只能由得到授權(quán)的用戶訪問,這樣保證了數(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$$CREATEPROCEDUREDELETE_STUDENT(INXHCHAR(6))BEGIN
創(chuàng)建數(shù)據(jù)庫MySQL安裝后,系統(tǒng)自動地創(chuàng)建information_scema和MySQL數(shù)據(jù)庫,MySQL把有關(guān)數(shù)據(jù)庫的信息存儲在這兩個數(shù)據(jù)庫中。如果刪除了這些數(shù)據(jù)庫,MySQL就不能正常工作。
對于用戶的數(shù)據(jù),需要創(chuàng)建新的數(shù)據(jù)庫來存放。
語法格式:CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]數(shù)據(jù)庫名[[DEFAULT]CHARACTERSET字符集名|[DEFAULT]COLLATE校對規(guī)則名]說明:語句中“[]”內(nèi)為可選項。{|}表示二選一。創(chuàng)建數(shù)據(jù)庫
命令行方式創(chuàng)建數(shù)據(jù)庫
在SQL語言創(chuàng)建數(shù)據(jù)庫命令createdatabase中,如果省略語句中“[]”中的所有可選項,其結(jié)構(gòu)形式如下:
CREATEDATABASE數(shù)據(jù)庫名;數(shù)據(jù)庫名表示被創(chuàng)建數(shù)據(jù)庫名,數(shù)據(jù)庫名必須符合以下規(guī)則:數(shù)據(jù)庫名必須唯一;名稱內(nèi)不能含有“/”及“.”等非法字符;最大不能超過64字節(jié)。【例3.1】創(chuàng)建一個名為Bookstore的數(shù)據(jù)庫。CREATEDATABASEBookstore;顯示數(shù)據(jù)庫顯示服務(wù)器中已建立的數(shù)據(jù)庫,使用SHOWDATABASES命令。語法格式:SHOWDATABASES此命令沒有用戶變量,執(zhí)行“SHOWDATABASES;”。注意:在MySQL中,每一條SQL語句都以“;”作為結(jié)束標志。顯示數(shù)據(jù)庫命令創(chuàng)建數(shù)據(jù)庫時使用IFNOTEXISTS如果在服務(wù)器已有test1數(shù)據(jù)庫的情況下,再創(chuàng)建一個名為test1的數(shù)據(jù)庫。因為MySQL不允許兩個數(shù)據(jù)庫使用相同的名字,所以會出錯。使用IFNOTEXISTS從句可以不顯示錯誤信息,例如:CREATEDATABASEIFNOTEXISTStest1;為了表達問題簡單,在以后的示例中單獨描述命令而不需要界面結(jié)果時,在命令前省略“mysql>”提示符。因為MySQL服務(wù)器中有多個數(shù)據(jù)庫,可以使用USE命令可指定當前數(shù)據(jù)庫。語法格式:
USE數(shù)據(jù)庫名說明:這個語句也可以用來從一個數(shù)據(jù)庫“跳轉(zhuǎn)”到另一個數(shù)據(jù)庫,在用CREATEDATABASE語句創(chuàng)建了數(shù)據(jù)庫之后,該數(shù)據(jù)庫不會自動成為當前數(shù)據(jù)庫,需要用這條USE語句來指定?!纠繉?shù)據(jù)庫test1設(shè)置為當前數(shù)據(jù)庫。
Usetest1;打開數(shù)據(jù)庫MySQL中的字符集和校對規(guī)則字符集是一套符號和編碼。校對規(guī)則是在字符集內(nèi)用于比較字符的一套規(guī)則。ASCII字符集中四個字母:‘A’、‘B’、‘a(chǎn)’、‘b’,每個字母賦予一個數(shù)值:‘A’=65,‘B’=66,‘a(chǎn)’=113,‘b’=114。字母‘A’是一個符號,數(shù)字65是‘A’的編碼,字母和它們的編碼組合在一起是一個字符集。假設(shè)我們希望比較兩個字符串的值:‘A’和‘b’。比較的最簡單的方法是查找編碼:‘A’為65,‘b’為114。因為65小于114,我們可以說‘A’小于‘b’。我們做的僅僅是在我們的字符集上應(yīng)用了一個校對規(guī)則。MySQL字符集和校對規(guī)則應(yīng)用MySQL支持40多種字符集的70多種校對規(guī)則。在同一臺服務(wù)器、同一個數(shù)據(jù)庫或甚至在同一個表中使用不同字符集或校對規(guī)則來混合字符串。
兩個不同的字符集不能有相同的校對規(guī)則。每個字符集有一個默認校對規(guī)則??捎肧HOWCHARACTERSET命令查看。ASCII碼字符集:使用7位二進制數(shù)來表示所有的大寫和小寫字母,數(shù)字0到9、標點符號,以及在美式英語中使用的特殊控制字符GB2312是中國國家標準的簡體中文字符集。GB2312收錄簡化漢字及一般符號、序號、數(shù)字、拉丁字母、日文假名、希臘字母、俄文字母、漢語拼音符號、漢語注音字母,共7445個圖形字符?!纠縿?chuàng)建一個名為Bookstore的數(shù)據(jù)庫,采用字符集gb2312和校對規(guī)則gb2312_chinese_ci。CREATEDATABASEBookstore
DEFAULTCHARACTERSETgb2312COLLATEgb2312_chinese_ci;修改數(shù)據(jù)庫數(shù)據(jù)庫創(chuàng)建后,如果需要修改數(shù)據(jù)庫的參數(shù),可以使用ALTERDATABASE命令。
語法格式:ALTER{DATABASE|SCHEMA}[數(shù)據(jù)庫名][[DEFAULT]CHARACTERSET字符集名|[DEFAULT]COLLATE校對規(guī)則名]
【例】修改數(shù)據(jù)庫Pet的默認字符集為latin1,校對規(guī)則為latin1_swedish_ci。ALTERDATABASEPetDEFAULTCHARACTERSETlatin1DEFAULTCOLLATElatin1_swedish_ci;刪除數(shù)據(jù)庫已經(jīng)創(chuàng)建的數(shù)據(jù)庫需要刪除,使用DROPDATABASE命令。
語法格式:DROPDATABASE[IFEXISTS]數(shù)據(jù)庫名數(shù)據(jù)庫test2命令如下:
DROPDATABASEtest2;刪顯示服務(wù)器中已建立的數(shù)據(jù)庫,
使用SHOWDATABASES命令。
語法格式:
SHOWDATABASES;任務(wù)二
數(shù)據(jù)庫表的操作
圖書目錄表的表結(jié)構(gòu)分析字段名圖書編號書名出版時間單價數(shù)量…字段值的表示方法用10個字符編號用40個字符表示yyyy-mm-dd表示用帶有2位小數(shù)的5位數(shù)字表示用整數(shù)表示數(shù)據(jù)類型Char(10)Varchar(40)dateFloat(5,2)Int圖書編號書名出版時間單價數(shù)量…7-115-12683-6計算機應(yīng)用基礎(chǔ)2022-06-0145.50
7-301-06342-3網(wǎng)絡(luò)數(shù)據(jù)庫2020-08-0149.5031
7-302-05701-7PHP高級語言2021-02-0136.505
圖書目錄表(Book)數(shù)據(jù)類型(1)數(shù)值類型MySQL支持所有標準SQL數(shù)值數(shù)據(jù)類型。
嚴格數(shù)值數(shù)據(jù)類型:INTEGER或INT,SMALLINT,DECIMAL或DEC,NUMERIC
近似數(shù)值數(shù)據(jù)類型:FLOAT,REAL,PRECISIONMySQL支持選擇在該類型關(guān)鍵字后面的括號內(nèi)指定整數(shù)值的顯示寬度(例如,INT(4))。對于浮點列類型,在MySQL中單精度值使用4個字節(jié),雙精度值使用8個字節(jié)。MySQL允許使用FLOAT(M,D)或REAL(M,D)或DOUBLEPRECISION(M,D)格式?!?M,D)”表示該值一共顯示M位整數(shù),其中D位位于小數(shù)點后面。例如,定義為FLOAT(7,4)的一個列可以顯示為-999.9999。MySQL保存值時進行四舍五入,因此如果在FLOAT(7,4)列內(nèi)插入999.00009,近似結(jié)果是999.0001。字符串類型(2)字符串類型:字符串類型的數(shù)據(jù)主要是由字母、漢字、數(shù)字符號、特殊符號構(gòu)成的數(shù)據(jù)對象。按照字符個數(shù)多少的不同分為以下幾類:CHAR:列的長度固定為創(chuàng)建表時聲明的長度。長度可以為從0到255的任何值。當保存CHAR值時,在它們的右邊填充空格以達到指定的長度。
例如,在學(xué)生情況表中,如果設(shè)定“namechar(8)”,表示“name”是8個字符長度的字符串,可以做賦值引用即:name=`張三`,這里name的值包括8個字符,其中2個漢字(按照4個字符處理)和4個空格。name右側(cè)會有若干個空格占位。這樣浪費了磁盤的存儲空間。字符串類型VARCHAR:列中的值為可變長字符串。長度可以指定為0到65,535之間的值。(VARCHAR的最大有效長度由最大行大小和使用的字符集確定。整體最大長度是65,532字節(jié))。同CHAR對比,VARCHAR值保存時只保存需要的字符數(shù)。
例如,在學(xué)生情況表中,如果設(shè)定“namevarchar(8)”,可以做賦值引用即:name=`張三`,這里姓名的值包括5個字符,其中2個漢字(按照4個字符處理)和1個空格。name右側(cè)只有一個空格占位。BLOB和TEXT類型BLOB:二進制字符串(字節(jié)字符串)。
BLOB列沒有字符集,并且排序和比較基于列值字節(jié)的數(shù)值值。這種類型數(shù)據(jù)用于存儲聲音、視頻、圖像等數(shù)據(jù)。
例如,圖書數(shù)據(jù)處理中的圖書封面、會員照片可以設(shè)定成為blob類型。TEXT:非二進制字符串(字符字符串)。TEXT列有一個字符集,并且根據(jù)字符集的校對規(guī)則對值進行排序和比較。在實際應(yīng)用中像個人履歷、獎懲情況、職業(yè)說明、內(nèi)容簡介等設(shè)定為text的數(shù)據(jù)類型。
例如,圖書數(shù)據(jù)處理中的內(nèi)容簡介可以設(shè)定為text類型。BLOB和TEXT列不能有默認值。BLOB或TEXT對象的最大大小由其類型確定,但在客戶端和服務(wù)器之間實際可以傳遞的最大值由可用內(nèi)存數(shù)量和通信緩存區(qū)大小確定。你可以通過更改max_allowed_packet變量的值更改消息緩存區(qū)的大小,但必須同時修改服務(wù)器和客戶端程序。日期和時間類型(3)日期和時間類型date:表示日期,輸入數(shù)據(jù)的格式是:yyyy-mm-dd。支持的范圍是'1000-01-01'到'9999-12-31'。time:表示時間,輸入數(shù)據(jù)的格式是:hh:mm:ss。TIME值的范圍可以從'-838:59:59'到'838:59:59'。小時部分會因此大的原因是TIME類型不僅可以用于表示一天的時間(必須小于24小時),還可能為某個事件過去的時間或兩個事件之間的時間間隔(可以大于24小時,或者甚至為負)。datetime:表示日期時間,格式是:yyyy-mm-ddhh:mm:ss。支持的范圍為'1000-01-0100:00:00'到'9999-12-3123:59:59'。
例如,在圖書銷售信息管理中注冊時間、訂購時間可以設(shè)定成為datetime類型。CREATETABLE命令
為數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)表,可以使用SQL命令CREATETABLE來完成。此語句的完整語法是相當復(fù)雜的,因為存在很多的可選子句創(chuàng)建表使用CREATETABLE命令。
語法格式:CREATETABLE[IFNOTEXISTS]表名
(列名
數(shù)據(jù)類型[NOTNULL|NULL][DEFAULT列默認值]…)ENGINE=存儲引擎
CREATETABLE命令的基本格式:
CREATETABLEtbl_name
(列名1數(shù)據(jù)類型1[NOTNULL|NULL],列名2數(shù)據(jù)類型2[NOTNULL|NULL],…..)
案例分析-創(chuàng)建學(xué)生基本情況表字段名字段類型寬度說明圖書編號char10字符,非NULL,主鍵書名varchar40字符,非NULL出版時間date20日期,非NULL單價Float(5,2)兩位小數(shù),非NULL數(shù)量int
3位整數(shù),非NULL…圖書目錄表如下
,在數(shù)據(jù)庫Bookstore中創(chuàng)建圖書目錄表Book。
數(shù)據(jù)表結(jié)構(gòu)分析:圖書編號書名出版時間單價數(shù)量…7-115-12683-6計算機應(yīng)用基礎(chǔ)2022-06-0145.50
7-301-06342-3網(wǎng)絡(luò)數(shù)據(jù)庫2020-08-0149.5031
7-302-05701-7PHP高級語言2021-02-0136.505
案例分析-創(chuàng)建Book表命令CREATETABLEbook(
圖書編號char(20)NOTNULLPRIMARYKEY,
圖書類別varchar(20)NOTNULLDEFAULT'計算機',
書名varchar(40)NOTNULL,
作者char(10)NOTNULL,
出版社varchar(20)NOTNULL,
出版時間dateNOTNULL,
單價float(5,2)NOTNULL,
數(shù)量int(5),
折扣float(3,2),
封面圖片blob)ENGINE=InnoDB;命令代碼:顯示數(shù)據(jù)表信息(1)顯示數(shù)據(jù)表文件名
語法格式:
SHOWTABLES
【例3.11】顯示Bookstore數(shù)據(jù)庫建立的數(shù)據(jù)表文件:
USEBookstoreSHOWTABLES;(2)顯示數(shù)據(jù)表結(jié)構(gòu)
語法格式:{DESCRIBE|DESC}表名[列名|通配符]DESC是DESCRIBE的簡寫,二者用法相同?!纠坑肈ESCRIBE語句查看Book表的列的信息。
USEBookstoreDESCRIBEBook;【例】查看Book
表圖書編號列的信息。
USEBookstoreDESCBook圖書編號;修改表
ALTERTABLE用于更改原有表的結(jié)構(gòu)。例如,可以增加或刪減列,創(chuàng)建或取消索引,更改原有列的類型,重新命名列或表,還可以更改表的評注和表的類型。語法格式:ALTERTABLE表名ADD[COLUMN]列定義[FIRST|AFTER列名]/*添加列*/ |ALTER[COLUMN]列名
{SETDEFAULT默認值|DROPDEFAULT}/*修改默認值*/|CHANGE[COLUMN]舊列名
列定義 /*對列重命名*/[FIRST|AFTER列名] |MODIFY[COLUMN]列定義
[FIRST|AFTER列名]/*修改列類型*/|DROP[COLUMN]列名 /*刪除列*/|RENAME[TO]新表名
/*重命名該表*/修改表舉例
【例】假設(shè)已經(jīng)在數(shù)據(jù)庫Bookstore中創(chuàng)建了表book,表中存在“書名”列。在表book中增加“瀏覽次數(shù)”列并將表中的“書名”列刪除。
ALTERTABLEbookADD瀏覽次數(shù)tinyintNULL,DROPCOLUMN書名;【例】假設(shè)數(shù)據(jù)庫Bookstore中已經(jīng)存在table1表,將table1表重命名為student。
ALTERTABLEtable1RENAMETOstudent;
修改表名除了上面的ALTERTABLE命令,還可以直接用RENAMETABLE語句來更改表的名字。
語法格式:RENAMETABLE舊表名1TO新表名1[,舊表名2TO新表名2]...【例】假設(shè)數(shù)據(jù)庫BookStore中已經(jīng)存在table2表和table3表,將table2表重命名為orders,table3表重命名為orderlist。
RENAMETABLEtable2TOorders,Table3TOorderlist;復(fù)制表語法格式:CREATETABLE[IFNOTEXISTS]新表名[LIKE參照表名]|[AS(select語句)]
使用LIKE關(guān)鍵字創(chuàng)建一個與old_table_name表相同結(jié)構(gòu)的新表,列名、數(shù)據(jù)類型、空指定和索引也將復(fù)制,但是表的內(nèi)容不會復(fù)制,因此創(chuàng)建的新表是一個空表。
使用AS關(guān)鍵字可以復(fù)制表的內(nèi)容,但索引和完整性約束是不會復(fù)制的?!纠考僭O(shè)數(shù)據(jù)庫BookStore中有一個表Book,創(chuàng)建Book表的一個名為book_copy1的拷貝。
CREATETABLEbook_copy1LIKEBook;【例】創(chuàng)建表Book的一個名為book_copy2的拷貝,并且復(fù)制其內(nèi)容。
CREATETABLEbook_copy2AS(SELECT*FROMBook);刪除表需要刪除一個表時可以使用DROPTABLE語句。語法格式:DROPTABLE[IFEXISTS]表名1[,表名2
]...這個命令將表的描述、表的完整性約束、索引及和表相關(guān)的權(quán)限等都全部刪除?!纠縿h除表test。
USEBookstore;DROPTABLEIFEXISTStest;單元4數(shù)據(jù)操縱項目知識要點與目標項目知識要點知識能力目標學(xué)時
任務(wù)1插入表數(shù)據(jù)任務(wù)2修改表數(shù)據(jù)任務(wù)3刪除表數(shù)據(jù)【典型工作任務(wù)】數(shù)據(jù)的添加、修改、刪除操作【技能要求】1數(shù)據(jù)的插入操作2數(shù)據(jù)的修改操作3數(shù)據(jù)的刪除操作【知識要求】1理解常用數(shù)據(jù)類型2掌握數(shù)據(jù)操縱的SQL語句4項目實訓(xùn)“員工管理系統(tǒng)”數(shù)據(jù)表操作4數(shù)據(jù)插入一旦創(chuàng)建了數(shù)據(jù)庫和表,下一步就是向表里插入數(shù)據(jù)。通過INSERT或REPLACE語句可以向表中插入一行或多行數(shù)據(jù)。語法格式:
INSERT[IGNORE][INTO]表名[(列名,...)]VALUES({表達式|DEFAULT},..),(...),...|SET列名={表達式|DEFAULT},...如果要給全部列插入數(shù)據(jù),列名可以省略。如果只給表的部分列插入數(shù)據(jù),需要指定這些列。對于沒有指出的列,它們的值根據(jù)列默認值或有關(guān)屬性來確定,MySQL處理的原則是:(1)具有自動遞增屬性的列,系統(tǒng)生成序號值來唯一標志列。(2)具有默認值的列,其值為默認值。(3)沒有默認值的列,若允許為空值,則其值為空值;若不允許為空值,則出錯。(4)類型為timestamp的列,系統(tǒng)自動賦值?!馰ALUES子句:包含各列需要插入的數(shù)據(jù)清單,數(shù)據(jù)的順序要與列的順序相對應(yīng)。若tb1_name后不給出列名,則在VALUES子句中要給出每一列(除IDENTITY和timestamp類型的列)的值,如果列值為空,則值必須置為NULL,否則會出錯。VALUES子句中的值:(1)表達式:可以是一個常量、變量或一個表達式,也可以是空值NULL,其值的數(shù)據(jù)類型要與列的數(shù)據(jù)類型一致。例如,列的數(shù)據(jù)類型為int,插入的數(shù)據(jù)是‘a(chǎn)aa’就會出錯。當數(shù)據(jù)為字符型時要用單引號括起。(2)DEFAULT:指定為該列的默認值。前提是該列原先已經(jīng)指定了默認值。如果列清單和VALUES清單都為空,則INSERT會創(chuàng)建一行,每個列都設(shè)置成默認值。插入語句最常用格式:
INSERTINTO表名(列名,...)VALUES(表達式,...)
INSERT命令
【例】向Bookstore數(shù)據(jù)庫中的表Book中插入如下的一行數(shù)據(jù):
USEBookstore;INSERTINTObook
VALUES('6625','計算機','Dreamwearer8',‘2010-08-16’,33.25,NULL,NULL);INSERT命令舉例
圖書編號圖書類別書名出版日期單價數(shù)量封面6625計算機Dreamwearer82015-08-1633.25【例】若表Book中圖書類別的默認值為“計算機”,數(shù)量默認值為NULL,插入上例那行數(shù)據(jù)。INSERTINTOBook(圖書編號,書名,出版日期,單價)VALUES('6626','網(wǎng)站制作','2010-08-16',33.25);與下列命令效果相同:INSERTINTOBookSET圖書編號=‘6627’,書名=‘網(wǎng)頁設(shè)計',圖書類別=DEFAULT,出版日期='2010-08-16',單價=33.25;INSERT命令舉例
如果記錄已經(jīng)插入了,再執(zhí)行插入該記錄的SQL代碼,系統(tǒng)提示1062錯誤,這是因為兩條記錄的圖書編號相同,而圖書編號是Book表的主鍵,要求唯一。當插入第二條相同編號的記錄時,系統(tǒng)提示錯誤,意為表中已有圖書編號為6625的記錄,第二條記錄不能插入??梢允褂肦EPLACE語句,用第二條記錄替換第一條記錄:REPLACEINTOBookVALUES('6625','計算機','PHP網(wǎng)站制作','2011-10-16',23.5,30);INSERT命令舉例
【例】向Book表中插入一行數(shù)據(jù):其中,封面圖片的照片存儲路徑為D:\IMAGE\picture.jpg。方法一:以路徑的形式來存儲INSERTINTOBookVALUES('6628','計算機','計算機基礎(chǔ)','2011-10-16',45.5,40,'D:/IMAGE/picture.jpg');方法二、使用LOAD_FILE()函數(shù)直接存儲圖片INSERTINTOBookVALUES('6628','計算機','計算機基礎(chǔ)','2011-10-16',45.5,45,LOAD_FILE('D:/IMAGE/picture.jpg'));INSERT命令舉例
圖書編號圖書類別書名出版日期單價數(shù)量封面6628計算機計算機基礎(chǔ)2011-10-1645.540在一個單獨的INSERT語句中使用多個VALUES()子句一次插入多條記錄。INSERTINTOBookVALUES('6629','計算機','數(shù)據(jù)庫基礎(chǔ)','2016-02-16',25.5,40,null),('6630','科學(xué)','數(shù)學(xué)','2016-02-16',35.5,40,null);從上面的SQL代碼可以看出,當一次插入多條記錄時,每條記錄的數(shù)據(jù)要用()括起來,記錄與記錄之間用逗號分開。INSERT命令舉例
圖書編號圖書類別書名出版日期單價數(shù)量封面6629計算機數(shù)據(jù)庫基礎(chǔ)2016-02-1625.5406630科學(xué)數(shù)學(xué)2016-02-1635.540數(shù)據(jù)修改要修改表中的一行數(shù)據(jù),可以使用UPDATE語句,UPDATE可以用來修改一個表,也可以修改多個表。修改單個表,語法格式:UPDATE[IGNORE]表名SET列名1=表達式1[,列名2=表達式2...][WHERE條件]說明: ●SET子句:根據(jù)WHERE子句中指定的條件對符合條件的數(shù)據(jù)行進行修改。若語句中不設(shè)定WHERE子句,則更新所有行。●可以同時修改所在數(shù)據(jù)行的多個列值,中間用逗號隔開。修改表數(shù)據(jù)命令
【例】將Bookstore數(shù)據(jù)庫中Book表的所有書籍數(shù)量都增加10。將Members表中姓名為“張三”的員工的聯(lián)系電話改為,密碼改為“111111”。UPDATEBookSET數(shù)量=數(shù)量+10;UPDATEMembersSET聯(lián)系電話=,密碼='111111'
WHERE姓名='張三';任務(wù)二修改表數(shù)據(jù)
多表修改語法格式:UPDATE[IGNORE]
表名列表
SET
列名1=表達式1[,列名2=表達式2...][WHERE
條件]表名列表:包含了多個表的聯(lián)合,各表之間用逗號隔開。多表修改語法的其他部分與單表修改語法相同?!纠坑唵翁枮?6的客戶因某種原因退回4本圖書,請在sell表中修改訂購冊數(shù),同時書退回后,book表中該圖書的數(shù)量要增加4本。UPDATEsell,bookSETsell.訂購冊數(shù)=訂購冊數(shù)-4,book.數(shù)量=數(shù)量+4WHEREsell.圖書編號=book.圖書編號andsell.訂單號='16';當用UPDATE修改多個表時,要修改的表名之間用逗號分開,字段名因為涉及到多個表,用“表名.字段名”表示,多表連接條件須在WHERE子句中指定。數(shù)據(jù)刪除1.使用DELETE語句刪除數(shù)據(jù)從單個表中刪除,語法格式:DELETE[IGNORE]FROM表名[WHERE條件]如果省略WHERE子句則刪除該表的所有行?!纠繉ookstore數(shù)據(jù)庫的Members表中姓名為“張三”的員工的記錄刪除。USEBookstore;DELETEFROMMembersWHERE姓名='張三';【例】將Book表中數(shù)量小于5的所有行刪除。USEBookstore;DELETEFROMBookWHERE數(shù)量<5;刪除表數(shù)據(jù)命令從多個表中刪除行,語法格式:DELETE[IGNORE]表名1[.*][,表名2[.*]...]FROM表名列表[WHERE條件]或:DELETE[IGNORE]FROM表名1[.*][,表名2[.*]...] USING表名列表 [WHERE條件]【例】用戶號為D1963的客戶注銷了,請在members表中將該用戶記錄刪除,同時將其在sell表中的記錄也刪除。DELETEsell,membersFROMsell,membersWHEREsell.用戶號=members.用戶號ANDmembers.用戶號='D1963';或:DELETEFROMsell,membersUSINGsell,membersWHEREsell.用戶號=members.用戶號ANDmembers.用戶號='D1963';TRUNCATE命令2.使用TRUNCATETABLE語句刪除表數(shù)據(jù)使用TRUNCATETABLE語句將刪除指定表中的所有數(shù)據(jù),因此也稱其為清除表數(shù)據(jù)語句。語法格式:TRUNCATETABLE表名說明:由于TRUNCATETABLE語句將刪除表中的所有數(shù)據(jù),且無法恢復(fù),因此使用時必須十分小心。TRUNCATETABLE在功能上與不帶WHERE子句的DELETE語句(如DELETEFROMXS)相同,二者均刪除表中的全部行。但TRUNCATETABLE比DELETE速度快,且使用的系統(tǒng)和事務(wù)日志資源少。DELETE語句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項。而TRUNCATETABLE通過釋放存儲表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁的釋放。使用TRUNCATE
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版網(wǎng)絡(luò)直播平臺主播聘用合同標準模板
- 《高考導(dǎo)航》2022屆新課標數(shù)學(xué)(理)一輪復(fù)習(xí)-第二章-第5講-二次函數(shù)與冪函數(shù)-輕松闖關(guān)
- 2021成都龍泉驛區(qū)高考英語閱讀類、信息匹配課外自練(11)及答案
- 2024版合資公司協(xié)議書范本
- 2021濟南市高考英語(四月)完形填空、閱讀理解小練(9)答案
- 2024年砂洲場地租賃標準合同版B版
- 二零二五年度10kv配電工程施工及配件供應(yīng)合同2篇
- 全國電子工業(yè)版初中信息技術(shù)第一冊第1單元1.2活動2《了解IP地址》說課稿
- 二零二五年度基質(zhì)原料采購與市場推廣合同6篇
- 2024版室內(nèi)外花卉租賃協(xié)議條款集合版
- 2024-2030年撰寫:中國汽車半軸行業(yè)發(fā)展趨勢及競爭調(diào)研分析報告
- 北疆文化全媒體傳播體系的構(gòu)建與實踐
- 2025屆福建省廈門市重點中學(xué)高三第二次聯(lián)考語文試卷含解析
- OpenCV計算機視覺基礎(chǔ)教程(Python版)教學(xué)教案
- 2024年度二人合伙光伏發(fā)電項目投資合同3篇
- 《涉江采芙蓉》 課件高中語文統(tǒng)編版必修上冊
- 管道護理小組工作總結(jié)
- 北京市西城區(qū)2023-2024學(xué)年六年級上學(xué)期數(shù)學(xué)期末試卷(含答案)
- 幼兒園繪本故事《三只小豬蓋房子》教學(xué)課件全文
- 人臉識別項目施工方案方案
- 北京市房山區(qū)2023-2024學(xué)年九年級上學(xué)期期末語文試題(解析版)
評論
0/150
提交評論