版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫系統(tǒng)概述
一、有關(guān)概念
1.數(shù)據(jù)
2.數(shù)據(jù)庫(DB)
3.數(shù)據(jù)庫管理系統(tǒng)(DBMS)
JAccess
桌面DBMSVFP
"SQLServer
Y
Oracle
客戶機(jī)/服務(wù)器型DBMSMySQL
DB2
4.數(shù)據(jù)庫系統(tǒng)(DBS)
數(shù)據(jù)庫(DB)
Y
數(shù)據(jù)庫管理系統(tǒng)(DBMS)
開發(fā)工具
應(yīng)用系統(tǒng)
二、數(shù)據(jù)管理技術(shù)的發(fā)展
1.數(shù)據(jù)管理的三個(gè)階段
人工管理文獻(xiàn)系統(tǒng)數(shù)據(jù)庫系統(tǒng)
數(shù)據(jù)能否保存不能保存能夠保存能夠保存
數(shù)據(jù)面對(duì)的對(duì)象某一應(yīng)用程序某一應(yīng)用程序整個(gè)應(yīng)用系統(tǒng)
無共享,一組共享性差,一個(gè)數(shù)
數(shù)據(jù)的共享程度數(shù)據(jù)只能對(duì)應(yīng)一個(gè)據(jù)文獻(xiàn)只能對(duì)應(yīng)一共享性高
應(yīng)用程序。個(gè)應(yīng)用程序。
不獨(dú)立,它是應(yīng)用數(shù)據(jù)庫與應(yīng)用系統(tǒng)
數(shù)據(jù)的獨(dú)立性獨(dú)立性差
程序的一部分。完全分開
概念模型
一、模型的三個(gè)世界
1.現(xiàn)實(shí)世界
2.信息世界:即依照需求分析畫概念模型(即E-R圖),E-R圖與DBMS無關(guān)。
3.機(jī)器世界:將E-R圖轉(zhuǎn)換為某一個(gè)數(shù)據(jù)模型,數(shù)據(jù)模型與DBMS有關(guān)。
注意:信息世界又稱概念模型,機(jī)器世界又稱數(shù)據(jù)模型
二、實(shí)體及屬性
1.實(shí)體:客觀存在尹可相互區(qū)分的事物.
2.屬性:
3.核心詞(碼、key):能唯一標(biāo)識(shí)每個(gè)實(shí)體又不含多出屬性的屬性組合。
一個(gè)表的碼能夠有多個(gè),但主碼只能有一個(gè)。
例:借書表(學(xué)號(hào),姓名,范殳,書名,作者,定價(jià),儂,還期)
要求:學(xué)生一次能夠借多本書,同一個(gè)書只能借一本,但能夠數(shù)次續(xù)借。
4.實(shí)體型:即二維表的結(jié)構(gòu)
例student(no,name,sex,age,dept)
5.實(shí)體集:即整個(gè)二維表
三、實(shí)體間的聯(lián)系:
I.兩實(shí)體集間實(shí)體之間的聯(lián)系
{1:1聯(lián)系
1:n聯(lián)系
m:n聯(lián)系
2.同一實(shí)體集內(nèi)實(shí)體之間的聯(lián)系
{1:1聯(lián)系
1:n聯(lián)系
in:n聯(lián)系
四、概念模型(常用E-R圖表示)
實(shí)體型:
屬性:
聯(lián)系:
闡明:①E-R圖作為用戶與開發(fā)人員的中間語言。
②E.R圖能夠等價(jià)轉(zhuǎn)換為層次、網(wǎng)狀、關(guān)系模型。
舉例:
學(xué)校有若干個(gè)系,每個(gè)系有若干班級(jí)和教研室,每個(gè)教研室有若干教員,其中有的教授
和副教授每人各帶若干研究生。每個(gè)班有若干學(xué)生,每個(gè)學(xué)生選修若干課程,每門課程有若
干學(xué)生選修。用E-R圖畫出概念模型。
數(shù)據(jù)模型
一、層次模型:用樹型結(jié)構(gòu)表示實(shí)體之間的聯(lián)系。
①每個(gè)結(jié)點(diǎn)代表一個(gè)實(shí)體型。
②只能直接處理一對(duì)多(含一對(duì)一)的實(shí)體關(guān)系。
③杳找層次數(shù)據(jù)庫中的統(tǒng)計(jì),速度較慢。
二、網(wǎng)狀模型:用圖結(jié)構(gòu)表示實(shí)體之間的聯(lián)系。
①每個(gè)結(jié)點(diǎn)代表一個(gè)實(shí)體型。
②能夠處理多對(duì)多的實(shí)體關(guān)系。
③查找網(wǎng)狀數(shù)據(jù)庫中的統(tǒng)計(jì),速度最快。
三、關(guān)系模型:用二維表表示實(shí)體之間的聯(lián)系。
1.重要術(shù)語:
關(guān)系:一個(gè)關(guān)系就是一個(gè)二維表;
元組:二維表的一行,即實(shí)體;
關(guān)系模式:在實(shí)體型的基礎(chǔ)上,注明主碼。
關(guān)系模型:指一個(gè)數(shù)據(jù)庫中所有二維表結(jié)構(gòu)的集合。
2.特點(diǎn):
①關(guān)系模型是建立在嚴(yán)格的數(shù)學(xué)理論的基礎(chǔ)上的;
②關(guān)系模型的存取途徑對(duì)?用戶透明;
③查找關(guān)系數(shù)據(jù)庫中的統(tǒng)計(jì),速度最慢。
小結(jié):數(shù)據(jù)有三種類型,DBMS就有三種類型,DB亦有三種類型。
數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)
一、數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)
①單機(jī)結(jié)構(gòu):
DBMS、數(shù)據(jù)庫、開發(fā)工具、應(yīng)用系統(tǒng)安裝在一臺(tái)計(jì)算機(jī)上。
②C/S結(jié)構(gòu):局域網(wǎng)結(jié)構(gòu)
客戶機(jī):裝開發(fā)工具、應(yīng)用系統(tǒng)
服務(wù)器:裝DBMS、數(shù)據(jù)庫
③B/S結(jié)構(gòu):Internet結(jié)構(gòu)
服務(wù)器:裝DBMS、數(shù)據(jù)庫、開發(fā)工具、應(yīng)用系統(tǒng)
客戶機(jī):裝IE即可
三、數(shù)據(jù)庫系統(tǒng)的模式結(jié)構(gòu)
I.三級(jí)模式
①模式:是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述。
0模式只包括數(shù)據(jù)庫的結(jié)構(gòu);
0模式既不包括應(yīng)用程序,又不包括數(shù)據(jù)庫結(jié)構(gòu)的存儲(chǔ);
②外模式:是模式的一個(gè)子集,是與某一個(gè)應(yīng)用程序有關(guān)的邏輯表示。
特點(diǎn):一個(gè)應(yīng)用程序只能使用一個(gè)外模式,但同一個(gè)外模式可為多個(gè)應(yīng)用程序使用。
③內(nèi)模式:描述數(shù)據(jù)庫結(jié)構(gòu)的存儲(chǔ),但不包括物理統(tǒng)計(jì)。
2.兩級(jí)映象
①外模式/模式映象:確保數(shù)據(jù)庫的邏輯獨(dú)立性;
②模式/內(nèi)模式映象:確保數(shù)據(jù)庫的物理獨(dú)立性:
3.兩級(jí)映象的意義
①使數(shù)據(jù)庫與應(yīng)用系統(tǒng)完全分開,數(shù)據(jù)庫變化時(shí),應(yīng)用系統(tǒng)無須變化。
②數(shù)據(jù)的存取完全由DBMS管理,用戶無須考慮存取途徑。
數(shù)據(jù)庫管理系統(tǒng)
1.DBMS的功效:負(fù)責(zé)對(duì)數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理與控制。
①數(shù)據(jù)定義:即定義數(shù)據(jù)庫中各對(duì)象的結(jié)構(gòu)
②數(shù)據(jù)操縱:包括對(duì)數(shù)據(jù)庫進(jìn)行查詢、插入、刪除、修改等操作。
③數(shù)據(jù)控制:包括安全性控制、完整性控制、并發(fā)控制、數(shù)據(jù)庫恢復(fù)。
2.DBMS的組成:
DDL語言
Y
DML語言
J
DCL語言
實(shí)用程序
注意:
①SQL集DDL,DML,DCL功效于一體;
②所有應(yīng)用程序通過SQL語句才能訪問數(shù)據(jù)庫
一、基本概念
1.碼:能唯一標(biāo)識(shí)元組的屬性集。
2.候選碼:一個(gè)屬性集既能唯一標(biāo)識(shí)元組,且又不含有多出屬性,一個(gè)關(guān)系模式能夠
有多個(gè)候選碼。
3.主碼:任選候選碼中的一個(gè)。
4.主屬性:主碼中包括的各個(gè)屬性。
5.非主屬性:不包括在主碼中的各個(gè)屬性。
6.外碼:設(shè)F是關(guān)系R的一個(gè)屬性,不是R的主碼,但卻是另一個(gè)關(guān)系S的主碼,則
稱F是關(guān)系R的外碼。
例:student(sno,sname,ssex,sage,sdept)
Sc(sno,eno,grade)
Sc的主碼為:(sno,cno):外碼為:sno
關(guān)系的數(shù)學(xué)定義
一、域(domain)
I.定義:域是一組具備相同類型的值的集合。
2.域的基數(shù):域中所含數(shù)據(jù)的個(gè)數(shù)。
二、笛卡爾積
1.定義:給定一組域D1,D2,D3,則D1XD2XD3稱為笛卡爾積。
2.笛卡爾積D1XD2XD3對(duì)應(yīng)一個(gè)二維表,所含元組的個(gè)數(shù)等于各個(gè)域的基數(shù)之積。
三、關(guān)系
1.定義:笛卡兒積的一部分元組稱為關(guān)系。
2.關(guān)系的目(或度):一個(gè)關(guān)系所含屬性的個(gè)數(shù)。
3.關(guān)系的性質(zhì)
任意兩個(gè)元組不能完全相同,但屬性名允許重復(fù)。
四、關(guān)系的完整性
1.實(shí)體完整性:指關(guān)系的所有主屬性都不能取空值。
注意:實(shí)體完整性不但僅是主碼整體不能取空值。
2.參考完整性:指一個(gè)關(guān)系外碼的取值必須是有關(guān)關(guān)系中主碼的有效值或空值。
例:班級(jí)(班名,人數(shù))
學(xué)生(學(xué)號(hào),姓名,性別,密碼,班名)
在學(xué)生表中,班名的取值必須是班級(jí)表[班名]的值或空值。
關(guān)系代數(shù)
一、老式的集合運(yùn)算
設(shè)關(guān)系R、S的結(jié)構(gòu)完全相同,貝心
RUS:由屬于R或?qū)儆赟的元組組成。
Rns:由既屬于R又屬于S的元組組成。
R-S:由屬于R而不屬于S的元組組成。
思考:(RGS)U(R-S)=?
RXS:設(shè)R有m個(gè)屬性,K1個(gè)元組:S有n個(gè)屬性,K2個(gè)元組,則RXS含有(m+n)
個(gè)屬性,(K1XK2)個(gè)元組。
二、專門的關(guān)系運(yùn)算
1.選擇:從關(guān)系R中選擇滿足條件的元組。記為:o>(R)
2.投影:從關(guān)系R中選擇若干屬性組成新的關(guān)系,并把新關(guān)系的重復(fù)元組去掉。
記為:口.㈤
3.條件連接:將兩關(guān)系按一定條件連接成一個(gè)新關(guān)系,記為:R%S=OF(RX、S)
闡明:條件連接:兩關(guān)系能夠沒有公共屬性,若有公共屬性,則新關(guān)系含有重復(fù)屬性。
4.自然連接:將兩關(guān)系按公共屬性連接成一個(gè)新的關(guān)系,并把新關(guān)系的重復(fù)屬性去掉。
記為:R^S
闡明:①自然連接:兩關(guān)系最少有一個(gè)公共屬性。
②對(duì)「R的每個(gè)元組,S都從第一個(gè)元組開始判斷,若兩元組的公共屬性值相
同,則產(chǎn)生一個(gè)新元組添加到新關(guān)系中,最后把新關(guān)系中的重復(fù)屬性去掉。
5.除:給定關(guān)系R(x,y)和S(y,z),則R+S=P(x),其中x,y,z為屬性組
求解過程:
①求R中x能夠取哪此值,并求各值的象集。
②求S在屬性組y上的投影K。
③檢查每個(gè)象集是否包括K
注:除不是一個(gè)必須的運(yùn)算,能夠由其他運(yùn)算符替代。
例:設(shè)有關(guān)系R,S如下圖,求R+S。
ABCBCD
alblc2blc2dl
a2b3c7b2cldl
a3b4c6b2c3d2
alb2c3
a4b6c6
a2b2c3
alb2cl
解:在關(guān)系R中,A能夠取四個(gè)值,al,a2,a3,a4o
al的象集為{(bl,c2),(b2,c3),(b2,cl)}
a2的象集為{(b3,c7),(b2,c3)}
a3的象集為{(b4,c6)}
a4的象集為{(b6,c6)}
S在(B,C)上的投影K為{(bl,c2),(b2,c3),(b2,cl)}
顯然只有al的象集包括K,故R4-S={al}
結(jié)論:怎樣寫關(guān)系代數(shù)體現(xiàn)式?
答:①查詢包括多個(gè)關(guān)系時(shí),一般使用8->b->no
②查詢包括“否定”時(shí),一般用差運(yùn)算。
③查詢包括“所有”時(shí),一般用除運(yùn)算。
④查詢包括“最少”時(shí),一-般用X
關(guān)系數(shù)據(jù)庫規(guī)范化理論
函數(shù)依賴
一、有關(guān)概念:
R表
XHKHKMXMDZCJ
961C1OS高明D170
962C2DBS高飛D272
962C4AI高飛D280
962C1OS高明DI75
963C1OS高明DI90
1.函數(shù)依賴:
任給R(U),U為屬性集,x、y為U的子集,假如對(duì)于x的每個(gè)值,y有唯一確定的
值與之對(duì)應(yīng),則稱x決定y,或y函數(shù)依賴于Xo記為:x-*yo
例:KHTM
XM-DZ
(XH,KH)-CJ
KH-*(KM,XM)
2.完全函數(shù)依賴:
若x-y,且對(duì)于x的所有真子集x',都有x,y,則稱x完全決定y,或y完全函數(shù)
依賴于x。記為:x—Jy。
例1:(XH,KH)-CJ
但XHACJ
/
KH-CJ
故(XH,KH)—^CJ
例2:KH-*KM
則
結(jié)論:若x-y,且x只包括一個(gè)屬性,則x-^y。
3.部分函數(shù)依賴:
若x-y,且存在x的一個(gè)真子集X,,滿足X,一y,則稱x部分決定y,或y部分函數(shù)
依賴于x。記為:x—匕fy。
例I:(KH.KM)-XM
但KM-XM
貝U(KH,KM)—
例2:(XH,KH)-*DZ
但KII-*DZ
則(XH,KH)—^DZ
4.傳遞函數(shù)依賴:
若x-y,y~*z,但yT?x,則X—L->z
例:KM-XM,XM-DZ,但XM17KM
二、平凡函數(shù)依賴與非平凡函數(shù)依賴
設(shè)x-y,假如y是x的子集,則該依賴是平凡的。如:
Sno,snamc-*sno
假如y中最少有一個(gè)屬性不在x中,則該依賴是非平凡的。如:
Sno,sname-*sname,sdept
假如y中沒有一個(gè)屬性在x中,則該依賴為完全非平凡的。
三、函數(shù)依賴的推理規(guī)則
設(shè)有關(guān)系R,x、y、z為R的一個(gè)屬性集,則有:
①自反律:若yqx,則x-*義
②增廣律:若x-y,則xz-yz。
③傳遞律:若xfy,yfz,則xfz。
注意傳遞律與傳遞函數(shù)依賴的區(qū)分。
④合并律:若x-y,x~z,則x—yz。
⑤分解律:若xfyz,則xfy,xfz。
關(guān)系模式的規(guī)范化
一、問題提出
R表
XHKHKMXMDZCJ
961C1OS高明DI70
962C2DBS高飛D272
962C4AI高飛D280
962C1OS高明DI75
963C1OS高明DI90
答:存在問題
①數(shù)據(jù)冗余大;
②修改麻煩;
③插入異常:應(yīng)當(dāng)插入到DR中的數(shù)據(jù)插不進(jìn)夫.
如:新開課程沒有學(xué)生選修時(shí),新開課程的課程號(hào)、課程名插不進(jìn)去。
④刪除異常:不應(yīng)當(dāng)刪除的數(shù)據(jù)被刪掉。
如選修某門課的學(xué)生畢業(yè)了,在刪除學(xué)生信息的同時(shí),把課程信息也刪除掉。
結(jié)論:一個(gè)好的關(guān)系模式應(yīng)滿足;
①冗余應(yīng)盡也許少:
②應(yīng)盡也許防止插入、刪除異常;
③消去關(guān)系中不宜的屬性依賴關(guān)系。
二、范式
①什么叫范式?
指一個(gè)關(guān)系的非主屬性函數(shù)依賴于主碼的程度。
②什么叫關(guān)系規(guī)范化?
指一個(gè)關(guān)系從低級(jí)范式向高級(jí)范式的轉(zhuǎn)換過程。
INFn2NFn3NFnBCNFn4NFn5NF
③應(yīng)用:關(guān)系規(guī)范化埋論應(yīng)用在邏輯結(jié)構(gòu)設(shè)計(jì)階段。
三、關(guān)系模式的規(guī)范化
1.第一范式(1NF)
①定義:若關(guān)系R的所有屬性不能再分,則RG1NF
②存在問題
③原因:存在非主屬性對(duì)主碼的部分依賴。
(XH,K〃)一^XM
(XH.KH)-^DZ
④處理措施:消除非主屬性對(duì)主碼的部分依賴,
將關(guān)系R一分為二,將滿足完全依賴的屬性集組成一個(gè)關(guān)系;將滿足部分依賴的屬性
集組成另一個(gè)關(guān)系;
R1表R2表
XHKHCJKHKMXMDZ
961C170C1OS高明D1
962C272C2DBS高飛D2
962C48()C4AI高飛D2
962C175
963CI90
R1主碼:(XH,KH)
R2由碼:KH
2.第二范式(2NF)
①定義:若關(guān)系RE1NF,且它的每個(gè)非主屬性都完全依賴于主碼,則稱R£2NF。
②存在問題:
?冗余大:R1必要冗余,R2冗余能夠修改。
?修改麻煩
?插入異常:如新來的教師沒有上課,則該教師的信息就沒措施插入R2表中。
?刪除異常:若某位教師只授一門課,當(dāng)該門課不開時(shí),該教師的信息亦被刪除。
③原因:存在非主屬性對(duì)主碼的傳遞依賴。
KH->XM,XM->DZ,但XM▼KH
???KH-^DZ
[傳遞依賴必須有兩個(gè)非主屬性]
④處理措施:將R2一分為二
R21表R22表
KHKMXMXMDZ
C1OS高明高明D1
C2DBS高飛高飛D2
C4AI高飛
R21主碼:KH
R22士碼:XM
3.第三范式(3NF)
①定義:若關(guān)系R£2NF,且它的每個(gè)非主屬性都不傳遞依賴于主碼,則稱R£3NF。
②規(guī)范化過程
非規(guī)范關(guān)系
I使每個(gè)屬性都不能再分
1NF
I消去非主屬性對(duì)主碼的部分依賴
2NF
I消去非主屬性對(duì)主碼的傳遞依賴
3NF
4.結(jié)論
①若R£1NF,且主碼只含一個(gè)屬性,則R一定為2NF。
②若R£2NF,且只有0~1個(gè)非主屬性,則R一定為3NF。
③3NF一般控制了數(shù)據(jù)冗余,一般防止了操作異常。
范式并非越高越好,適可而止。
數(shù)據(jù)庫設(shè)計(jì)
一、數(shù)據(jù)庫設(shè)計(jì)的步驟
①需求分析:了解分析用戶的需要、要求。
②概念結(jié)構(gòu)設(shè)計(jì):依照需求分析的成果畫概念模型(即E-R圖)。
③邏輯結(jié)構(gòu)設(shè)計(jì):將E-R圖轉(zhuǎn)換為某一個(gè)數(shù)據(jù)模型,并優(yōu)化。
④物理結(jié)構(gòu)設(shè)計(jì)
⑤數(shù)據(jù)庫實(shí)行
(6)數(shù)據(jù)庫運(yùn)行與恢復(fù)
概念結(jié)構(gòu)設(shè)計(jì)
一、局部E-R圖設(shè)計(jì)
1.確定局部范圍
?般把系統(tǒng)包括的各個(gè)部門或各個(gè)重要功效作為局部。
2.確定實(shí)體與屬性
①屬性是不能再分的數(shù)據(jù)項(xiàng);
②聯(lián)系只發(fā)生在兩實(shí)體之間;
③標(biāo)準(zhǔn)上,能夠作為屬性,就不要作為實(shí)體。
二、合并成總體E-R圖
1.消除各局部E-R圖的沖突問題。
2.按公共實(shí)體名合尹,生成初步E-R圖。
3.消除冗余的屬性和冗余的聯(lián)系,生成總體E-R圖。
邏輯結(jié)構(gòu)設(shè)計(jì)
一、聯(lián)系的屬性和主碼
(1)聯(lián)系的屬性:必須包括有關(guān)聯(lián)的各實(shí)體型的主碼。
(2)聯(lián)系的主碼
1:1聯(lián)系:能夠是有關(guān)聯(lián)的任一實(shí)體型的主碼。
1:n聯(lián)系:必須是n方實(shí)體型的主碼。
m:n聯(lián)系:必須是有關(guān)聯(lián)的各實(shí)體型的主碼之和。
二、E-R圖向關(guān)系模型的轉(zhuǎn)換
(1)把每個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。
(2)1:I聯(lián)系:能夠消化到有關(guān)聯(lián)的任一實(shí)體型對(duì)應(yīng)的關(guān)系模式中。
班長(zhǎng)(迎XM,NL,BH)
班級(jí)(四,RS)
(3)1:n聯(lián)系:能夠消化到n方實(shí)體名對(duì)應(yīng)的關(guān)系模式中。
例:一個(gè)班級(jí)有多名學(xué)生,每名學(xué)生只能屬于一個(gè)班級(jí)。每一個(gè)班級(jí)有一名班長(zhǎng),他是
學(xué)生中的一員。
rFr/.T?
學(xué)生(刈,XM,NL,BH)
班級(jí)(BH,RS,平)
?班長(zhǎng)的學(xué)號(hào)
(4)m:n聯(lián)系:必須轉(zhuǎn)換為一個(gè)關(guān)系模式,并且不能消化。
學(xué)生(sno,sname,ssex,sage,sdcpt)
課程(eno,cname,credit)
選修(sno,eno,grade)
(5)多元聯(lián)系:不能消化
物理結(jié)構(gòu)設(shè)計(jì)與數(shù)據(jù)庫實(shí)行
1.物理結(jié)構(gòu)設(shè)計(jì)
在邏輯設(shè)計(jì)的基礎(chǔ)上,為每個(gè)關(guān)系模式選擇適宜的存儲(chǔ)結(jié)構(gòu)與存儲(chǔ)方式。
選擇存儲(chǔ)結(jié)構(gòu):即決定每個(gè)表的統(tǒng)計(jì)次序。
選擇存取方式:即決定為哪些屬性建立非聚集索引,以便加快查找速度。一般把常常查
詢的屬性名指定為非聚集索引。
2.數(shù)據(jù)庫實(shí)行
重要工作:
定義數(shù)據(jù)庫結(jié)構(gòu);
組織數(shù)據(jù)入庫;
編寫應(yīng)用程序;
數(shù)據(jù)庫試運(yùn)行;
SQLServer系統(tǒng)入門
一、運(yùn)行環(huán)境
最低處理器速度:600MHZ(推薦1GB或者更快)
最小內(nèi)存:512MB(推薦1GB或者更大)
可用硬盤空間:1.6GB
二、SQLServer的重要組件
1.服務(wù):用于開啟SQLServer服務(wù)器
單擊“開始”菜單,選擇“控制面板”I“管理工具”|“服務(wù)”選項(xiàng),將“SQLServer
(MSSQLSERVER)”選項(xiàng)置為“自動(dòng)”,即隨操作系統(tǒng)的開啟而自動(dòng)開啟。安裝時(shí)默以為
“自動(dòng)”。
2.配備管理器(ConfigurationManager):用于開啟SQLServer服務(wù)器
注意:“服務(wù)”窗口中顯示的是操作系統(tǒng)中所有的服務(wù)程序,而“配備管理器”窗口中
顯示的僅僅是與SQLServer有關(guān)的服務(wù)程序。
3.SQLServerManagementStudio(SSMS,管理工作室)
組合了對(duì)象資源管理器、查詢編輯器的功效。對(duì)象姿源管理器用于管理數(shù)據(jù)庫服務(wù)器中
的所有數(shù)據(jù)庫對(duì)象:
4.SSMS查詢編輯器:
重要用于輸入、執(zhí)行和保存Transact-SQL命令
創(chuàng)建和使用數(shù)據(jù)庫
一、數(shù)據(jù)庫文獻(xiàn)
1.一個(gè)數(shù)據(jù)庫最少有一個(gè)重要數(shù)據(jù)文獻(xiàn)和一個(gè)事務(wù)日志文獻(xiàn)。假如數(shù)據(jù)庫很大,能夠
使用一個(gè)重要數(shù)據(jù)文獻(xiàn)、多個(gè)次要數(shù)據(jù)文獻(xiàn)和多個(gè)事務(wù)日志文獻(xiàn)。
主數(shù)據(jù)文獻(xiàn)(.mdf)?
m-T--A-/.UMtf.XE3?-*-XX-I_1XZ._I.Zx.
J
次數(shù)據(jù)文獻(xiàn)(.ndf)
事務(wù)日志文獻(xiàn)(.kl「):用來統(tǒng)計(jì)對(duì)數(shù)據(jù)庫對(duì)象的所有更新操作。
2.系統(tǒng)數(shù)據(jù)庫
Master數(shù)據(jù)庫、Model數(shù)據(jù)庫
二、創(chuàng)建數(shù)據(jù)庫
1.打開數(shù)據(jù)庫:
Use數(shù)據(jù)庫名
2.刪除數(shù)據(jù)庫:
Dropdatabase數(shù)據(jù)庫名
三、修改數(shù)據(jù)庫
1.分離和附加數(shù)據(jù)庫
2.備份和還原數(shù)據(jù)庫
3.數(shù)據(jù)的導(dǎo)入和導(dǎo)出?
數(shù)據(jù)庫的備份和恢復(fù)
1.將數(shù)據(jù)庫備份到一個(gè)備份文獻(xiàn)中:
Backupdatabase數(shù)據(jù)庫名todisk=,途徑t文獻(xiàn)名
2.將備份文獻(xiàn)恢復(fù)到數(shù)據(jù)庫中:
Restoredatabase數(shù)據(jù)庫名fromdisk:'途徑'文獻(xiàn)名,
創(chuàng)建和使用表
數(shù)據(jù)類型
1.字符型
char(n):定長(zhǎng)字符型,n表示字符數(shù),取值為1?8000。若缺省n,則默以為1。
varchar(n):變長(zhǎng)字符型
Text:能夠存儲(chǔ)任意長(zhǎng)的字符串
闡明:標(biāo)準(zhǔn)字符型:每個(gè)英文字母、數(shù)字算1個(gè)字符,每個(gè)中文算2個(gè)字符,每個(gè)字符
占1個(gè)字節(jié)。
2.統(tǒng)一碼字符型
每個(gè)英文字母、數(shù)字、中文算1個(gè)字符,每個(gè)字符占2個(gè)字節(jié)。
nchar(n):n表示字符數(shù),取值為1~4000。
nvarchar(n)
ntext:能夠存儲(chǔ)任意長(zhǎng)的統(tǒng)一碼字符串。
例:設(shè)某表的結(jié)構(gòu)如下:
nochar(6),namenchar(6)
則no能夠賦予3個(gè)中文,name能夠賦予6個(gè)中文
3.整型
取值范圍所占字節(jié)數(shù)
Bigint8
Ini4
Smallint-32768?+327672
Tinyint0-2551
bit0,1即邏輯型
4.實(shí)型
①精準(zhǔn)數(shù)值型
Decimal(p.s)
Nnmeric(p,s)
精度P:表示所有數(shù)字的位數(shù)(不計(jì)小數(shù)點(diǎn)和正負(fù)號(hào))
S:表示小數(shù)位數(shù),若缺省S,則默以為。
P-S:表示整數(shù)位數(shù)
②近似數(shù)值型
Real精準(zhǔn)到7位有效數(shù)字
Float精準(zhǔn)到15位有效數(shù)字
5.貸幣型
Money:占8個(gè)字節(jié),保存4位小數(shù)
Smallmoney:占4個(gè)字節(jié),保存4位小數(shù)
字符串常量:由單引號(hào)括住的字符序列
貸幣型常量:能夠是一個(gè)實(shí)型常量
6.日期時(shí)間型
Datetime>Smalldatetiinc
①若省略日期部分,則默以為:‘1900-1-r
若省略時(shí)間部分,則默以為:’00:00:00'
②日期格式:'yyyy-mm-dd'
時(shí)間格式:‘hh:n】m:ss,
使用對(duì)象資源管理器創(chuàng)建和管理表
一、創(chuàng)建表
1.在一個(gè)表中只能定義一個(gè)標(biāo)識(shí)字段。
2.只有整型和精準(zhǔn)數(shù)值型(decimal、numeric)字段才能指定為標(biāo)識(shí)字段。
3.把某個(gè)字段指定為公式字段。
二、設(shè)置約束
1.主鍵約束:
每個(gè)表中只能有一列或一個(gè)組合被指定為主鍵,主健中的各個(gè)列不能為空值。
2.外鍵約束:
創(chuàng)建外鍵約束,就是定義兩個(gè)表的永久關(guān)聯(lián),這兩個(gè)表分別稱為主鍵表、外鍵表。外鍵
表中外鍵的值只能是主鍵表中主鍵的有效值或空值。
3.唯一性約束:
主鍵約束與唯一性約束的區(qū)分是:
(I)在一個(gè)表中只能定義一個(gè)主鍵約束,但可定義多個(gè)唯一性約束;
(2)指定為主鍵約束的列不能取空值,但指定為唯一性約束的列允許取空值.
4.唯一性約束:
用于限制輸入到一列或多列的值的范圍,確保數(shù)據(jù)庫的數(shù)據(jù)完整性。
5.默認(rèn)值約束:
T-SQL
一、SQL語言的特點(diǎn)
①SQL語言集數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)控制的功效于?體。
動(dòng)詞
數(shù)據(jù)定義Create>drop
數(shù)據(jù)查詢select
數(shù)據(jù)操縱Insert、deletesupdate
數(shù)據(jù)控制Grant、revoke
②所有的DBMS都支持SQL語言。
T-SQL基礎(chǔ)
一、創(chuàng)建和使用數(shù)據(jù)庫
1.創(chuàng)建數(shù)據(jù)庫
createdatabase數(shù)據(jù)庫名
2.使用數(shù)據(jù)庫
Use數(shù)據(jù)庫名
3.刪除數(shù)據(jù)庫
dropdatabase數(shù)據(jù)庫名
二、定義表
1.創(chuàng)建表
createtable表名(屬性名類型,…,屬性名類型)
①指定標(biāo)識(shí)字段:identity[標(biāo)識(shí)種子,標(biāo)識(shí)增最)
②指定公式字段:屬性名as體現(xiàn)式
例:createtablestudent
(nointidentity(l,l),
namechar(6),
chismallint,
matsmallint.
scoreaschi+mat)
2.刪除表
droptable表名,…,表名
三、select語句
select*/體現(xiàn)式表
[into新表]
from表名,…,表名
[where條件]
[groupby屬性名]
[having條件]
[orderby屬性名|[Asc/Descl
1.Select子句
①*代表所有屬性名
②若一個(gè)屬性名來自多個(gè)表,則屬性名前須冠以表名,格式為:表名.屬性名
③設(shè)置體現(xiàn)式的別名:
體現(xiàn)式As別名
?限制杳詢成果的統(tǒng)計(jì)行數(shù):
all返回所有統(tǒng)計(jì)
topn返回前面n號(hào)統(tǒng)計(jì)
distinct表示取消重復(fù)行
闡明:topn只能放在核心字select的背面;
all、distinct只能放在核心字select或聚合函數(shù)的背面。
2.Where子句
①in的格式:屬性名in1常量,…,常量)
②like的格式:屬性名like通配字符串
通配符有%表示0個(gè)或多個(gè)字符
-表示1個(gè)字符
③在Where子句中指定連接:
Where表名1.屬性名=表名2.屬性名
3.Orderby子句
orderby屬性名1[Asc/Desc],屬性名2[Asc/Desc]
4.聚合函數(shù)
①sum(屬性名):縱向求數(shù)值型屬性之和。
②avg(屬性名)
③count(*)返回表的統(tǒng)計(jì)行數(shù)(含重復(fù)行)。
count(屬性名)返回指定列中取非NULL值的單元格數(shù)目。
count(distinct屬性名)返回指定列中取非NULL值、非重復(fù)的單元格數(shù)目。
④max(屬性名)
⑤min(屬性名)
5.Groupby子句
使用Groupby子句時(shí),Select子句只能使用分組項(xiàng)字段和聚合函數(shù)
例:以性別為分組項(xiàng),求每一組的平均年齡。
Selectssex,avg(sage)as平均年齡
Fromstudent
Groupbyssex
6.Having子句
①Having子句只能跟在Groupby子句之后,旦只能使用聚合函數(shù)和分組項(xiàng)字段。
@where子句放在Groupby子句之前,甚至能夠沒有Groupby子句:旦不能包括聚合
函數(shù)。
例:以系別為分組項(xiàng),查詢學(xué)生平均年齡不小于19歲的系的系名,平均年齡。
Selectsdept,avg(sage)as平均年齡
Fromstudent
Groupbysdcpt
Havingavg(sdept)>19
7.into子句
功效:將查詢成果保存到新的基表中。
一、查詢的分類
J單表查詢
〔連接查詢
嵌套杳詢
1.連接查詢:在where子句中指定連接
where表名I.屬性名=表名2.屬性名
2.嵌套查詢
①嵌套查詢的特點(diǎn)
?每級(jí)查詢的from子句一般只包括一個(gè)表名。
?一個(gè)嵌套查詢總能夠分解為若干個(gè)單表查詢,總能夠改寫成連接查詢。
?若查詢成果顯示的屬性名來自一個(gè)表,才能夠?qū)懗汕短撞樵儭?/p>
?子查詢不能使用orderby子句,orderby只能用于最頂層的查詢。
②在where子句中指定子查詢
where屬性名[not]in(子查詢):子查詢返回一列多行。
where屬性名=(子查詢):子查詢返回一列?行。
where[not]exists(子查詢):子查詢返回多列多行。
五、數(shù)據(jù)操縱
1.insert語句
(1)每次插入一條統(tǒng)計(jì)
insertinto表名[(屬性名表)]values(體現(xiàn)式表)
(2)插入子查詢的成果
insertinto表名[(屬性名表)]
子查詢
例:insertintostudent
select*fromstudent1
2.update語句
update表名set屬性名=值,…,屬性名=值[where條件]
缺省where子句,默認(rèn)為更新所有統(tǒng)計(jì)。
3.delete語句
deletefrom表名[where條件]
T-SQL程序設(shè)計(jì)基礎(chǔ)
一、常量:
'字符型:由單引號(hào)括住,例:‘chin"
Y
整型
實(shí)型
日期型:由單引號(hào)括住的具備日期或時(shí)間意義的序列,格式為:
'yyyy-mm-dd','hh:mm:ss'
二、變量:
Y局部變量:由用戶定義和賦值,以@開頭。
V—
全局變量:由系統(tǒng)定義和賦值,以@@開頭。
1.申明局部變量
Declare變量名類型
例:declare@aint,@bchar(5)
注:不要把局部變量申明為text、ntext^image
2.給局部變量賦值
①使用set語句:
Set變量名=體現(xiàn)式
②使用select語句
Select變量名=體現(xiàn)式、....,變量名=體現(xiàn)式
Ifrom表名]
若體現(xiàn)式中含有屬性名,則必須使用from子句。
例:declare@achar(5),@bchar(6)
Select@a=9500「,@b='王名’
或:select@a=sno,@b=sname
Fromstudent
3.輸出體現(xiàn)式的值:
①使用print語句
Print體現(xiàn)式
②使用seleci語句
Select體現(xiàn)式,...>體現(xiàn)式
[from表名]
例:A)select@a,@b
B)selectsno,snamc
Fromstudent
C)selectsnoas學(xué)號(hào),snameas姓名
Fromstudent
等價(jià)于:select學(xué)號(hào)=sno,姓名二sname
Fromstudent
4.局部變量的作用域:
只能在申明它的批處理中使用。
例:Usestud
Go
Declare@aint
Set@a=5
Print@a
Go
Declare@achar(5)
Set@a='張三'
Print@a
三、運(yùn)算符:
算術(shù)運(yùn)算符(*、/、%—+、-)
I
關(guān)系運(yùn)算符(>、>=、<、<=、=、<>)
I
邏輯運(yùn)算符(notfand-*or)
批處理
1.什么叫批處理?
一個(gè)腳本由一個(gè)或多個(gè)批處理組成,批處理以GO作為結(jié)束標(biāo)志。
2.批處理是腳本的編譯單位,當(dāng)一個(gè)批處理中的某個(gè)語句出現(xiàn)編譯錯(cuò)誤,則批處理中的任
何語句均無法執(zhí)行。
3.當(dāng)一個(gè)批處理中的某個(gè)語句出現(xiàn)運(yùn)行錯(cuò)誤,則批處理中目前語句和它之后的語句將無法
執(zhí)行。
流程控制語句
一、begin…end語句
Begin
語句1
語句n
End
二、if-else語句
1.格式:if邏輯體現(xiàn)式
語句1
[else
語句2J
2.當(dāng)邏輯體現(xiàn)式包括子查詢時(shí),子查詢必須用括號(hào)括住。
屬性名in(子查詢)子查詢返回一列多行
屬性名=(子查詢)子查詢返回一列一行
Exists(子查詢)子查詢返回多列多行
.三、case體現(xiàn)式
Case
When邏輯體現(xiàn)式1then成果1
When邏輯體現(xiàn)式2then成果2
(else成果n]
End
闡明:case體現(xiàn)式不是語句,不能單獨(dú)執(zhí)行。
例:usestud
Select姓名二snamc,系別二
Case
Whensdept='CS'then'計(jì)算機(jī)科學(xué)系,
Whensdept='IS'then'信息系統(tǒng)系,
Whensdcpt='MA'then'數(shù)學(xué)系,
End
四、while語句
1.格式:
While邏輯體現(xiàn)式
Begin
語句組
End
2.專用于循環(huán)體的語句:
Break強(qiáng)制退出while語句,執(zhí)行其后續(xù)語句。
Continue返回while語句的入口。
Break、Continue必須放在循環(huán)體內(nèi),并常與if-else語句結(jié)合使用。
二、其他語句
1.Return語句
格式:Return(整數(shù)值)
功效:用于存儲(chǔ)過程或批處理中,功效是退出所在的存儲(chǔ)過程或批處理。
闡明:當(dāng)用于存儲(chǔ)過程時(shí),若沒有為Return指定整數(shù)值,則默以為0。
2.存儲(chǔ)過程
①創(chuàng)建存儲(chǔ)過程
Createprocedure存儲(chǔ)過程名[@形參名類型]
AsSQL語句序列
②執(zhí)行存儲(chǔ)過程
Exec存儲(chǔ)過程名[常量|@變量名]:
③刪除存儲(chǔ)過程
Dropprocedure存儲(chǔ)過程名
④闡明:存儲(chǔ)過程不返回值,或者只能返回整數(shù)值;而函數(shù)可返回任意類型的值。
3.Waitfor語句
函數(shù)
1.創(chuàng)建函數(shù)
createfunction函數(shù)名(@形參名類型)returns類型
as
begin
函數(shù)體
End
注:①函數(shù)體最后一條語句必須是retum語句。
②兩類函數(shù):標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)
2.執(zhí)行函數(shù)
Exec@變量名1=函數(shù)名常量|@變量名
Print函數(shù)名(常圜@變量名)
3.刪除函數(shù)
Dropfunction函數(shù)名
附加練習(xí)題9
一、定義表:
1.SQLServer中建立一個(gè)數(shù)據(jù)庫stu。
2.使用企業(yè)管理器中創(chuàng)建如下三個(gè)表。
student表
Snosnamessexsagesdept
95001李勇男20CS
95002劉晨女19IS
95003土名女18MA
95004張立男18CS
Course表
enocnamccredit
1數(shù)據(jù)庫原理4
2操作系統(tǒng)3
3Java程序設(shè)計(jì)3
4匯編語言2
Sc表
SnoCnograde
95001185
95001288
95001382
95002190
95002380
二、查詢表:
1.查詢?nèi)w學(xué)生的姓名及出生年份。
2.查詢年齡小于19歲的男學(xué)生的學(xué)號(hào),姓名。
3.查詢選修了課程的學(xué)生人數(shù)。
[提示:selectcount(distinctsno)fromscj
4.查詢所有選修過課的學(xué)生的學(xué)號(hào)、姓名。
5.查詢數(shù)學(xué)系(MA)、計(jì)算機(jī)科學(xué)系(CS)的學(xué)生的姓名和性別。
6.查詢年齡最大的2名學(xué)生情況
7.查詢姓“劉”的學(xué)生情況。
8.以性別為分類項(xiàng),查詢每一類的平均年齡。
9.查詢選修了課程名為“操作系統(tǒng)”的學(xué)生的學(xué)號(hào)、姓名。
10.查詢年齡低于平均年蛤的所有學(xué)生的姓名、系別
三、操縱表:
1.在企業(yè)管理器中創(chuàng)建一個(gè)新表student1:
Snosnamessexsagesdept
95005王虹女19CS
95006萬亮男20MA
2.將student1表插入到student表的背面。
[提示:insertintostudentselect*fromstudent1]
3.將(95020,陳冬,男,18,IS)插入到student表中c
4.刪除siudentl表中的所有統(tǒng)計(jì),使之成為空表。
5.把student表中所有男生統(tǒng)計(jì)復(fù)制到空表siudenll中。
6.把student表中所有女生統(tǒng)計(jì)復(fù)制到新表student2中。
7.將所有學(xué)生的年齡增加1歲。
8.將計(jì)算機(jī)科學(xué)系全體學(xué)生的成績(jī)置()。
[提示:updatescsetgrade=0
wheresnoin(selectsnofromstudentwheresdept=,CS,)
9.刪除學(xué)號(hào)為95020的學(xué)生統(tǒng)計(jì)。
10.刪除計(jì)算機(jī)科學(xué)系所有學(xué)生的選課統(tǒng)計(jì)。
T-SQL高級(jí)應(yīng)用
一、查詢的分類
[單表查詢
〔連接查詢
嵌套查詢
一、連接查詢:在where子句中指定連接
1.內(nèi)連接:where表名1.屬性名=表名2.屬性名
2.自身連接:給一個(gè)表取兩個(gè)別名,where子句的格式為:
where別名1.屬性名二別名2.屬性名
3.左外連接:where表名I.屬性名*=表名2.屬性名
意義:查詢成果包括了表1的所有統(tǒng)計(jì)和表2滿足條件的統(tǒng)計(jì)。
4.右外連接:where表名1.屬性名=*表名2.屬性名
意義:杳詢成果包括了表2的所有統(tǒng)計(jì)和表1滿足條件的統(tǒng)計(jì)。
三、連接查詢:在from子句中指定連接
1.內(nèi)連接:from表名Iinnerjoin表名2on條件
例:select*
fromstudent,sc
wherestudcnt.sno=sc.sno
等價(jià)于select*
fromstudentinnerjoinsc
onstudcnt.sno=sc.sno
2.左外連接:from表名1lefloulerjoin表名2on條件
3.右外連接:from表名1rightouterjoin表名2on條件
4.完全外連接:from表名1full[outer]join表名2on條件
5.交叉連接
四、嵌套查詢
事務(wù)處理
1.什么叫事務(wù)?
事務(wù)是用戶定義的一組操作序列。
①事務(wù)是并發(fā)控制囪基本單位。
②一個(gè)事務(wù)包括的話操作要么都執(zhí)行,要么都不執(zhí)行。
2.事務(wù)的屬性
原子性:指事務(wù)中包括的諸操作要么都執(zhí)行,要么都不執(zhí)行。
一致性:事務(wù)必須使數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。
隔離性:一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。
持久性
3.顯式定義事務(wù)
begintransaction[事務(wù)名]
commit/rollback[transaction事務(wù)名]
當(dāng)未顯式指定事務(wù),則一個(gè)SQL語句就是一個(gè)事務(wù)。
4.在事務(wù)內(nèi)設(shè)置保存點(diǎn)
begintransaction
savetransaction保存點(diǎn)名
rollbacktransaction保存點(diǎn)名
功效:將保存點(diǎn)到rollback子句之間的SQL操作回滾拽。
數(shù)據(jù)的鎖定
一、并發(fā)操作與數(shù)據(jù)不一致性
1.數(shù)據(jù)不一致性包括三類
丟失修改:指事務(wù)I與事務(wù)2從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并修改,事務(wù)2的提交成果破壞
事務(wù)1提交的成果,導(dǎo)致事務(wù)1的修改被丟失。
不可重復(fù)讀:指事務(wù)1讀取數(shù)據(jù)后,事務(wù)2執(zhí)行更新操作,使事務(wù)1無法再現(xiàn)前一次讀
取成果。
讀臟數(shù)據(jù):指事務(wù)1修改某一數(shù)據(jù)后,事務(wù)2讀取該數(shù)據(jù),事務(wù)1因?yàn)槟撤N原因被撤消,
這時(shí)數(shù)據(jù)又恢復(fù)到原值,事務(wù)2讀到的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)不一致,稱為“臟”數(shù)據(jù)。
2.產(chǎn)生數(shù)據(jù)不一致性的原因
并發(fā)操作破壞了事務(wù)的隔離性。
二、并發(fā)控制的目標(biāo)、措施
I.目標(biāo):確保DB中的數(shù)據(jù)一致性。
2.并發(fā)事務(wù)正確性的標(biāo)準(zhǔn)
幾個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其成果與任何一個(gè)串行執(zhí)行的成果相同。
3.并發(fā)控制的措施
DBMS一般采取“封鎖”技術(shù),確保并發(fā)操作的可呂行化。
二、封鎖(Locking)
1.什么叫封鎖?
SQLServer自動(dòng)強(qiáng)制封鎖,并且會(huì)將封鎖粒度控制在適宜的級(jí)別,用戶無須考慮封鎖問題。
2.封鎖類型
f排它鎖(X鎖):事務(wù)T對(duì)數(shù)據(jù)A加X鎖,其他事務(wù)不能再對(duì)A加鎖,即其他事務(wù)不能
I讀取和修改Ao
共享鎖(S鎖):事務(wù)T對(duì)數(shù)據(jù)A加S鎖,其他事務(wù)只能再對(duì)A加S鎖,即其他事務(wù)只
能讀A,不能修改A。
3.封鎖粒度
封鎖對(duì)象能夠是屬性列、元組、關(guān)系、整個(gè)數(shù)據(jù)庫.封鎖對(duì)象的大小稱為封鎖粒度。
封鎖粒度越小,并發(fā)度越高,但并發(fā)控制的開銷越大。
4.封鎖協(xié)議
①事務(wù)T在修改數(shù)據(jù)A之前,必須對(duì)其加X鎖,直到事務(wù)結(jié)束才釋放。
②事務(wù)T在讀取數(shù)據(jù)A之前,必須對(duì)其加S鎖,直到事務(wù)結(jié)束才釋放。
遵照封鎖協(xié)議,能夠處理三種數(shù)據(jù)不一致性問題:
去失修改
不可重復(fù)讀
讀“臟”數(shù)據(jù)
四、死鎖和活鎖
封鎖技術(shù)能夠處理并發(fā)操作的不?致性問題,但也帶來新的問題,即死鎖和活鎖。
1.死鎖:
①定義:兩個(gè)事務(wù)已經(jīng)各自鎖定一個(gè)數(shù)據(jù),不過乂要訪問被對(duì)方鎖定的數(shù)據(jù),導(dǎo)致了
循環(huán)等候,稱為死鎖。
②防止死鎖的措施:
次序封鎖法:若要求封鎖次序?yàn)锳,B,則Tl,T2只能先封鎖A,再封鎖B。
2.活鎖:
①定義:若多個(gè)事務(wù)祈求封鎖同一個(gè)數(shù)據(jù)時(shí),其中的某個(gè)事務(wù)總處在等候狀態(tài),則稱
為活鎖。
②防止活鎖的措施:先來先服務(wù)
使用游標(biāo)
一、游標(biāo)的概念
1.每個(gè)表都有一個(gè)游標(biāo),它能夠指向表的任意一條統(tǒng)計(jì)。
2.移動(dòng)游標(biāo)的措施:
①在觸發(fā)器或存儲(chǔ)過程中,使用SQL語句定義和使用游標(biāo)。
②在前臺(tái)應(yīng)用程序中,使用主語言實(shí)現(xiàn)對(duì)游標(biāo)的移動(dòng)。
二、Transacl-SQL游標(biāo)的使用:
I.申明游標(biāo)
Declare游標(biāo)名cursor
[forward_only/scroll]fglobal/local]
[read_only]
forselect語句
{forward_only(只進(jìn)游標(biāo)):只能進(jìn)行nexl操作,缺省為forward_oMy。
scroll(滾動(dòng)游標(biāo))
[global/local]:缺省為:global
2.打開游標(biāo)
open游標(biāo)名
打開游標(biāo)時(shí),游標(biāo)指向查詢成果集的第一條統(tǒng)計(jì)之前。
3.提取游標(biāo)
fetch[next/prior/first/last]from游標(biāo)名
[into局部變量名表]
①缺省into子句:移動(dòng)游標(biāo),并顯示目前統(tǒng)計(jì)的內(nèi)容。
②含into子句:移動(dòng)游標(biāo),并將目前統(tǒng)計(jì)各屬性值依次賦給局部變量。
③缺省游標(biāo)移動(dòng)方式,則為next。
4.關(guān)閉游標(biāo)
close游標(biāo)名
5.釋放游標(biāo)
deciaredeciare游標(biāo)名
例:-打印student表中全體男生的平均年齡。(不得使用聚合函數(shù)。)
setnocounton
declare@xint,@sint.@ndecimal(4,l)
select@n=0,@s=0
declarepmcursor
scroll
forselectsagefromstudentwheressex='男'
openpin
fetchnextfrompminto@x
while@@FETCH_STATUS=O
begin
select@n=@n+l,@s=@s+@x
fetchnextfrompminto@x
end
prin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026國冶西南有限公司(中國冶金地質(zhì)總局昆明地質(zhì)勘查院)高校應(yīng)屆畢業(yè)生招聘19人筆試參考題庫附帶答案詳解
- 2025湖北荊門屈家?guī)X城鄉(xiāng)建設(shè)投資有限公司及子公司招聘12人筆試參考題庫附帶答案詳解
- 2025江西撫州國資私募基金管理有限公司職業(yè)經(jīng)理人招聘3人筆試參考題庫附帶答案詳解
- 委托個(gè)人造價(jià)合同范本
- 廣告承包活動(dòng)合同范本
- 工程沙石采購合同范本
- 戰(zhàn)略規(guī)劃咨詢合同范本
- 2025國機(jī)集團(tuán)總部及京內(nèi)企業(yè)管培生招聘筆試參考題庫附帶答案詳解
- 弱電方案設(shè)計(jì)合同范本
- 弱電總包框架合同范本
- 2025年海南三亞市吉陽區(qū)教育系統(tǒng)公開招聘編制教師122人(第1號(hào))筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2026北京大學(xué)餐飲中心招聘勞動(dòng)合同制人員1人筆試參考題庫及答案解析
- 2025年安吉縣輔警招聘考試真題匯編附答案
- 貨運(yùn)代理公司操作總監(jiān)年度工作匯報(bào)
- 世說新語課件
- 物業(yè)管理?xiàng)l例實(shí)施細(xì)則全文
- 電化學(xué)儲(chǔ)能技術(shù)發(fā)展與多元應(yīng)用
- 2026年安全員之C證(專職安全員)考試題庫500道及完整答案【奪冠系列】
- 掩體構(gòu)筑與偽裝課件
- 2026年包頭鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫帶答案詳解
- GB/T 23446-2025噴涂聚脲防水涂料
評(píng)論
0/150
提交評(píng)論