


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫系統(tǒng)概述一、有關(guān)概念1. 數(shù)據(jù)2. 數(shù)據(jù)庫(DB3. 數(shù)據(jù)庫管理系統(tǒng)(DBMSAccess桌面 DBMS VFPSQL Server Oracle客戶機/服務(wù)器型DBMS MySQL DB24. 數(shù)據(jù)庫系統(tǒng)(DBS 數(shù)據(jù)庫(DBI 數(shù)據(jù)庫管理系統(tǒng)(DBMSI 幵發(fā)工具I應(yīng)用系統(tǒng)二、數(shù)據(jù)管理技術(shù)的發(fā)展1. 數(shù)據(jù)管理的三個階段人工管理文件系統(tǒng)數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)能否保存不能保存可以保存可以保存數(shù)據(jù)面向的對 象某一應(yīng)用程序某一應(yīng)用程序整個應(yīng)用系統(tǒng)數(shù)據(jù)的共享程 度無共享,一組 數(shù)據(jù)只能對應(yīng) 一個應(yīng)用程序。共享性差,一個 數(shù)據(jù)文件只能 對應(yīng)一個應(yīng)用 程序。共享性高數(shù)據(jù)的獨立性不獨立,它是應(yīng) 用程序的一部
2、 分。獨立性差數(shù)據(jù)庫與應(yīng)用 系統(tǒng)完全分幵概念模型一、模型的三個世界1. 現(xiàn)實世界2 .信息世界:即根據(jù)需求分析畫概念模型(即 E-R圖),E-R圖與DBMSc 關(guān)。3 .機器世界:將E-R圖轉(zhuǎn)換為某一種數(shù)據(jù)模型,數(shù)據(jù)模型與DBMS相關(guān)。注意:信息世界又稱概念模型,機器世界又稱數(shù)據(jù)模型二、實體及屬性1. 實體:客觀存在并可相互區(qū)別的事物。2. 屬性:3. 關(guān)鍵詞(碼、key):能唯一標(biāo)識每個實體又不含多余屬性的屬性組合。一個表的碼可以有多個,但主碼只能有一個。例:借書表(學(xué)號,姓名,書號,書名,作者,定價,借期,還期)規(guī)定:學(xué)生一次可以借多本書,同一種書只能借一本,但可以多次續(xù)借。4. 實體型:
3、即二維表的結(jié)構(gòu)例 student(no ,name sex, age,dept)5. 實體集:即整個二維表三、實體間的聯(lián)系:1. 兩實體集間實體之間的聯(lián)系_ ' 1: 1聯(lián)系'1: n聯(lián)系m : n聯(lián)系2. 同一實體集內(nèi)實體之間的聯(lián)系1: 1聯(lián)系1: n聯(lián)系m : n聯(lián)系四、概念模型(常用 E-R圖表示)實體型屬性:聯(lián)系:說明:E-R圖作為用戶與幵發(fā)人員的中間語言 E-R 圖可以等價轉(zhuǎn)換為層次、網(wǎng)狀、關(guān)系模型。舉例: 學(xué)校有若干個系,每個系有若干班級和教研室,每個教研室有若干教員, 其中有的教授和副教授每人各帶若干研究生。每個班有若干學(xué)生,每個學(xué)生選修若干課程, 每門課程有若干
4、學(xué)生選修。用 E-R 圖畫出概念模型。數(shù)據(jù)模型一、層次模型:用樹型結(jié)構(gòu)表示實體之間的聯(lián)系。 每個結(jié)點代表一個實體型。 只能直接處理一對多(含一對一)的實體關(guān)系。 查找層次數(shù)據(jù)庫中的記錄,速度較慢。二、網(wǎng)狀模型:用圖結(jié)構(gòu)表示實體之間的聯(lián)系。 每個結(jié)點代表一個實體型。 可以處理多對多的實體關(guān)系。 查找網(wǎng)狀數(shù)據(jù)庫中的記錄,速度最快。三、關(guān)系模型:用二維表表示實體之間的聯(lián)系。1重要術(shù)語: 關(guān)系:一個關(guān)系就是一個二維表; 元組:二維表的一行,即實體; 關(guān)系模式:在實體型的基礎(chǔ)上,注明主碼。 關(guān)系模型:指一個數(shù)據(jù)庫中全部二維表結(jié)構(gòu)的集合。2特點: 關(guān)系模型是建立在嚴(yán)格的數(shù)學(xué)理論的基礎(chǔ)上的; 關(guān)系模型的存取
5、路徑對用戶透明; 查找關(guān)系數(shù)據(jù)庫中的記錄,速度最慢。小結(jié):數(shù)據(jù)有三種類型,DBM就有三種類型,DB亦有三種類型。數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)一、數(shù)據(jù)庫系統(tǒng)的 體系結(jié)構(gòu) 單機結(jié)構(gòu):DBMS數(shù)據(jù)庫、幵發(fā)工具、應(yīng)用系統(tǒng)安裝在一臺計算機上。 C/S 結(jié)構(gòu):局域網(wǎng)結(jié)構(gòu) 客戶機:裝開發(fā)工具、應(yīng)用系統(tǒng) 服務(wù)器:裝 DBM、S 數(shù)據(jù)庫 B/S 結(jié)構(gòu): Internet 結(jié)構(gòu)服務(wù)器:裝DBMS數(shù)據(jù)庫、幵發(fā)工具、應(yīng)用系統(tǒng)客戶機:裝IE即可三、數(shù)據(jù)庫系統(tǒng)的模式結(jié)構(gòu)1. 三級模式 模式:是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。模式只涉及數(shù)據(jù)庫的結(jié)構(gòu);模式既不涉及應(yīng)用程序,又不涉及數(shù)據(jù)庫結(jié)構(gòu)的存儲; 外模式:是模式的一個子集,是與
6、某一個應(yīng)用程序有關(guān)的邏輯表示。特點:一個應(yīng)用程序只能使用一個外模式,但同一個外模式可為多個應(yīng)用 程序使用。 內(nèi)模式:描述數(shù)據(jù)庫結(jié)構(gòu)的存儲,但不涉及物理記錄。2. 兩級映象 外模式/模式映象:保證數(shù)據(jù)庫的邏輯獨立性; 模式/內(nèi)模式映象:保證數(shù)據(jù)庫的物理獨立性;3. 兩級映象的意義 使數(shù)據(jù)庫與應(yīng)用系統(tǒng)完全分幵,數(shù)據(jù)庫改變時,應(yīng)用系統(tǒng)不必改變。 數(shù)據(jù)的存取完全由DBMS?理,用戶不必考慮存取路徑。數(shù)據(jù)庫管理系統(tǒng)1. DBMS勺功能:負(fù)責(zé)對數(shù)據(jù)庫進行統(tǒng)一的管理與控制。 數(shù)據(jù)定義:即定義數(shù)據(jù)庫中各對象的結(jié)構(gòu) 數(shù)據(jù)操縱:包括對數(shù)據(jù)庫進行查詢、插入、刪除、修改等操作。 數(shù)據(jù)控制:包括安全性控制、完整性控制、
7、并發(fā)控制、數(shù)據(jù)庫恢復(fù)。2. DBMS勺組成::DDL語言 DML語言DCL語言1- 實用程序 SQL集DDL DML DCL功能于一體; 所有應(yīng)用程序通過SQL語句才能訪問數(shù)據(jù)庫一、基本概念1. 碼:能唯一標(biāo)識元組的屬性集。2. 候選碼:一個屬性集既能唯一標(biāo)識元組,且又不含有多余屬性,一個關(guān) 系模式可以有多個候選碼。3. 主碼:任選候選碼中的一個。4. 主屬性:主碼中包含的各個屬性。5. 非主屬性:不包含在主碼中的各個屬性。6 .外碼:設(shè)F是關(guān)系R的一個屬性,不是 R的主碼,但卻是另一個關(guān)系 S 的主碼,則稱F是關(guān)系R的外碼。例:student ( sno, sname, ssex, sage
8、, sdept)Sc ( sno, eno, grade)Sc的主碼為:(sno,eno );外碼為:sno關(guān)系的數(shù)學(xué)定義一、域(domain)1. 定義:域是一組具有相同類型的值的集合。2. 域的基數(shù):域中所含數(shù)據(jù)的個數(shù)。二、笛卡爾積1. 定義:給定一組域 D1,D2,D3,貝V D1X D2X D3稱為笛卡爾積。2 .笛卡爾積 D1X D2X D3對應(yīng)一個二維表,所含元組的個數(shù)等于各個域的 基數(shù)之積。三、關(guān)系1定義:笛卡兒積的一部分元組稱為關(guān)系。2關(guān)系的目(或度):一個關(guān)系所含屬性的個數(shù)。3. 關(guān)系的性質(zhì)任意兩個元組不能完全相同,但屬性名允許重復(fù)。四、關(guān)系的完整性1. 實體完整性:指關(guān)系的
9、所有主屬性都不能取空值。注意:實體完整性不僅僅是主碼整體不能取空值。2. 參照完整性:指一個關(guān)系外碼的取值必須是相關(guān)關(guān)系中主碼的有效值或 空值。例:班級(班名,人數(shù))學(xué)生(學(xué)號,姓名,性別,密碼,班名)在學(xué)生表中,班名的取值必須是班級表班名的值或空值。關(guān)系代數(shù)一、傳統(tǒng)的集合運算設(shè)關(guān)系R、s的結(jié)構(gòu)完全相同,貝y:RU S:由屬于R或?qū)儆赟的元組組成。RA S:由既屬于R又屬于S的元組組成。R- S:由屬于R而不屬于S的元組組成。思考:(RA S)U( R- S)二?RX S:設(shè)R有m個屬性,K1個元組;S有n個屬性,K2個元組,則RX S含 有(m+n)個屬性,(K1 X K2)個元組。二、專門
10、的關(guān)系運算1. 選擇:從關(guān)系R中選擇滿足條件的元組。記為:F (R)2. 投影:從關(guān)系R中選擇若干屬性組成新的關(guān)系,并把新關(guān)系的重復(fù)元組 去掉。記為:A( R)3 .條件連接:將兩關(guān)系按一定條件連接成一個新關(guān)系,記為:R F S F (R S)說明:條件連接:兩關(guān)系可以沒有公共屬性,若有公共屬性,則新關(guān)系含 有重復(fù)屬性。4. 自然連接:將兩關(guān)系按公共屬性連接成一個新的關(guān)系,并把新關(guān)系的重 復(fù)屬性去掉。記為:R S說明: 自然連接:兩關(guān)系至少有一個公共屬性。 對于R的每個元組,S都從第一個元組幵始判斷,若兩元組的公 共屬性值相同,則產(chǎn)生一個新元組添加到新關(guān)系中,最后把新關(guān)系中的重復(fù)屬 性去掉。5
11、. 除:給定關(guān)系 R (x,y)和S (y,z),則R+ S=P (x),其中x,y,z為 屬性組。求解過程: 求R中x可以取哪些值,并求各值的象集。 求S在屬性組y上的投影K。 檢查每個象集是否包含 K注:除不是一個必須的運算,可以由其它運算符代替。 例:設(shè)有關(guān)系R, S如下圖,求R- SABCalbic2a2b3c7a3b4c6alb2c3a4b6c6a2b2c3aib2ciRBCDblc2dib2cldib2c3d2Sa1,(bl, c2), (b2, c3), (b2, c1) (b3, c7), (b2, c3) (b4, c6) (b6, c6) a2, a3, a4。解:在關(guān)系R
12、中,A可以取四個值, al的象集為 a2的象集為 a3的象集為 a4的象集為S 在(B, C)上的投影 K 為 (bl, c2), (b2, c3), (b2, cl) 顯然只有al的象集包含K,故R- S=a1 結(jié)論:如何寫關(guān)系代數(shù)表達式?答: 查詢涉及多個關(guān)系時,一般使用Xi。 查詢涉及“否定”時,一般用差運算。 查詢涉及“全部”時,一般用除運算。 查詢涉及“至少”時,一般用x關(guān)系數(shù)據(jù)庫規(guī)范化理論函數(shù)依賴一、有關(guān)概念:XHKHKM961C1OS962C2DBS962C4Al962C1OS963C1OSXMDZCJ高明D170咼飛D272咼飛D280高明D175高明D1901. 函數(shù)依賴:任
13、給R( U),U為屬性集,x、y為U的子集,如果對于x的每個值,y有唯一確定的值與之對應(yīng),則稱 x決定y,或y函數(shù)依賴于X。記為:xiy例: KHi KMXM> DZ(XH,KH) iCJKHi (KM,XM)2. 完全函數(shù)依賴:若xiy,且對于x的所有真子集x:都有x' y,則稱x完全決定y,或y完全函數(shù)依賴于x。記為:x例 1 : (XH,KH) f CJ但 XH f CJKH/ fCJ故(XH , KH ) f CJ例 2: KHf KM貝卩KH f KM結(jié)論:若xf y,且x只包含一個屬性,則x f y。3. 部分函數(shù)依賴:若xf y,且存在x的一個真子集x',滿
14、足x' f y,則稱x部分決定y,或 y部分函數(shù)依賴于x。記為:x p y。例 1 : (KH,KM)f XM但 KM f XM貝 y (KH,KM ) p XM例 2: (XH,KH)f DZ但 KH f DZ貝卩(XH,KH ) p DZ4. 傳遞函數(shù)依賴:若 xf y,y f 乙 但/ x,貝9 x t z例:KMfXM,XMfDZ,但*XM / KM二、平凡函數(shù)依賴與非平凡函數(shù)依賴設(shè)xf y,如果y是x的子集,則該依賴是平凡的。如:Sno,sn amef sno如果y中至少有一個屬性不在 x中,則該依賴是非平凡的。如:Sno,sn ame sn ame,sdept如果y中沒有一
15、個屬性在x中,則該依賴為完全非平凡的三、函數(shù)依賴的推理規(guī)則設(shè)有關(guān)系R,x、y、z為R的一個屬性集,則有:自反律:若y x,貝y xt y0增廣律:若x t y,貝 y xz T yz 0傳遞律:若x t y,yTz,貝卩 xtzo注意傳遞律與傳遞函數(shù)依賴的區(qū)別。 合并律:若 x t y, Xi乙則xt yz。 分解律:若 x tyz,則XT y , x tz。關(guān)系模式的規(guī)范化 一、問題提出XHKHKMXMDZCJ961C1OS高明D170962C2DBS咼飛D272962C4Al咼飛D280962C1OS高明D175963C1OS高明D190答:存在問題 數(shù)據(jù)冗余大; 修改麻煩; 插入異常:應(yīng)
16、該插入到 DB中的數(shù)據(jù)插不進去。如:新幵課程沒有學(xué)生選修時,新幵課程的課程號、課程名插不進去。 刪除異常:不應(yīng)該刪除的數(shù)據(jù)被刪掉。掉。如選修某門課的學(xué)生畢業(yè)了,在刪除學(xué)生信息的同時,把課程信息也刪除結(jié)論:一個好的關(guān)系模式應(yīng)滿足: 冗余應(yīng)盡可能少; 應(yīng)盡可能避免插入、刪除異常; 消去關(guān)系中不合適的屬性依賴關(guān)系。二、范式 什么叫范式?指一個關(guān)系的非主屬性函數(shù)依賴于主碼的程度。 什么叫關(guān)系規(guī)范化?指一個關(guān)系從低級范式向高級范式的轉(zhuǎn)換過程。 應(yīng)用:關(guān)系規(guī)范化理論應(yīng)用在邏輯結(jié)構(gòu)設(shè)計階段。三、關(guān)系模式的規(guī)范化1. 第一范式(1NF) 定義:若關(guān)系R的所有屬性不能再分,則 R 1NF 存在問題 原因:存在非
17、主屬性對主碼的部分依賴。 解決辦法:消除非主屬性對主碼的部分依賴,將關(guān)系R一分為二,將滿足完全依賴的屬性集組成一個關(guān)系;將滿足部分 依賴的屬性集組成另一個關(guān)系;R1表R2表XHKHCJ961C170962C272962C480962C175963C190R1 主碼:(XH,KH)KHKMXMDZC1OS高明D1C2DBS咼飛D2C4Al咼飛D2R2主碼:KH2. 第二范式(2NF) 定義:若關(guān)系R 1NF,且它的每個非主屬性都完全依賴于主碼,則稱 2NF。 存在問題:冗余大:R1必要冗余,R2冗余可以修改。修改麻煩R2表插入異常:如新來的教師沒有上課,則該教師的信息就沒辦法插入 中。刪除異常:
18、若某位教師只授一門課,當(dāng)該門課不幵時,該教師的信息亦 被刪除。 原因:存在非主屬性對主碼的傳遞依賴。KHR XM XMR DZ,但XM KH KH t DZ傳遞依賴必須有兩個非主屬性 解決辦法:將R2 一分為二R21表R22表KHKMXMXMDZC1OS咼明C2DBS咼飛C4Al咼飛R21主碼:KHR22主碼:XM3. 第三范式(3NF) 定義:若關(guān)系R 2NF且它的每個非主屬性都不傳遞依賴于主碼,則稱 R 3NF。 規(guī)范化過程非規(guī)范關(guān)系J使每個屬性都不能再分1NFJ消去非主屬性對主碼的部分依賴2NFJ消去非主屬性對主碼的傳遞依賴3NF4. 結(jié)論 若R 1NF,且主碼只含一個屬性,則 R一定為
19、2NF。 若R 2NF,且只有01個非主屬性,則 R一定為3NF。 3NF 一般控制了數(shù)據(jù)冗余,一般避免了操作異常。 范式并非越高越好,適可而止。數(shù)據(jù)庫設(shè)計一、數(shù)據(jù)庫設(shè)計的步驟 需求分析:了解分析用戶的需要、要求。 概念結(jié)構(gòu)設(shè)計:根據(jù)需求分析的結(jié)果畫概念模型(即 E-R圖) 邏輯結(jié)構(gòu)設(shè)計:將E-R圖轉(zhuǎn)換為某一種數(shù)據(jù)模型,并優(yōu)化。 物理結(jié)構(gòu)設(shè)計 數(shù)據(jù)庫實施 數(shù)據(jù)庫運行與恢復(fù)概念結(jié)構(gòu)設(shè)計一、局部E-R圖設(shè)計1. 確定局部范圍通常把系統(tǒng)涉及的各個部門或各個主要功能作為局部。2. 確定實體與屬性 屬性是不能再分的數(shù)據(jù)項; 聯(lián)系只發(fā)生在兩實體之間; 原則上,能夠作為屬性,就不要作為實體。二、合并成總體E
20、-R圖1 消除各局部E-R圖的沖突問題。2 .按公共實體名合并,生成初步 E-R圖。3. 消除冗余的屬性和冗余的聯(lián)系,生成總體E-R圖。邏輯結(jié)構(gòu)設(shè)計一、聯(lián)系的屬性和主碼(1) 聯(lián)系的屬性:必須包含相關(guān)聯(lián)的各實體型的主碼。(2) 聯(lián)系的主碼1:1聯(lián)系:可以是相關(guān)聯(lián)的任一實體型的主碼。1: n聯(lián)系:必須是n方實體型的主碼。m n聯(lián)系:必須是相關(guān)聯(lián)的各實體型的主碼之和。二、E-R圖向關(guān)系模型的轉(zhuǎn)換(1)把每個實體型轉(zhuǎn)換為一個關(guān)系模式。2) 1: 1聯(lián)系:可以消化到相關(guān)聯(lián)的任一實體型對應(yīng)的關(guān)系模式中班長(XH,XM, Nl,BH)班級(BH rS)班級一(3) 1: n聯(lián)系:可以消化到n方實體名對應(yīng)的
21、關(guān)系模式中。例:一個班級有多名學(xué)RS每名學(xué)生只能屬于一個班級。每一個班級有一 名班長,他是學(xué)生中的一員。班級H)班長的學(xué)號(4) m n聯(lián)系:必須轉(zhuǎn)換為一個關(guān)系模式,并且不能消化學(xué)生(sno , sn課程選修(5)例:mss,sage ,sdept)cno, cname, sno, cnograde)供應(yīng)在邏輯設(shè)計的基礎(chǔ)上,為每個關(guān)系模式選擇合適的存儲結(jié)構(gòu)與存儲方式。 選擇存儲結(jié)構(gòu):即決定每個表的記錄順序。選擇存取方式:即決定為哪些屬性建立非聚集索引,以便加快查找速度。 般把經(jīng)常查詢的屬性名指定為非聚集索引。2. 數(shù)據(jù)庫實施主要工作:定義數(shù)據(jù)庫結(jié)構(gòu);組織數(shù)據(jù)入庫;編寫應(yīng)用程序;數(shù)據(jù)庫試運行;S
22、QL Server 2005 系統(tǒng)入門一、運行環(huán)境最低處理器速度:600MHZ(推薦1GB或者更快)最小內(nèi)存:512MB(推薦1GB或者更大)可用硬盤空間:1.6GB二、SQL Server 2005 的主要組件1. 服務(wù):用于啟動 SQL Server 2005服務(wù)器單擊“幵始”菜單,選擇“控制面板”| “管理工具” | “服務(wù)”選項,將“ SQL Server (MSSQLSERVJER選項置為“自動”,即隨操作系統(tǒng)的啟動而自 動啟動。安裝時默認(rèn)為“自動”。2 .配置管理器(Configuration Manager ):用于啟動 SQL Server 2005 服 務(wù)器注意:“服務(wù)”窗口
23、中顯示的是操作系統(tǒng)中全部的服務(wù)程序,而“配置管理 器”窗口中顯示的僅僅是與 SQL Server 2005有關(guān)的服務(wù)程序。3. SQL Server Management Studio (簡稱 SSMS 管理工作室)組合了對象資源管理器、查詢編輯器的功能。對象資源管理器用于管理數(shù) 據(jù)庫服務(wù)器中的所有數(shù)據(jù)庫對象;4. SSMS查詢編輯器:主要用于輸入、執(zhí)行和保存 Transact-SQL命令創(chuàng)建和使用數(shù)據(jù)庫一、數(shù)據(jù)庫文件1一個數(shù)據(jù)庫至少有一個主要數(shù)據(jù)文件和一個事務(wù)日志文件。如果數(shù)據(jù)庫 很大,可以使用一個主要數(shù)據(jù)文件、多個次要數(shù)據(jù)文件和多個事務(wù)日志文件。主數(shù)據(jù)文件(.mdf )次數(shù)據(jù)文件(.ndf
24、 )用于存放數(shù)據(jù)庫的各事務(wù)日志文件(df ):用來記錄對數(shù)據(jù)庫對象的所有更新操作。2. 系統(tǒng)數(shù)據(jù)庫Master數(shù)據(jù)庫、Model數(shù)據(jù)庫二、創(chuàng)建數(shù)據(jù)庫1. 打幵數(shù)據(jù)庫:Use數(shù)據(jù)庫名2刪除數(shù)據(jù)庫:Drop database數(shù)據(jù)庫名三、修改數(shù)據(jù)庫1. 分離和附加數(shù)據(jù)庫2. 備份和還原數(shù)據(jù)庫3 數(shù)據(jù)的導(dǎo)入和導(dǎo)出 數(shù)據(jù)庫的備份和恢復(fù)1. 將數(shù)據(jù)庫備份到一個備份文件中:Backup database數(shù)據(jù)庫名to disk二' 路徑 文件名'2. 將備份文件恢復(fù)到數(shù)據(jù)庫中:Restore database數(shù)據(jù)庫名from disk=' 路徑 文件名'創(chuàng)建和使用表數(shù)據(jù)類型1.
25、 字符型char(n):定長字符型,n表示字符數(shù),取值為18000。若缺省n,則默認(rèn) 為1。varchar( n):變長字符型Text :可以存儲任意長的字符串說明:標(biāo)準(zhǔn)字符型:每個英文字母、數(shù)字算1個字符,每個漢字算2個字符,每個字符占1個字節(jié)。2. 統(tǒng)一碼字符型每個英文字母、數(shù)字、漢字算 1個字符,每個字符占2個字節(jié)。nchar(n) : n表示字符數(shù),取值為 14000。n varchar( n)ntext :可以存儲任意長的統(tǒng)一碼字符串。例:設(shè)某表的結(jié)構(gòu)如下:no char(6), n ame n char(6)則no可以賦予3個漢字,name可以賦予6個漢字3. 整型取值范圍所占字節(jié)
26、數(shù)Bigi nt8Int4Smalli nt-32768+327672Ti nyi nt02551bit0,1即邏輯型4.實型精確數(shù)值型Decimal(p,s)Numeric(p,s)精度P:表示全部數(shù)字的位數(shù)(不計小數(shù)點和正負(fù)號)S:表示小數(shù)位數(shù),若缺省 S,則默認(rèn)為0P-S:表示整數(shù)位數(shù) 近似數(shù)值型Real 精確到 7 位有效數(shù)字Float 精確到 15 位有效數(shù)字5貸幣型Money:占8個字節(jié),保留4位小數(shù)Smallmoney :占4個字節(jié),保留4位小數(shù)字符串常量:由單引號括住的字符序列 貸幣型常量:可以是一個實型常量 6日期時間型Datetime 、Smalldatetime 若省略日
27、期部分,則默認(rèn)為:' 1900-1-1 ' 若省略時間部分,則默認(rèn)為:' 00:00:00 ' 日期格式:' yyyy-mm-dd'時間格式:' hh:m m :ss ' 使用對象資源管理器創(chuàng)建和管理表一、創(chuàng)建表 1在一個表中只能定義一個標(biāo)識字段。2只有整型和精確數(shù)值型 ( decimal 、numeric )字段才能指定為標(biāo)識字段。 3把某個字段指定為公式字段。二、設(shè)置約束1主鍵約束:每個表中只能有一列或一個組合被指定為主鍵,主鍵中的各個列不能為空 值。2外鍵約束: 創(chuàng)建外鍵約束,就是定義兩個表的永久關(guān)聯(lián),這兩個表分別稱為主鍵表
28、、 外鍵表。外鍵表中外鍵的值只能是主鍵表中主鍵的有效值或空值。3唯一性約束:主鍵約束與唯一性約束的區(qū)別是:( 1) 在一個表中只能定義一個主鍵約束,但可定義多個唯一性約束;( 2)指定為主鍵約束的列不能取空值, 但指定為唯一性約束的列允許取空值。 4唯一性約束:用于限制輸入到一列或多列的值的范圍,保證數(shù)據(jù)庫的數(shù)據(jù)完整性。5默認(rèn)值約束:T-SQL、SQL語言的特點SQL語言集數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)控制的功能于一體。動詞數(shù)據(jù)定義Create、drop數(shù)據(jù)查詢select數(shù)據(jù)操縱Insert、delete、update數(shù)據(jù)控制Grant、revoke所有的DBMS支持SQL語言。T-SQ
29、L基礎(chǔ)一、創(chuàng)建和使用數(shù)據(jù)庫1創(chuàng)建數(shù)據(jù)庫create database 數(shù)據(jù)庫名2 使用數(shù)據(jù)庫Use數(shù)據(jù)庫名3 刪除數(shù)據(jù)庫drop database 數(shù)據(jù)庫名二、定義表1創(chuàng)建表create table 表名(屬性名 類型,屬性名 類型) 指定標(biāo)識字段:identity(標(biāo)識種子,標(biāo)識增量) 指定公式字段:屬性名 as表達式例: create table student(no int ide ntity(1,1),n ame char(6),chi smalli nt,mat smalli nt,score as chi+mat)2. 刪除表drop table 表名,表名三、select 語句
30、select */ 表達式表 into 新表from表名,表名 where 條件 group by 屬性名 hav ing條件order by 屬性名Asc/Desc1. Select 子句 *代表所有屬性名 若一個屬性名來自多個表,則屬性名前須冠以表名,格式為:表名 屬性名 設(shè)置表達式的別名:表達式As別名 限制查詢結(jié)果的記錄行數(shù):all返回全部記錄top n返回前面 n號記錄dist inct表示取消重復(fù)行說明:top n只能放在關(guān)鍵字select的后面;all 、distinct只能放在關(guān)鍵字select或聚合函數(shù)的后面。2. Where 子句 in的格式:屬性名in (常量,常量) l
31、ike 的格式:屬性名like 通配字符串通配符有:%表示0個或多個字符-表示1個字符 在Where子句中指定連接:Where 表名1.屬性名二表名2.屬性名3. Order by 子句order by 屬性名 1 Asc/Desc, 屬性名 2 Asc/Desc4. 聚合函數(shù) sum(屬性名):縱向求數(shù)值型屬性之和。 avg(屬性名) cou nt(*)返回表的記錄行數(shù)(含重復(fù)行)。count(屬性名)返回指定列中取非 NULL值的單元格數(shù)目。count(distinct屬性名)返回指定列中取非 NULL值、非重復(fù)的單元格數(shù)目。 max(屬性名) min(屬性名)5. Group by 子句
32、使用Group by子句時,Select子句只能使用分組項字段和聚合函數(shù) 例:以性別為分組項,求每一組的平均年齡。Select ssex, avg(sage) as平均年齡From stude ntGroup by ssex6. Having 子句 Having子句只能跟在Group by子句之后,且只能使用聚合函數(shù)和分組項 字段。 where子句放在Group by子句之前,甚至可以沒有 Group by子句;且不 能包含聚合函數(shù)。例:以系別為分組項,查詢學(xué)生平均年齡大于19歲的系的系名,平均年齡。Select sdept,avg(sage) as 平均年齡From stude ntGrou
33、p by sdeptHaving avg(sdept)197. into 子句功能:將查詢結(jié)果保存到新的基表中。一、查詢的分類一 單表查詢連接查詢- 嵌套查詢1. 連接查詢:在 where子句中指定連接where表名1.屬性名二表名2.屬性名2. 嵌套查詢 嵌套查詢的特點每級查詢的from子句一般只包含一個表名。一個嵌套查詢總可以分解為若干個單表查詢,總可以改寫成連接查詢。若查詢結(jié)果顯示的屬性名來自一個表,才可以寫成嵌套查詢。子查詢不能使用 order by子句,order by只能用于最頂層的查詢。 在where子句中指定子查詢where 屬性名not in(子查詢):子查詢返回一列多行。w
34、here 屬性名二(子查詢):子查詢返回一列一行。where not exists(子查詢):子查詢返回多列多行。五、數(shù)據(jù)操縱1. insert 語句(1)每次插入一條記錄insert into表名(屬性名表)values( 表達式表)(2)插入子查詢的結(jié)果insert into表名(屬性名表)子查詢例: insert into studentselect * from stude nt12. update 語句update表名set 屬性名二值,屬性名 二值where 條件缺省where子句,默認(rèn)為更新全部記錄。3. delete 語句 delete from 表名where 條件T-SQL
35、程序設(shè)計基礎(chǔ)一、常量:字符型:由單引號括住,例:chi na'整型I實型I日期型:由單引號括住的具有日期或時間意義的序列,格式為:'yyyy-mm-dd' , 'hh:mm:ss'二、變量:'局部變量:由用戶定義和賦值,以幵頭。全局變量:由系統(tǒng)定義和賦值,以干頭。1. 聲明局部變量Declare 變量名類型例: declare a int,b char(5)注:不要把局部變量聲明為text、ntext、image2. 給局部變量賦值 使用set語句:Set 變量名二表達式 使用select 語句Select 變量名二表達式,變量名二表達式from
36、 表名若表達式中含有屬性名,則必須使用from子句。例:declare a char(5),b char(6)Select a='95001' ,b='王名'或: select a=sno,b=snameFrom stude nt3. 輸出表達式的值: 使用print語句Pri nt 表達式 使用select語句Select 表達式,表達式from 表名例:A) select a,bB)select sno,snameFrom student C)select sno as學(xué)號 ,sname as 姓名From student 等價于: select 學(xué)號 =s
37、no, 姓名 =snameFrom student 4局部變量的作用域: 只能在聲明它的批處理中使用。 例: Use studGo Declare a int Set a=5 Print a Go Declare a char(5) Set a=' 張三 ' Print a三、運算符:算術(shù)運算符(*、/、% T +、-)關(guān)系運算符( >、 >=、 <、 <=、 =、 <>)邏輯運算符(not T and 宀 or )批處理 1什么叫批處理?一個腳本由一個或多個批處理組成,批處理以GO乍為結(jié)束標(biāo)志。2批處理是腳本的編譯單位,當(dāng)一個批處理中的某個
38、語句出現(xiàn)編譯錯誤,則批 處理中的任何語句均無法執(zhí)行。3當(dāng)一個批處理中的某個語句出現(xiàn)運行錯誤,則批處理中當(dāng)前語句和它之后的 語句將無法執(zhí)行。流程控制語句一、beg in end 語句 Begin 語句 1語句 nEnd二、if-else 語句1. 格式: if 邏輯表達式語句 1else 語句 2 2當(dāng)邏輯表達式包含子查詢時,子查詢必須用括號括住。子查詢返回一列多行 子查詢返回一列一行 子查詢返回多列多行屬性名 in ( 子查詢 ) 屬性名 = ( 子查詢 ) Exists( 子查詢 )三、case 表達式CaseWhen 邏輯表達式 1 then 結(jié)果 1When 邏輯表達式 2 then 結(jié)
39、果 2 else 結(jié)果 nEnd說明: case 表達式不是語句,不能單獨執(zhí)行例:use studSelect 姓名二sname,系另U =CaseWhen sdept= 'CS' then ' 計算機科學(xué)系 'When sdept= 'IS' then ' 信息系統(tǒng)系 'When sdept= 'MA' then ' 數(shù)學(xué)系 'End四、while 語句1格式:While 邏輯表達式Begin語句組End 2專用于循環(huán)體的語句:Break強制退出 while 語句,執(zhí)行其后續(xù)語句Continue
40、返回 while 語句的入口。Break 、 Continue 必須放在循環(huán)體內(nèi),并常與 if-else 語句結(jié)合使用。二、 其它語句1 Return 語句格式: Return ( 整數(shù)值 ) 功能:用于存儲過程或批處理中,功能是退出所在的存儲過程或批處理。 說明:當(dāng)用于存儲過程時,若沒有為 Return 指定整數(shù)值,則默認(rèn)為 0。2存儲過程 創(chuàng)建存儲過程Create procedure 存儲過程名 形參名 類型 As SQL 語句序列 執(zhí)行存儲過程Exec 存儲過程名 常量 | 變量名 : 刪除存儲過程Drop procedure 存儲過程名 說明:存儲過程不返回值,或者只能返回整數(shù)值;而函
41、數(shù)可返回任意類型的 值。3 Waitfor 語句函數(shù)1創(chuàng)建函數(shù)create function函數(shù)名 (形參名 類型 ) returns 類型asbegin函數(shù)體End 注: 函數(shù)體最后一條語句必須是return語句。 兩類函數(shù):標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)2執(zhí)行函數(shù)Exec 變量名 1=函數(shù)名 常量| 變量名Print 函數(shù)名 ( 常量| 變量名 )3刪除函數(shù)Drop function 函數(shù)名附加練習(xí)題 9一、定義表:1 SQL server 中建立一個數(shù)據(jù)庫 stu 。2使用企業(yè)管理器中創(chuàng)建如下三個表。Snosn amessexsagesdept95001李勇男20CS95002劉晨女19IS95
42、003王名女18MA95004張立男18CSenocn amecredit1數(shù)據(jù)庫原理42操作系統(tǒng)33Java程序設(shè)計34匯編語言2student 表Course 表Sc表SnoCnograde9500118595001288950013829500219095002380、查詢表:1查詢?nèi)w學(xué)生的姓名及出生年份。2. 查詢年齡小于19歲的男學(xué)生的學(xué)號,姓名。3. 查詢選修了課程的學(xué)生人數(shù)。提示:select count(distinct sno) from sc4. 查詢所有選修過課的學(xué)生的學(xué)號、姓名。5. 查詢數(shù)學(xué)系(MA、計算機科學(xué)系(CS的學(xué)生的姓名和性別6. 查詢年齡最大的2名學(xué)生情
43、況7. 查詢姓“劉”的學(xué)生情況。8. 以性別為分類項,查詢每一類的平均年齡。9. 查詢選修了課程名為“操作系統(tǒng)”的學(xué)生的學(xué)號、姓名。10. 查詢年齡低于平均年齡的所有學(xué)生的姓名、系別三、操縱表:1.在企業(yè)管理器中創(chuàng)建一個新表student1 :Snosn amessexsagesdept95005王虹女19CS95006萬亮男20MA2.將student1表插入到student表的后面。提示:insert into student select * from student1 表名2 on 條件表名2 on 條件CS )條件3. 將(95020,陳冬,男,18, IS)插入到student表中
44、。4. 刪除student1表中的所有記錄,使之成為空表。5. 把student表中所有男生記錄復(fù)制到空表student1中。6. 把student表中所有女生記錄復(fù)制到新表student2中。7. 將所有學(xué)生的年齡增加 1歲。8. 將計算機科學(xué)系全體學(xué)生的成績置0。 提示:update sc set grade=0where sno in (select sno from stude nt where sdept=9. 刪除學(xué)號為95020的學(xué)生記錄。10. 刪除計算機科學(xué)系所有學(xué)生的選課記錄。T-SQL高級應(yīng)用一、查詢的分類 廠單表查詢y 連接查詢嵌套查詢一、連接查詢:在 where子句中
45、指定連接1. 內(nèi)連接:where表名1.屬性名二表名2.屬性名2. 自身連接:給一個表取兩個別名,where子句的格式為:where別名1.屬性名二別名2.屬性名3. 左外連接:where表名1.屬性名*=表名2.屬性名意義:查詢結(jié)果包含了表 1的全部記錄和表2滿足條件的記錄4. 右外連接:where表名1.屬性名=*表名2.屬性名意義:查詢結(jié)果包含了表 2的全部記錄和表1滿足條件的記錄三、連接查詢:在from子句中指定連接1. 內(nèi)連接:from 表名1 inn er join表名2 on 條件例:select *from stude nt,scwhere stude nt.s no 二sc.
46、s no等價于select *from stude nt inner join sc on stude nt.s no 二sc.s no2. 左外連接:from 表名 1 left outer join3. 右外連接:from 表名 1 right outer join4. 完全外連接:from 表名1 full outer join表名2 on5. 交叉連接 四、嵌套查詢事務(wù)處理1什么叫事務(wù)?事務(wù)是用戶定義的一組操作序列。 事務(wù)是并發(fā)控制的基本單位。 一個事務(wù)包含的諸操作要么都執(zhí)行,要么都不執(zhí)行。2. 事務(wù)的屬性 原子性:指事務(wù)中包含的諸操作要么都執(zhí)行,要么都不執(zhí)行。V致性:事務(wù)必須使數(shù)據(jù)庫
47、從一個一致性狀態(tài)變到另一個一致性狀態(tài)。隔離性:一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。I持久性3. 顯式定義事務(wù)beg in tra nsacti on 事務(wù)名commit/rollback transaction事務(wù)名當(dāng)未顯式指定事務(wù),則一個 SQL語句就是一個事務(wù)。4. 在事務(wù)內(nèi)設(shè)置保存點beg in tra nsacti onsave tran sacti on保存點名rollback tran sacti on保存點名功能:將保存點到rollback子句之間的SQL操作回滾掉。數(shù)據(jù)的鎖定一、并發(fā)操作與數(shù)據(jù)不一致性1. 數(shù)據(jù)不一致性包括三類丟失修改:指事務(wù)1與事務(wù)2從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并修改
48、,事務(wù)2的提交結(jié)果破壞事務(wù)1提交的結(jié)果,導(dǎo)致事務(wù)1的修改被丟失。不可重復(fù)讀:指事務(wù)1讀取數(shù)據(jù)后,事務(wù)2執(zhí)行更新操作,使事務(wù)1無法 再現(xiàn)前一次讀取結(jié)果。讀臟數(shù)據(jù):指事務(wù)1修改某一數(shù)據(jù)后,事務(wù) 2讀取該數(shù)據(jù),事務(wù)1由于某 種原因被撤銷,這時數(shù)據(jù)又恢復(fù)到原值,事務(wù)2讀到的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)不一致,稱為“臟”數(shù)據(jù)。2. 產(chǎn)生數(shù)據(jù)不一致性的原因并發(fā)操作破壞了事務(wù)的隔離性。二、并發(fā)控制的目標(biāo)、方法1. 目標(biāo):確保DB中的數(shù)據(jù)一致性。2. 并發(fā)事務(wù)正確性的原則幾個事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與任何一個串行執(zhí)行的結(jié)果 相同。3. 并發(fā)控制的方法DBMW般采用“封鎖”技術(shù),保證并發(fā)操作的可串行化。二
49、、圭寸鎖(Locking)1. 什么叫封鎖?SQL Server自動強制圭寸鎖,并且會將圭寸鎖粒度控制在合適的級別,用戶不必考 慮封鎖問題。2. 封鎖類型排它鎖(X鎖):事務(wù)T對數(shù)據(jù)A加X鎖,其它事務(wù)不能再對 A加鎖,即其 J它事務(wù)不能讀取和修改 Ao共享鎖(S鎖):事務(wù)T對數(shù)據(jù)A加S鎖,其它事務(wù)只能再對 A加S鎖,即 其它事務(wù)只能讀A,不能修改Ao3. 封鎖粒度封鎖對象可以是屬性列、元組、關(guān)系、整個數(shù)據(jù)庫。封鎖對象的大小稱為 封鎖粒度。封鎖粒度越小,并發(fā)度越高,但并發(fā)控制的幵銷越大。4. 封鎖協(xié)議 事務(wù)T在修改數(shù)據(jù)A之前,必須對其加X鎖,直到事務(wù)結(jié)束才釋放。 事務(wù)T在讀取數(shù)據(jù)A之前,必須對其
50、加S鎖,直到事務(wù)結(jié)束才釋放。 遵循封鎖協(xié)議,可以解決三種數(shù)據(jù)不一致性問題:丟失修改« 不可重復(fù)讀<讀“臟”數(shù)據(jù)四、死鎖和活鎖封鎖技術(shù)可以解決并發(fā)操作的不一致性問題,但也帶來新的問題,即死鎖 和活鎖。1. 死鎖: 定義:兩個事務(wù)已經(jīng)各自鎖定一個數(shù)據(jù),但是又要訪問被對方鎖定的數(shù) 據(jù),造成了循環(huán)等待,稱為死鎖。 避免死鎖的方法:順序封鎖法:若規(guī)定封鎖順序為 A, B,則T1, T2只能先封鎖A,再封鎖B<2. 活鎖: 定義:若多個事務(wù)請求封鎖同一個數(shù)據(jù)時,其中的某個事務(wù)總處于等待 狀態(tài),則稱為活鎖。 避免活鎖的方法:先來先服務(wù)使用游標(biāo)一、游標(biāo)的概念1. 每個表均有一個游標(biāo),它可
51、以指向表的任意一條記錄。2. 移動游標(biāo)的方法: 在觸發(fā)器或存儲過程中,使用SQL語句定義和使用游標(biāo)。 在前臺應(yīng)用程序中,使用主語言實現(xiàn)對游標(biāo)的移動。二、Transact-SQL游標(biāo)的使用:1. 聲明游標(biāo)Declare 游標(biāo)名 cursorforward_o nly / scroll global /localread_o nly for select 語句j forward_only(只進游標(biāo)):只能進行next操作,缺省為forward_only 。-scroll(滾動游標(biāo))global /local:缺省為:global2 打幵游標(biāo)ope n 游標(biāo)名打幵游標(biāo)時,游標(biāo)指向查詢結(jié)果集的第一條記錄之前。3 .提取游標(biāo)fetch next / prior / first /last from游標(biāo)名into局部變量名表 缺省into子句:移動游標(biāo),并顯示當(dāng)前記錄的內(nèi)容。 含into子句:移動游標(biāo),并將當(dāng)前記錄各屬性值依次賦給局部變量。 缺省游標(biāo)移動方式,則為next 04. 關(guān)閉游標(biāo)close 游標(biāo)名5. 釋放游標(biāo)declaredeclare 游標(biāo)名例:-打印stude
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年農(nóng)業(yè)科學(xué)研究與試驗發(fā)展服務(wù)合作協(xié)議書
- 電子閱讀器開發(fā)及內(nèi)容資源整合方案
- 個人工程勞務(wù)協(xié)議年
- 2025年懸掛式離子風(fēng)機項目合作計劃書
- 農(nóng)業(yè)生態(tài)技術(shù)應(yīng)用示范推廣協(xié)議
- 2025年殺螨隆項目合作計劃書
- 高級管理職務(wù)任職證明書(7篇)
- 城市智能停車設(shè)施采購協(xié)議
- 高端職位任職資歷證明書(7篇)
- 城市治理與市政發(fā)展反饋試題及答案
- 2024至2030年中國動畫產(chǎn)業(yè)投資分析及前景預(yù)測報告
- 2025年中考歷史復(fù)習(xí)專項訓(xùn)練:世界現(xiàn)代史選擇題100題(原卷版)
- 四年級下冊語文課外閱讀題三(5篇含答案)
- 山東省濟南市槐蔭區(qū)2024年五年級數(shù)學(xué)第二學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 五年級小數(shù)乘法練習(xí)題300道及答案
- 萬達商家入駐商場合同(2024版)
- 【課件】初心與使命-時代的美術(shù)擔(dān)當(dāng)+課件-高中美術(shù)人美版(2019)美術(shù)鑒賞
- DLT 722-2014 變壓器油中溶解氣體分析和判斷導(dǎo)則
- 北師大版五年級下冊英語教案
- 鋁合金薄板的熱處理工藝與性能的研究
- 四川省成都市郫都區(qū)2023-2024學(xué)年數(shù)學(xué)五下期末調(diào)研試題含解析
評論
0/150
提交評論