




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)庫原理及應用學位輔導以下幾大部分:第一部分:數(shù)據(jù)庫基本概念第二部分:關(guān)系代數(shù)第三部分:關(guān)系規(guī)范化第四部分:數(shù)據(jù)庫安全性控制第五部分:數(shù)據(jù)庫設(shè)計第六部分:SQL語句(重點)第七部分:sql server 2000第一部分:數(shù)據(jù)庫基本概念一、數(shù)據(jù)庫技術(shù)的發(fā)展階段1.手工管理階段人工管理數(shù)據(jù)不獨立,不共享,冗余度大。2.文件系統(tǒng)階段數(shù)據(jù)保存在文件中,訪問時通過操作系統(tǒng)來訪問數(shù)據(jù)文件。3.數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)有了獨立性,數(shù)據(jù)共享,減少了數(shù)據(jù)冗余。數(shù)據(jù)庫管理系統(tǒng)(DBMS)用來管理和維護數(shù)據(jù)庫的系統(tǒng)軟件。數(shù)據(jù)庫管理系統(tǒng)的控制功能分為哪四種:1) 數(shù)據(jù)安全性控制2) 數(shù)據(jù)完整性控制3) 并發(fā)控制4) 數(shù)據(jù)恢復特點:1) 數(shù)據(jù)結(jié)構(gòu)化的2) 數(shù)據(jù)獨立性高,共享性好3) 數(shù)據(jù)冗余度小。獨立性:數(shù)據(jù)獨立性分為兩種:數(shù)據(jù)物理獨立性和數(shù)據(jù)邏輯獨立性。物理獨立性:存儲結(jié)構(gòu)發(fā)生變化,全局邏輯結(jié)構(gòu)不變,從而應用程序不變。邏輯獨立性:全局邏輯結(jié)構(gòu)發(fā)生變化,局部邏輯結(jié)構(gòu)不變,從而應用程序不變。4) 有統(tǒng)一的控制功能二、數(shù)據(jù)庫系統(tǒng)的組成1.數(shù)據(jù)庫是存儲在計算機內(nèi)、有組織的,可共享的數(shù)據(jù)集合。具有集成性、共享性等特點。2.軟件系統(tǒng)包括數(shù)據(jù)庫管理系統(tǒng)(DBMS)、操作系統(tǒng)等軟件。3.硬件系統(tǒng)4.用戶用戶分為終端用戶、應用程序員、系統(tǒng)分析員和數(shù)據(jù)庫管理員(DBA)三、數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)一般是指內(nèi)部體系結(jié)構(gòu),三級模式和二級映象1三級模式1)內(nèi)模式存儲模式,只有一個,叫物理級數(shù)據(jù)庫。2)模式概念模式,只有一個,叫概念級數(shù)據(jù)庫,它是數(shù)據(jù)庫全體數(shù)據(jù)的邏輯描述。全局邏輯結(jié)構(gòu)。3)外模式用戶模式,視圖,局部邏輯結(jié)構(gòu),外模式有多個。叫用戶級數(shù)據(jù)庫內(nèi)模式一個,模式一個,外模式多個。內(nèi)模式與模式是對應。2二級映象1)模式/內(nèi)模式一個,保證數(shù)據(jù)的物理獨立性。2)模式/外模式多個,保證數(shù)據(jù)的邏輯獨立性四、數(shù)據(jù)庫管理系統(tǒng)(DBMS)是一個系統(tǒng)軟件,用來管理數(shù)據(jù)庫的軟件,它是數(shù)據(jù)庫系統(tǒng)的核心部分。它包括以下功能:1 數(shù)據(jù)定義DDL定義模式,外模式,內(nèi)模式。2)數(shù)據(jù)操縱功能DML查詢、添加、修改和刪除記錄。3)數(shù)據(jù)控制功能DCL4)數(shù)據(jù)庫運行和維護5)數(shù)據(jù)庫建立和維護6)數(shù)據(jù)通信接口五、數(shù)據(jù)模型1現(xiàn)實世界、信息世界和計算機世界1)實體2)屬性3)實體型4)實體集5)鍵屬性或?qū)傩越M6)域7)聯(lián)系*一對一,一對多,多對多2.計算機世界1)字段2)記錄3)關(guān)鍵字4)域3.數(shù)據(jù)模型三要素數(shù)據(jù)結(jié)構(gòu)(靜態(tài)特性)、數(shù)據(jù)操作(動態(tài)特性)、完整性約束邏輯數(shù)據(jù)模型:4數(shù)據(jù)模型的分類這里數(shù)據(jù)模型的分類指的是邏輯模型。分為三類:1)層次模型使用樹結(jié)構(gòu)描述實體以及實體之間的聯(lián)系,有且只有一個結(jié)點沒有父結(jié)點,叫根結(jié)點,其他結(jié)點有且只有一個父結(jié)點。典型代表是IBM的IMS系統(tǒng)。2)網(wǎng)狀模型使用有向圖結(jié)構(gòu)描述實體以及實體之間的聯(lián)系。特點有一個以上的結(jié)沒有雙親,允許有兩個個以上的雙親結(jié)點。典型代表是DBTG系統(tǒng)。3)關(guān)系模型使用二維表結(jié)構(gòu)描述實體以及實體之間的聯(lián)系。注意以上三種模型層次模型只能描述一對一,一對多的聯(lián)系,網(wǎng)狀模型可以描述一對一,一對多和多對多,關(guān)系模型只能描述一對一,一對多。/關(guān)系模型的代表:sql server 2000,oracle,db2,sysbase面向?qū)ο蟮臄?shù)據(jù)模型。第二部分:關(guān)系代數(shù)一、廣義笛卡爾積是指一個關(guān)系與另一個關(guān)系沒有按條件進行相應的連接,且不去掉重復列和重復元組。即關(guān)系R(5個元組)和關(guān)系S有(6個元組)則關(guān)系R與關(guān)系S的笛卡爾積是30個元組。元組數(shù)是:r*s屬性個數(shù):u1+u2二、關(guān)系的性質(zhì)1.關(guān)系中的每個屬性都是不可分割的數(shù)據(jù)項,即原子項。2.關(guān)系中的每列不能重名,必須具有相同的數(shù)據(jù)類型。3.關(guān)系中不允許出現(xiàn)完全相同的元組4.關(guān)系中的行與列的順序可以任意的。三、關(guān)系的鍵與關(guān)系的完整性1.候選鍵一個屬性或?qū)傩越M能保證元組的惟一性,具有惟一性和最小性的特點。學號+姓名能否保證學生的惟一。但去掉姓名仍然惟一,2.關(guān)系鍵也叫關(guān)鍵字,主碼,主鍵,一個關(guān)系只有一個主鍵,從候選鍵中選擇一個作為添加、修改、刪除的變量。如果姓名不重復,則學生表中的候選鍵學號和姓名。則選擇學號作為學生關(guān)系的主碼。主屬性和非主屬性以及全碼)主屬性包含在主關(guān)系鍵中的屬性叫主屬性2)非主屬性:是指不包括在候選鍵中。3)全碼授課(學號,教師號)4關(guān)系的外鍵在關(guān)系R中是主鍵,而在關(guān)系S中不是主鍵,在S中叫外鍵。1) 外鍵是用來聯(lián)系兩個關(guān)系的。2) 主鍵的R是主表,S是子表或從表。3) S中外鍵列的值必須取自R中主鍵值。四、關(guān)系的完整性完整性就是保存數(shù)據(jù)的正確性、一致性和相容性,保證正確的數(shù)據(jù)存放到數(shù)據(jù)庫中。分為三種:1實體完整性是指主關(guān)系鍵的值不能為空和重復。主關(guān)系鍵來保證。2.參照完整性先建立和輸入主表,再建立和輸入從表。3.用戶自定義完整性對具體關(guān)系中的某列必須滿足的約束條件。性別,年齡,月份。五、關(guān)系代數(shù)關(guān)系模型是由二維表構(gòu)成的,一個二維表都是一個關(guān)系。對關(guān)系的操作,操作的對象和結(jié)果都是關(guān)系。1關(guān)系運算的分類1)傳統(tǒng)的集合運算并集、交集、差集、廣義笛卡爾積2)專門的關(guān)系運算選取、投影、連接和除2運算符3傳統(tǒng)的集合運算如果兩個關(guān)系R和S要進行傳統(tǒng)的集合運算,要求兩個關(guān)系的結(jié)構(gòu)必須是相容的。1)并運算關(guān)系R與關(guān)系S的的元組合并,組成一個新的關(guān)系,去掉重復元組。并運算的結(jié)構(gòu)與原結(jié)構(gòu)相同。2)交運算關(guān)系R與關(guān)系S的交,是指由屬于R也屬于S的元組構(gòu)成。3)差運算關(guān)系R與關(guān)系S的差,是指屬于R而不屬于S的關(guān)系構(gòu)成。R-S與S-R是不同的。R交S=R-(R-S)4)廣義笛卡爾積并集、交集、差集要求關(guān)系R與關(guān)系S必須是相容的,而笛卡爾積不考慮是否相容的。4.專門的關(guān)系運算分為選取、投影、連接和自然連接、除選取和投影是單目運算,連接和除是雙目運算。1)選取是根據(jù)一定的條件在給定的關(guān)系R中選擇若干個元組,組成一個新的關(guān)系。這種運算是對行的運算。F(R)如查詢學生中性別為男的元組。性別=男(學生)2)投影關(guān)系R的投影是從R中選擇若干列組成一個新的關(guān)系。列名或列號(R)如從學生關(guān)系中查找學號,姓名和性別。學號,姓名,性別(R)1,2,3(R)選擇和投影組合使用時,必須先選取再投影。查詢學生中性別為男的學號,姓名。學號,姓名 (性別=男(學生)3)連接分為:大于連接小于連接等值連接以上三種,都不去掉重復屬性。且大于連接和小于連接在實際中沒有意義。連接是一個雙目運算。格式為:RS FF表示連接條件關(guān)系R與S的連接,就是從關(guān)系R與關(guān)系S的廣義笛卡爾積中選擇滿足條件的元組。4)自然連接是最常用的一種連接,要求兩個關(guān)系具有公共屬性,它是一種去掉重復屬性值的等值連接。自然連接就是先進行笛卡爾積,再選擇,再投影。5)除二目運算,選擇,投影。R(A,b,c,d)S(C,D)M元-n元:RS=(A,B)考慮元組。必須都滿足的。RABCDA1B2C3D5A1B2C4D6A2B4C1D3A3B5C2D8SCDC3D5C4D6ABA1B2第二部分重點掌握關(guān)系的性質(zhì)以各種鍵的概念、完整性和傳統(tǒng)的集合以及專門的關(guān)系運算,必須會寫關(guān)系代數(shù)表達式。第三部分:關(guān)系數(shù)據(jù)庫理論關(guān)系的規(guī)范化問題一、規(guī)范化存在的問題1不合理的關(guān)系存在的問題1)數(shù)據(jù)冗余2)插入異常3)更新異常4)刪除異常學生(學號,姓名,性別,系號,系名,課號,課名,成績)2合理的關(guān)系必須滿足的條件1)較小的數(shù)據(jù)冗余2)沒有插入異常3)沒有刪除異常4)沒有更新異常第3范式就滿足的。3)關(guān)系規(guī)范化的目的就是將一個不合理的關(guān)系經(jīng)過分解使其達到一個較少的數(shù)據(jù)冗余和消除了各種異常的合理的關(guān)系模式。二、函數(shù)依賴一個關(guān)系中各屬性之間是相互聯(lián)系、相互制約的。屬性之間的關(guān)系用數(shù)據(jù)依賴來表示。數(shù)據(jù)依賴分為函數(shù)依賴,多值依賴和連接依賴。函數(shù)依賴是指1-3和bc范式。多值依賴是指4NF連接依賴是指5NF。1函數(shù)依賴的定義X-Y一般在討論函數(shù)依賴時,要先找出關(guān)系的主關(guān)系鍵。學生關(guān)系的主鍵:學號+課號(學號,課號)-成績學號-姓名,學號-性別,學號-系號,系號-系名,課號-課程名學號-課號2.函數(shù)依賴的說明1)平凡函數(shù)依賴和非平凡函數(shù)依賴如果x-y,Y是x的子集,則稱為平凡。如果x-y,y不是x的子集,則稱為非平凡依賴。2)函數(shù)依賴是一個關(guān)系R一直保持的一種依賴關(guān)系,不是某一個條件下才保證的。3)對于屬性之間的1:1,1:n和m:n的函數(shù)依賴如果為1:1,則x-y,y-x如果為1:n,則y-x,不是x-y如果為m:n,則x和y之間不存在函數(shù)依賴。4)函數(shù)依賴是在一定的語義范疇5)與時間無關(guān)三、函數(shù)依賴的邏輯蘊涵是從基本的函數(shù)依賴中導出的函數(shù)依賴。x-y,y-zx-z閉包:設(shè)F是函數(shù)依賴集,被F邏輯蘊涵的函數(shù)依賴的全體構(gòu)成的集合,稱為函數(shù)依賴集的閉包。(學號,課號)-成績學號-姓名,學號-性別,學號-系號,系號-系名,課號-課程名F學號-系名四、完全函數(shù)依賴、部分函數(shù)依賴、傳遞函數(shù)依賴1.完全函數(shù)依賴:只有當決定因素是多個屬性的組合時,才討論是完全,否則一定是完全函數(shù)依賴。學號-姓名(學號,課號)-成績?nèi)绻鸕中存在x-y,對于任何一個X的子集,都不決定y,則稱為y完全函數(shù)依賴于x。2.部分函數(shù)依賴是指當決定因素也是屬性組時,才討論。(學號,課號)-姓名如果R中存在x-y,對于給定一個x的子集,也能決定y,則稱則Y部分依賴于x。學號-姓名3.傳遞函數(shù)依賴如果關(guān)系R中,有函數(shù)依賴,x-y,y-z,則必有x-z,對于給定一個關(guān)系判斷是否有完全、部分、傳遞,必須先找出主關(guān)系鍵。五、范式范式:是指一個關(guān)系要達到的標準規(guī)范。根據(jù)一個關(guān)系滿足的標準把關(guān)系分為1NF,2NF,3NF,BCNF,4NF,5NF高一級范式必須先是低一級范式。11NF是指如果關(guān)系R中的所有屬性都是不可分割的數(shù)據(jù)項,則稱為R滿足第1NF。即第一范式要求關(guān)系的屬性必須是原子項。存在冗余和異常。2.2NF如果一個關(guān)系R是第一范式,如果非主屬性對主關(guān)鍵字不存在部分函數(shù)依賴,則關(guān)系R滿足第2范式。第2范式:就是消除部分函數(shù)依賴主鍵:學號和課號分解原則:“一事一地”的原則,即一個關(guān)系只表示一個實體或?qū)嶓w之間的聯(lián)系。學生(學號,姓名,性別,系號,系名)課程(課號,課程名)選課(學號,課號,成績)33NF關(guān)系R是第2范式,如果所有非主屬性對主關(guān)系鍵不存在傳遞函數(shù)依賴。則關(guān)系R滿足第3范式分解原則:“一事一地”學生(學號,姓名,性別,系號)系別(系號,系名)滿足第3范式的關(guān)系已經(jīng)達到了合理關(guān)系的條件,即最小的數(shù)據(jù)冗余,消除了異常。4.BCNF如果一個關(guān)系R滿足第3NF,如果所有屬性對候選鍵都不存在部分和傳遞則,滿足BCNF.R(學號,姓名,課號,成績)條件是姓名不重復。候選鍵: 學號+課號,姓名+課號學號-姓名,姓名學號學生(學號,姓名)選課(學號,課號,成績)54NF4NF消除多值依賴6.5NF5NF消除連接依賴六、關(guān)系模式的分解分解的原則:一事一地。分解的條件:1) 分解必須保持函數(shù)依賴2) 分解要保證無損連接性3) 分解即要保持函數(shù)依賴,又要保證無損連接。第四部分 數(shù)據(jù)庫安全保護數(shù)據(jù)庫安全保護分為四種,數(shù)據(jù)庫安全性控制、數(shù)據(jù)完整性控制、并發(fā)控制和數(shù)據(jù)庫恢復一、 數(shù)據(jù)庫的安全性數(shù)據(jù)庫的安全性就是指防止非法用戶進入系統(tǒng)執(zhí)行非法操作。1 一般控制方法1)用戶標識和鑒定2)用戶存取權(quán)限GRANT和revoke。系統(tǒng)權(quán)限,對象權(quán)限。數(shù)據(jù)庫對象:模式,非模式:模式對象:數(shù)據(jù)表、視圖、索引、存儲過程、觸發(fā)器等。非模式對象:表空間、數(shù)據(jù)文件、重做日志。表,表中的某列。3)視圖4)加密5)審計二、完整性控制是指保護數(shù)據(jù)庫中的數(shù)據(jù)正確性、有效性和相容性。工資只能是0-9構(gòu)成。學號不允許重復和為空。班號只能取自班級表。數(shù)據(jù)的完整性控制包括三種:實體完整性、參照完整性、用戶自定義完整性1.完成性規(guī)則的組成由三部分構(gòu)成:觸發(fā)條件,約束條件,違約響應。添加、修改檢查,刪除時,查詢不檢查。約束條件:規(guī)則,什么樣的滿足和不滿。違約響應:反應2.完整性約束條件的分類1.值約束和結(jié)構(gòu)的約束值約束:如一個列定義為字符型、長度為6,數(shù)據(jù)類型、數(shù)據(jù)格式、取值范圍和空值。結(jié)構(gòu)約束:實體完整性、參照完整性統(tǒng)計約束。2)靜態(tài)約束和動態(tài)約束靜態(tài)約束:值約束和結(jié)構(gòu)約束都是靜態(tài)的。動態(tài)約束:從一種狀態(tài)轉(zhuǎn)換為另一種狀態(tài)應滿足的約束條件。三、并發(fā)控制與封鎖1并發(fā)控制是保證每個事務能夠得到正確的運行。一般都是指多個用戶操作時。2.事務是數(shù)據(jù)庫系統(tǒng)中執(zhí)行的一個工作單元,是由用戶定義的一系列語句組成。三個命令:Begin transaction:開始事務Commit;提交事務Rollback:回滾事務。2 事務的性質(zhì)ACID1)原子性一個事務是一個不可分的工作單位,事務在執(zhí)行時,遵守“要么全做,要么不做”。2)一致性數(shù)據(jù)庫從一個狀態(tài)轉(zhuǎn)換為另一個狀態(tài),必須滿足數(shù)據(jù)庫的完整性控制。3)隔離性事務與事務之間是獨立的,一事務的執(zhí)行不影響另一個事務。4)持久性對數(shù)據(jù)庫的改變,成功提交后,改變是永久的。4.并發(fā)控制造成的不一致性1)丟失更新2)污讀3)不可重讀5.解決的方法1)封鎖封鎖分為共享鎖和排它鎖。死鎖和活鎖2)時標四、數(shù)據(jù)庫的恢復1定義當數(shù)據(jù)庫遭到破壞時,必須保證在較短的時間內(nèi)將數(shù)據(jù)庫恢復到最近的正確狀態(tài)。2.原理和技術(shù)生成冗余數(shù)據(jù),冗余重建1)登記日志文件數(shù)據(jù)文件.mdf,日志文件.ldf記錄著對數(shù)據(jù)庫的更新操作,不包括查詢。2)數(shù)據(jù)轉(zhuǎn)儲2.故障和恢復1)事務故障2)系統(tǒng)故障3)介質(zhì)故障當數(shù)據(jù)庫恢復時,對尚未完成的事務執(zhí)行rollback第五部分:數(shù)據(jù)庫設(shè)計一、 數(shù)據(jù)庫設(shè)計概述1.設(shè)計的任務數(shù)據(jù)庫設(shè)計就是在指定的具體環(huán)境下,根據(jù)用戶需求,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,并建立數(shù)據(jù)庫和應用系統(tǒng),。2.數(shù)據(jù)庫設(shè)計的內(nèi)容數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計,數(shù)據(jù)庫的行為設(shè)計前者靜態(tài)設(shè)計,后者是動態(tài)設(shè)計。二、數(shù)據(jù)庫設(shè)計的方法手工試湊法、直觀設(shè)計法、規(guī)范化設(shè)計法、計算機輔助設(shè)計法和自動化設(shè)計法,。規(guī)范化設(shè)計方法是最常用的一種數(shù)據(jù)庫設(shè)計方法。新奧爾良法。規(guī)范化設(shè)計方法有:1) 基于E-R模型的數(shù)據(jù)庫設(shè)計方法2) 基于3NF的數(shù)據(jù)庫設(shè)計方法3) 基于視圖的數(shù)據(jù)庫設(shè)計方法。三、數(shù)據(jù)庫設(shè)計的步驟數(shù)據(jù)庫設(shè)計按規(guī)范化設(shè)計方法分為六個步驟:需求分析階段概念結(jié)構(gòu)設(shè)計階段邏輯結(jié)構(gòu)設(shè)計階段物理設(shè)計階段數(shù)據(jù)庫實施階段數(shù)據(jù)庫運行和維護階段。四、需求分析階段數(shù)據(jù)庫設(shè)計的起點,最終影響到整數(shù)據(jù)庫的設(shè)計。1任務對現(xiàn)實世界進行詳細的調(diào)查研究,分析原系統(tǒng),收集新資料,確定系統(tǒng)的邊界等。2.需求分析方法SA方法,自頂向下分析方法。有兩個圖:一個是數(shù)據(jù)流圖(DFD),數(shù)據(jù)字典(DD)數(shù)據(jù)流圖中使用命名的箭頭表示數(shù)據(jù)流,用圓表示處理,用矩形表示存儲。數(shù)據(jù)字典是對系統(tǒng)中數(shù)據(jù)進行詳細描述,由五個部分組成。數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、數(shù)據(jù)處理過程,。需求分析階段在調(diào)查研究的基礎(chǔ)上,撰寫需求分析說明書,在需求分析說明書中描述系統(tǒng)的功能及邊界,并繪制數(shù)據(jù)流圖和數(shù)據(jù)字典。五、概念結(jié)構(gòu)設(shè)計在需求分析階段的基礎(chǔ)上,將需求分析得到的用戶需求抽象為信息結(jié)構(gòu),即概念模型。E-R模型:實體-聯(lián)系模型。1.E-R圖的組成主要由三個元素,實體、聯(lián)系和屬性。實體在E-R圖中使用矩形表示。聯(lián)系在E-R圖中使用菱形表示屬性在E-R圖中使用橢圓表示。且實體,聯(lián)系和屬性之間用線段連接。2.繪制E-R圖分兩步:1)繪制局部E-R圖如教學管理系統(tǒng):系別:系號,系名,系主任班級:班號,班名,地址學生:學號,姓名,性別,年齡教師:職工號,姓名,性別,職稱,工資課程:課程號,課程名,學分語言義要求:一個系有多個班級,一個班有多名學生,一個學生只屬于一個班級,一個學生可以選多門課,選修時有成績,一門課由多個學生,一個教師講授多門課,一門課由多個教師講授。講授的課程有學期。試繪制E-R圖。屬性分為實體屬性和聯(lián)系屬性,實體的屬性在繪制E-R圖時直接放在某實體附近即可,如果是聯(lián)系的屬性必須放在聯(lián)系邊上,且與菱形連接。以上系統(tǒng)分為三個局部E-R圖。組織結(jié)構(gòu)E-R,選課E-R圖,講授E-R圖。2)合并為全局E-R圖。E-R圖合并的沖突有:1)屬性沖突屬性值域沖突、屬性的取值單位沖突2)命名沖突同名異義,單位異名同義:房間。3)結(jié)構(gòu)沖突同一實體在不同應用中有不同的抽象。同一實體不同應用時有不同的屬性六、邏輯結(jié)構(gòu)設(shè)計一、任務在概念結(jié)構(gòu)設(shè)計的基礎(chǔ)上,從E-R圖導出邏輯模型。步驟:1) 初始關(guān)系模式2) 規(guī)范化3) 評價與改進二、從E-R圖中導出關(guān)系模式的轉(zhuǎn)換原則1)每一個實體都轉(zhuǎn)換為一個關(guān)系模式。2)對于聯(lián)系的轉(zhuǎn)換原則:。如果是一對一的聯(lián)系,不生成第三方關(guān)系,只將任何一方的主鍵納入另一個作外鍵即可。如果是一對多的聯(lián)系,也不生成第三方,只把一方的關(guān)鍵字納入多方即可。如果是多對多的聯(lián)系,則生成第三方關(guān)系,第三方關(guān)系的屬性是雙方的主鍵和聯(lián)系的屬性。七、物理結(jié)構(gòu)設(shè)計在邏輯模型的基礎(chǔ)上,選取一個最適合的應用環(huán)境創(chuàng)建物理結(jié)構(gòu)。八、數(shù)據(jù)庫實施定義數(shù)據(jù)庫結(jié)構(gòu)在指定的DBMS中。九、數(shù)據(jù)庫的運行和維護第六部分:SQLSQL語言是一種結(jié)構(gòu)化查詢語言。不是標準查詢語言一、SQL的發(fā)展和特點1.發(fā)展1974年,SEQUEL,1976,1981,1982,SQL,SQL SERVER 2000,ORACLE。Sql86,sql89,sql92,sql32.特點1)簡單易學,符合英文語法2)集成性語言,四個功能。數(shù)據(jù)定義,數(shù)據(jù)查詢,數(shù)據(jù)操縱、數(shù)據(jù)控制。3)SQL即是自含式,又是宿主式。4)SQL是一種非過程化的語言二、SQL語言與三級模式的對應關(guān)系內(nèi)模式對應于存儲文件,模式對應于基本表,外模式對應于視圖三、創(chuàng)建數(shù)據(jù)表1數(shù)據(jù)類型Int,decimal,char,nchar,varchar,nvarchar。Datetime,float。2.定義數(shù)據(jù)表的基本格式Create table 數(shù)據(jù)表名(列的定義,表約束)Create table bj(Bh char(4),Bm char(30)Xh char(2)列的定義:列名 數(shù)據(jù)類型(寬度,小數(shù)位) 列約束3.表的約束約束分為兩種,一種列約束,一種是表約束。列約束與列的定義在一起,用空格間隔,作為列定義的一部分。表約束,獨立于列的定義,與列的定義之間,間隔。表的約束一般應于涉及到多列使用。學號建立主鍵,學號和課號建立主鍵。1)空值約束默認為NULL,如果想不為空使用NOT NULL約束只能用于列約束,不能用于表約束。Create table 表名(學號 char(6) not null,姓名 char(8)2)主鍵約束不允許為空,重復值。格式:constraint 約束名 primary key(列名)如果作為列約束,列名可省,表約束列名不可省。Create table 學生(學號 char(6) primary key,姓名 char(8),Constraint aaa primary key(學號)Create table 選課(課號 char(2),學號 char(6),成績 int,Constraint bbb primary key(學號,課號)3)惟一約束Unique要求列值不重復,但允許為空。/可以是列約束,也可以是表約束Create table 學生(學號 char(6) primary key,姓名 char(8) unique,Constraint ccc unique(姓名)4)默認值約束列約束,關(guān)鍵字是default。Default 值Create table 學生(學號 char(6) primary key,姓名 char(8) not null,性別 char(2) default 男)5)check約束用戶自定義完整性一般用來規(guī)定域的范圍,可以作列約束,也可以作表約束。Create table 學生(學號 char(6) primary key,姓名 char(8) not null unique,性別 char(2) default 男,年齡 int check(年齡 between 18 and 30)6)外鍵約束涉及到兩個數(shù)據(jù)表,先建立主表,再建立從表。且從表的列必須與主表的列類型一致,長度一致。Constraint 約束名 foreign key(從表列名) references 主表名(列名)如果為列約束,則constraint 約束名可省,從表列名可省。Create table 學生(學號 char(6) primary key,姓名 char(8) not null,性別 char(2) check(性別=男 or 性別=女),班號 char(4) foreign key refernces 班級(班號)Create table 學生1(學號 char(6) primary key,姓名 char(8) not null,性別 char(2) check(性別=男 or 性別=女),班號 char(4) ,Constraint dddd foreign key(班號) refernces 班級(班號)4.修改數(shù)據(jù)表有三種方式Alter table 表名 方式1)add方式使用該方式可以增加列,也可以增加約束Alter table 學生 add 地址 char(50)Alter table 學生 add constraint eee check(年齡 between 20 and 60)2)alter方式用于修改列的寬度等。Alter table 表名 alter 列的定義Alter table 學生 alter 地址 char(40)不能更改列名3)drop 方式用來刪除列或約束Alter table 表名 drop column 列名Alter table 表名 drop constaint 約束名5.刪除數(shù)據(jù)表Drop table 表名三、索引的使用1.索引的作用加快查詢速度,保證行的惟一性2.索引的分類按照索引的存放位置,索引可分為聚集索引和非聚集索引,聚集索引只有一個,就是主鍵,非聚集索引可以有多個。如普通索引可惟一索引。如果一個數(shù)據(jù)表建立了主鍵約束就是建立了一個聚集索引,如果建立了惟一約束就是建立了一個非聚集索引。3.創(chuàng)建索引Create uniquecluster index 索引名 on 表名(列名 排序方式)Unique:表示創(chuàng)建一個惟一索引。Cluster:表示創(chuàng)始一個聚集索引,只有一個。如果沒有unique和cluster表示創(chuàng)建的就是非聚集的普通索引。在學生數(shù)據(jù)表中按性別創(chuàng)建惟一索引Create unique index xm on 學生(姓名 desc)索引不能修改,只能刪除再創(chuàng)建。在教師數(shù)據(jù)表,按性別建立索引,性別相同按工資降序索引。這種索引叫復合索引,涉及性別和工資。Create index xbgz on 教師(性別 ,工資 desc)4.刪除索引索引是屬于基本表,所以在刪除索引時必須指定表名.索引名。Drop index 表名.索引名四、數(shù)據(jù)查詢1.select命令格式Select distinct */列表列表 top n|top n percentFrom 表1 別名,表2 表名Where 查詢條件group by 分組字段 having 分組條件order by 排序字段此語句由五個子句構(gòu)成分別是select子句,from子句,where子句,group by子句和order by子句。Select子句用來控制投影操作??梢员淼幕玖?,也可以是計算列。from子句指定數(shù)據(jù)來源的數(shù)據(jù)表,可以來自一個數(shù)據(jù)表,也可以是多個數(shù)據(jù)表。Where子句,表示返回滿足一定條件的元組。這是對行的操作,也就是選取。Group by子句用來進行分組,當查詢是count,maX,min,sum,avg時一般都要分組。如果對分組后的結(jié)果集,再限制條件,必須使用having 分組條件。Order by 用來排序。2單表查詢1)不投影不選擇列使用*,沒有where條件。Select * from 學生2)投影Select 列名 from 表名Select 學號,姓名 from 學生3)去掉重復元組Select distinct 性別 from 學生4)帶條件的查詢涉及到運算符:算術(shù)運算符: = = != 查詢工資在3000元以上的教師姓名Select 姓名 from 教師 Where 工資3000特殊運算符:Between,表示范圍。如查詢工資2500元至4000元之間的。Select * from 教師Where 工資 between 2500 and 4000Like匹配通配符:_和%通配任何多個字符,_通配一個。找姓張的學生的學號和姓名。Select 學號,姓名 from 學生Where 姓名 like 張%In運算符表示一定范圍的In是否在一個集合中。Not in都是用來子查詢中。查詢選修了c1或c2課程的學生的學號Select 學號 From 選課Where 課號 in (c1,c2)5)投影有可能是計算列可以在select子句中放入表達式作為計算列,并同時可以給列起別名。學生數(shù)據(jù)表中有出生日期,求學號,姓名和年齡。Getdate()Select 學號,姓名,year(getdate()-year(出生日期) as 年齡From 學生6)空值測試Is null和is not null。空值表示不確定的值,不是空格,也不是0。查詢沒有參加考試的學生的學號和課號。Select 學號,課號From 選課Where 成績 is null7)統(tǒng)計函數(shù)Count(*/列名)統(tǒng)計記錄數(shù)Sum(列名)求和Avg(列名)求平均值Max(列名)求最大值Min(列名)求最小值求課號為c1的最高分,最低分,總和和平均分。Select max(成績) as 最高分,min(成績) as 最低分,sum(成績) as 總分,avg(成績) as 平均分 From 選課Where 課號=c1一般用到五個統(tǒng)計函數(shù)必須要分組,但要考慮是否是不同類型的數(shù)據(jù)。Count對空值不統(tǒng)計。統(tǒng)計c1號課號的人數(shù)Select count(*) as 人數(shù)From 選課Where 課號=c18)分組查詢按某列或某幾列在行的方向上進行分組,當在查詢的語義中規(guī)定對某列或幾列進行統(tǒng)計計算時一般暑阿進行分組,如求每個部門的人數(shù),每門課程的選課人數(shù),每個學生的選課門數(shù)等。求男女生人數(shù)。Select 性別,coun(*) as 人數(shù)From 學生Group by 性別求各門課程的選課人數(shù)。Select 課號,coun(*) 人數(shù)From 選課Group by 課號當對分組再進一步限制條件時,必須使用having 分組條件。注意以上的五個函數(shù)只能出現(xiàn)在select子句和having中。絕對不允許出現(xiàn)在where中。如查詢選課門數(shù)在5門以上的學生的學號和門數(shù)。Select 學號,count(*) as 門數(shù)From 選課Group by 學號 having count(*)=59)排序Order by 字段 asc/desc ,2連接查詢當查詢的數(shù)據(jù)來源于兩個或兩個以上的數(shù)據(jù)表時,數(shù)據(jù)表之間必須建立連接。連接可以放在from后,也可以放在where條件中與其他條件用and連接。第一種放在from后可以實現(xiàn)以下幾種連接Inner join:內(nèi)聯(lián)接Left join:左連接Right join:右連接Full join :完全連接Cross join:交叉連接(笛卡爾積)一般用到的都是內(nèi)聯(lián)接連接條件書寫格式為:From 表1 inner join 表2 on 表1.字段名=表2.字段名其中字段名是同名屬性。第二種主在where后From 表1,表2Where 表1.字段名=表2.字段名 and 其他條件如查詢計算機本科07班學生的學號,姓名和班名。從投影上看,從選擇上看,從查詢的語義上看。Select 學號,姓名,班名From 班級,學生Where 班級.班號=學生.班號 and 班名=計算機本科07Select 學號,姓名,班名From 班級 inner join 學生 on 班級.班號=學生.班號Where 班名=計算機本科07注意一點:當兩個名都有同名屬性時,則在屬性名前一定要加上表名:即表名.字段名4.子查詢和相關(guān)子查詢1)子查詢也叫嵌套子查詢,即在一個select語句的where條件中還有select語句。外層查詢與內(nèi)層查詢沒有聯(lián)系,外層查詢的結(jié)果取決與內(nèi)層查詢返回的值。執(zhí)行過程是:先執(zhí)行子查詢,再執(zhí)行外層查詢。運算符主要有= = (select max(工資) from 教師,系別 where 教師.系號=系別.系號 and 系名=計算機系) In 等價于=anyall大于所有的。2)相關(guān)子查詢運行只有兩個,EXISTS和not exists不返回值,子查詢的投影也不是字段,只是一個*,表示子查詢中是否有行返回,有則真,否則為假。且外層與內(nèi)層子查詢有聯(lián)系,且聯(lián)系語句放在子查詢中。如查詢選修課程的學生的學號和姓名。Select 學號,姓名 from 學生Where 學號 in (select 學號 from 選課)Select 學號,姓名 From 學生Where exists (select * from 選課 where 學生.學號=選課.學號)5.并集運算UnionSelect語句UnionSelect語句UnionSelect 語句四、數(shù)據(jù)操縱添加、修改、刪除1插入數(shù)據(jù)三種:1)插入全部數(shù)據(jù)Insert into 表名 values(表達式)表達式的個數(shù)必須與表中的列數(shù)相同,且一一對應,類型一致,2)插入部分數(shù)據(jù)Insert into 表名(列名) values(表達式)3)插入多行數(shù)據(jù)Inset into 表名Select語句2.修改記錄(更新)1)更新涉及一個表Update 表名 set 列名=表達式,Where 條件如果沒有條件,則更新所有記錄。2)更新涉及多個表在對數(shù)據(jù)進行更新時,要求只能更新一個數(shù)據(jù)表,如果涉及到多個表必須在where中使用子查詢。將少數(shù)民族的學生的各科成績加5分。Update 選課 set 成績=成績+5Where 學號 in (select 學號 from 學生 where 民族漢)3.刪除記錄1)刪除涉及一個數(shù)據(jù)表Delete from 表名 where 條件如果沒有條件,則刪除所有記錄。2)刪除涉及多個數(shù)據(jù)表必須用到子查詢。如將沒有選課學生的刪除。Delete from 學生 where 學號 not in(select 學號 from 選課)五、視圖1.視圖的概念視圖是數(shù)據(jù)庫的外模式,它是一個虛擬表,在數(shù)據(jù)庫中只存放視圖的定義,凡是對視圖的操作都反映到基本表中。它的數(shù)據(jù)來源都是基本表。2創(chuàng)建視圖Create view 視圖名(列名)As Select語句對于創(chuàng)建視圖的select語句不能使用order by 和distinct關(guān)鍵字視圖的數(shù)據(jù)可以來自多個數(shù)據(jù)表,列也可以是計算列。Create view v_1AsSelect 學生.學號,姓名,性別From 學生,選課Where 學生.學號=選課.學號Select * from v_12.修改Alter view 視圖名As 子查詢3.刪除視圖視圖是數(shù)據(jù)庫的對象,所有刪除視圖時與表無關(guān)。Drop view 視圖名4.查詢視圖凡是用到基本表的地方,都可以使用視圖Select * from v_15.更新視圖凡是對視圖的更新都將反映到基本表中,但涉及到計算列的或視圖的來源是多個數(shù)據(jù)表,則視圖是不可更新的。6.使用視圖的優(yōu)點1)有利于數(shù)據(jù)保密2)簡化查詢操作3)保證數(shù)據(jù)的邏輯獨立性六、數(shù)據(jù)控制權(quán)限:就是在數(shù)據(jù)庫中設(shè)置的允許用戶對數(shù)據(jù)對象操作的權(quán)力。在SQL server中權(quán)限分為兩種:系統(tǒng)權(quán)限:是指用戶能夠?qū)?shù)據(jù)庫系統(tǒng)進行操作的權(quán)力,如創(chuàng)建數(shù)據(jù)表、創(chuàng)建視圖、修改數(shù)據(jù)表、創(chuàng)建索引等。對象權(quán)限:即用戶對數(shù)據(jù)庫對象的操作權(quán)力,如select,insert,update,delete數(shù)據(jù)。,角色:是權(quán)限的集合。1系統(tǒng)權(quán)限的授予與收回1)授予Grant 系統(tǒng)權(quán)限To 用戶名/pulbicWith admin option將系統(tǒng)權(quán)限授予指定用戶,并可以將得到的權(quán)限授予其他用戶。Grant create table,create viewTo user12)收回Revoke 系統(tǒng)權(quán)限From 用戶名/publicRevoke create tableFrom user12.對象權(quán)限的授予和收回Grant 對象權(quán)限(列名),On 對象名To 用戶名With grant optionGrant select,update,delete,insertOn 學生To user1Grant update(學號,姓名)On 學生To user22)收回Revoke 對象權(quán)限On 對象名From 用戶名第七部分 sql server 2000和程序設(shè)計一、系統(tǒng)數(shù)據(jù)庫有四個,master,model,msdb,tempdbMaster:系統(tǒng)中最重要的數(shù)據(jù)庫,存放著所有的系統(tǒng)信息。Model:是創(chuàng)建數(shù)據(jù)庫的模板。Msdb:用于備份,恢復等計劃控制的。,Tempdb:臨時數(shù)據(jù)庫。/二、實例數(shù)據(jù)庫Pubs和northwind三、數(shù)據(jù)文件和日志文件數(shù)據(jù)文件:用來保存數(shù)據(jù)庫的各種對象及數(shù)據(jù)的??梢杂卸鄠€,但只有一個數(shù)據(jù)文件叫主數(shù)據(jù)文件,擴展名為.mdf,其他數(shù)據(jù)文件叫次數(shù)據(jù)文件,擴展名
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成本管理模型訓練營
- 糖尿病出院后護理
- 中班健康教育活動:交警叔叔進課堂
- 腫瘤患者陽光心態(tài)建設(shè)路徑
- 施工升降司機培訓
- 培養(yǎng)小孩勞動教育
- 腎靜脈疾病超聲診斷
- 網(wǎng)課教師培訓
- 兒童護理培訓
- 供應室護士崗前培訓課件
- 小學語文擴句、縮句專題
- 農(nóng)村公路安全生命防護工程施工方案
- (部編版)統(tǒng)編版小學語文教材目錄(一至六年級上冊下冊齊全)
- 抗滑樁專項的施工組織方案[專家評審]
- 常用彈簧鋼號對照表
- 應用回歸分析(第三版)何曉群_劉文卿_課后習題答案_完整版
- 小學二年級下冊勞動教案
- 食品安全及衛(wèi)生保證措施
- 60m3臥式液化石油氣儲罐設(shè)計
- 樹脂的污染及處理
- 食品企業(yè)蟲害控制培訓課件.pptx
評論
0/150
提交評論