




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目五查詢數(shù)據(jù)庫(kù)12任務(wù)1基本查詢?nèi)蝿?wù)2條件查詢?nèi)蝿?wù)3查詢結(jié)果排序任務(wù)4分組查詢?nèi)蝿?wù)5連接查詢?nèi)蝿?wù)6集合查詢?nèi)蝿?wù)7子查詢基本查詢?nèi)蝿?wù)131.?能根據(jù)任務(wù)要求,使用SELECT語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)查詢。2.?能使用關(guān)鍵字DISTINCT、AS和TOP子句進(jìn)行數(shù)據(jù)庫(kù)查詢。4本任務(wù)要求根據(jù)導(dǎo)入數(shù)據(jù)庫(kù)ssts中的學(xué)生成績(jī)表stuScore.xls,完成以下查詢。1.查詢stuScore表中的所有記錄。2.查詢總成績(jī)排名前10的學(xué)生,其中,總成績(jī)=平時(shí)成績(jī)
×40%+考試成績(jī)
×60%,保留兩位小數(shù)。5一、SELECT語(yǔ)法查詢語(yǔ)句SELECT是從數(shù)據(jù)庫(kù)中檢索行,并允許從SQLServer中的一個(gè)或多個(gè)表中選擇一個(gè)或多個(gè)行或列。雖然SELECT語(yǔ)句的完整語(yǔ)法較為復(fù)雜,但其主要子句可歸納如下。6可在查詢之間使用UNION、EXCEPT和INTERSECT運(yùn)算符,以便將各個(gè)查詢的結(jié)果合并到一個(gè)結(jié)果集中或進(jìn)行比較。SELECT后面列出要查詢的字段名(列名),多個(gè)字段名之間要用英文逗號(hào)隔開(kāi)。FROM后面一般為表名(table_name)
或視圖名(view_name);WHERE后面為搜索條件表達(dá)式。GROUPBY表示分組;HAVING表示對(duì)結(jié)果過(guò)濾,通常與GROUPBY一起使用。ORDERBY表示對(duì)結(jié)果集排序時(shí),ASC為升序,DESC為降序。7二、單列和多列查詢1.?單列查詢一般情況下,在數(shù)據(jù)庫(kù)中,每個(gè)表包含若干個(gè)列信息。如果只需要查詢表中的某一列數(shù)據(jù)時(shí),可直接使用以下代碼。82.?多列查詢多列查詢和單列查詢方法基本相同,只需要在多個(gè)字段名之間加上逗號(hào)分隔即可。3.?查詢所有的列若要查詢的表中有很多列,一一列舉比較麻煩,則可以使用“*”符號(hào)代表所有的列,語(yǔ)法格式如下。9三、使用DISTINCT去除結(jié)果的重復(fù)信息如果要去掉重復(fù)的查詢結(jié)果,要加上DISTINCT關(guān)鍵字。這時(shí)DISTINCT對(duì)所有的列都起作用,若列1內(nèi)容相同,列2內(nèi)容不同,則結(jié)果集中會(huì)出現(xiàn)列1相同而列2不同,也會(huì)出現(xiàn)列1不同而列2相同的記錄。10四、使用AS取別名用關(guān)鍵字AS可以命名新列,也可以給現(xiàn)有字段取別名。用AS重新指定返回字段或表的名字,稱為別名(aliasname)。1.?列的別名數(shù)據(jù)表中的列名有的是英文,為了方便查看查詢結(jié)果,可以使用別名來(lái)代替,以便增強(qiáng)可讀性;另外,在多個(gè)表查詢中,出現(xiàn)相同的列,通常也可以使用別名,其語(yǔ)法格式如下。112.?表的別名在進(jìn)行多表查詢時(shí),為了方便查詢也經(jīng)常給表取別名,其語(yǔ)法格式如下。此時(shí),AS可以省略,可以在原表名后加上空格,再加上別名。123.?結(jié)果集的別名結(jié)果集的別名也稱臨時(shí)表T,語(yǔ)法格式如下。134.?別名的使用場(chǎng)合(1)常用在有兩個(gè)名字重復(fù)的表,需要為其中一個(gè)起一個(gè)別名,如自連接查詢。(2)當(dāng)兩個(gè)表有重復(fù)的列名,也可以給表取別名,加以區(qū)分。(3)表名或列名較長(zhǎng)時(shí),可以為其取別名。(4)把一個(gè)查詢結(jié)果當(dāng)作另一個(gè)表來(lái)查詢,可以理解查詢結(jié)果為一個(gè)臨時(shí)表T。14五、使用TOP查詢前若干行TOP子句用于規(guī)定要返回的記錄的數(shù)目,TOPnPERCENT則按照前n%返回記錄,語(yǔ)法格式如下。15條件查詢?nèi)蝿?wù)2161.?根據(jù)任務(wù)要求,能使用條件表達(dá)式進(jìn)行查詢。2.?能描述在查詢中AND、OR、NOT、BETWEEN、IN、LIKE的作用。3.?能描述通配符的作用,并會(huì)使用通配符查詢數(shù)據(jù),驗(yàn)證查詢結(jié)果。17現(xiàn)要求在數(shù)據(jù)庫(kù)ssts中,使用學(xué)生成績(jī)表stuScore,完成以下查詢?nèi)蝿?wù)。1.查詢考試成績(jī)exam在95分及以上的所有記錄。2.根據(jù)公式“總成績(jī)total=平時(shí)成績(jī)normal×40%+考試成績(jī)exam×60%”,總成績(jī)保留兩位小數(shù)。查詢總成績(jī)?cè)?5分及以上學(xué)生的學(xué)號(hào)、姓名、平時(shí)成績(jī)、考試成績(jī)、總成績(jī)、系部。3.查詢平時(shí)成績(jī)和考試成績(jī)都不及格(小于60分)的學(xué)生的姓名、平時(shí)成績(jī)、考試成績(jī)。4.查詢信息工程系姓“李”的所有學(xué)生信息。18一、條件查詢用WHERE子句來(lái)說(shuō)明查詢條件,緊跟在FROM子句的后面。WHERE后面的條件表達(dá)式包括由關(guān)系運(yùn)算符、邏輯運(yùn)算符、其他運(yùn)算符構(gòu)成的表達(dá)式。其他運(yùn)算符主要有IN、NOTIN、BETWEEN、NOTBETWEEN、LIKE、NOTLIKE、ISNULL、ISNOTNULL、EXISTS、ANY、SOME。簡(jiǎn)單的條件查詢可以在WHERE后加上一個(gè)搜索條件。19二、使用關(guān)系運(yùn)算符表達(dá)式查詢?cè)赪HERE子句中,條件表達(dá)式中使用的關(guān)系運(yùn)算符主要包括:=、<、>、<=、>=、<>、!=。三、使用邏輯表達(dá)式查詢?cè)赪HERE子句中,條件表達(dá)式中使用的邏輯運(yùn)算符主要包括NOT、AND、OR。20四、使用BETWEEN限定數(shù)據(jù)查詢范圍在WHERE子句中,使用BETWEEN可以限制查詢數(shù)據(jù)的范圍。五、使用IN限定檢索數(shù)據(jù)查詢范圍IN操作符允許在WHERE子句中規(guī)定多個(gè)值,其語(yǔ)法格式如下。21六、使用通配符模糊查詢?cè)谒阉鲾?shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),通配符可以替代一個(gè)或多個(gè)字符。1.?通配符“*”在SELECT語(yǔ)句中,可以使用通配符“*”來(lái)顯示所有字段,SELECT與*之間要有空格。2.?查詢常用的通配符查詢常用的通配符見(jiàn)下表,其中下劃線符號(hào)“_”是在英文狀態(tài)下,按Shift鍵和減號(hào)鍵(數(shù)字0右側(cè)的鍵)得到的。22在SQL?Server中nchar、nvarchar使用的是Unicode字符集。
而char、varchar使用的是ASCII字符集。當(dāng)Unicode數(shù)據(jù)(nchar或nvarchar)與like?一起使用時(shí),尾隨空格有意義。但對(duì)非Unicode數(shù)據(jù),尾隨空格無(wú)意義。而ASCII中char、varchar字符串后面的空格沒(méi)有意義。23查詢常用的通配符查詢結(jié)果排序任務(wù)3241.?根據(jù)任務(wù)要求,查詢時(shí)能使用ORDER?BY進(jìn)行排序。2.?能敘述多個(gè)字段排序時(shí)應(yīng)遵循的順序關(guān)系。25本任務(wù)要求使用ORDERBY完成以下任務(wù)。1.在數(shù)據(jù)庫(kù)ssts的book表中,按照price價(jià)格從大到小排序。2.在數(shù)據(jù)庫(kù)ssts的教師表teacher中,查詢工齡最長(zhǎng)的前5名員工的工號(hào)、姓名、工齡。3.在數(shù)據(jù)庫(kù)ssts中,查詢數(shù)據(jù)表competition。刪除ID不同,其他字段的值都相同的冗余信息。4.將數(shù)據(jù)表competition重命名為newCompetition,查詢Name中帶有“林”字的所有學(xué)生的信息。26一、排序ORDERBY在SQLServer中,為了方便查看查詢結(jié)果,按某種規(guī)律排序,可使用ORDERBY子句進(jìn)行數(shù)據(jù)排序,還可以進(jìn)行多字段排序。默認(rèn)的排序方式是升序ASC,如果要降序排列,可在列名后加上DESC。ORDERBY語(yǔ)法格式如下。對(duì)查詢結(jié)果集按“列或表達(dá)式1”排序,再按“列或表達(dá)式2”排序,以此類推。27二、排序原則1.?對(duì)于數(shù)值型數(shù)據(jù),按其數(shù)值大小進(jìn)行比較。2.?對(duì)于日期型數(shù)據(jù),按年月日的數(shù)值大小進(jìn)行比較。3.?對(duì)于邏輯型數(shù)據(jù),false小于true。4.?對(duì)于中英文字符,按其ASCII碼大小進(jìn)行比較。5.?對(duì)于NULL值,若按升序排列,則含NULL的記錄將最先顯示。6.?不能按ntext、text、image類型排序。28分組查詢?nèi)蝿?wù)4
291.?能在學(xué)習(xí)常用聚合函數(shù)的基礎(chǔ)上,使用GROUP?BY進(jìn)行分組查詢。2.?能使用HAVING對(duì)分組查詢結(jié)果進(jìn)行篩選。30本任務(wù)要求使用分組查詢,完成以下查詢?nèi)蝿?wù)。1.在數(shù)據(jù)庫(kù)ssts的book表中,按書的種類分類,求出各種類型type書籍的價(jià)格總和、平均價(jià)格及各類書籍的數(shù)量。2.在數(shù)據(jù)庫(kù)ssts的book表中,查詢所有價(jià)格超過(guò)35元的書籍的種類和平均價(jià)格。3.在數(shù)據(jù)庫(kù)ssts的book表中,在所有價(jià)格超過(guò)35元的書籍中,查詢所有平均價(jià)格超過(guò)40元的書籍的種類和平均價(jià)格。31一、聚合函數(shù)聚合函數(shù)對(duì)一組值執(zhí)行計(jì)算并返回單一的值,常用的聚合函數(shù)見(jiàn)下表。32常用的聚合函數(shù)二、分組GROUPBYGROUPBY子句可以將查詢結(jié)果按屬性列或?qū)傩粤薪M合在行的方向上進(jìn)行分組,每組在屬性列或?qū)傩粤薪M合上具有相同的聚合值。1.?使用GROUP?BY進(jìn)行簡(jiǎn)單分組使用GROUPBY子句對(duì)單個(gè)字段進(jìn)行簡(jiǎn)單分組,通常與聚合函數(shù)配合使用。【例】從學(xué)生表student中按照性別sex分組,統(tǒng)計(jì)男女生人數(shù)。33統(tǒng)計(jì)男女生人數(shù)的執(zhí)行結(jié)果如圖所示。(2)反轉(zhuǎn)查詢結(jié)果當(dāng)查詢的結(jié)果不是理想的行列顯示時(shí),可以使用反轉(zhuǎn)查詢進(jìn)行轉(zhuǎn)換。可以利用COUNT函數(shù)忽略NULL值的規(guī)則,借助于CASE…END表達(dá)式實(shí)現(xiàn)。34統(tǒng)計(jì)男女生人數(shù)的執(zhí)行結(jié)果2.?使用HAVING子句設(shè)置統(tǒng)計(jì)條件GROUPBY子句還可以與WHERE子句配合使用,WHERE子句先于GROUPBY子句執(zhí)行,將滿足條件的記錄保留下來(lái),然后,再按照GROUPBY子句分成小組。若在分組后還要按照一定的條件進(jìn)行篩選,則需使用HAVING子句。在SQL中增加HAVING子句的原因是,WHERE關(guān)鍵字無(wú)法與統(tǒng)計(jì)函數(shù)一起使用。如果只想要得到分組的統(tǒng)計(jì)結(jié)果,那么不需要全部的統(tǒng)計(jì)信息。35連接查詢?nèi)蝿?wù)5361.?能根據(jù)公式計(jì)算笛卡爾積。2.?能獨(dú)立對(duì)表做交叉連接查詢、內(nèi)連接查詢和外連接查詢。37本任務(wù)要求在數(shù)據(jù)庫(kù)ssts中,使用連接查詢,完成以下3個(gè)查詢操作。1.根據(jù)teacher、teach、course三張表,查詢陳老師所任教的課程名稱。2.根據(jù)book表和author表,查詢出版了程序設(shè)計(jì)類的圖書作者,而且作者編號(hào)authorID是包含2022字符的,輸出作者的authorID、姓名authorName、所在城市city。3.根據(jù)author表,查找居住在“北京”的手機(jī)號(hào)碼前三位相同的作者。這里的teacher是教師表、teach是教學(xué)表、course是課程表,三表之間有主外鍵關(guān)系;author是作者表,book是圖書表,兩者之間也有主外鍵關(guān)系。38一、交叉連接交叉連接(crossjoin)又稱笛卡爾連接,是指兩個(gè)表之間做笛卡爾積操作,返回結(jié)果表的行數(shù)為兩個(gè)表行數(shù)的乘積。笛卡爾積:設(shè)A和B為集合,用A中元素為第一元素,B中元素為第二元素構(gòu)成的有序?qū)Γ羞@樣的有序?qū)M成的集合叫做A與B的笛卡爾積,記作A×B。笛卡爾積的符號(hào)化表示為:A×B={(x,y)|x∈A,y∈B}。39二、內(nèi)連接內(nèi)連接(innerjoin)也稱為等同連接,返回的結(jié)果集是兩個(gè)表中所有相匹配的數(shù)據(jù),而舍棄不匹配的數(shù)據(jù)。內(nèi)連接使用比較運(yùn)算符來(lái)完成,其可分為等值連接與非等值連接。連接條件的一般格式如下。[<表名1.>]<列名><比較運(yùn)算符>[<表名2.>]<列名>其中,比較運(yùn)算符主要包括=、>、<、>=、<=、!=。當(dāng)比較運(yùn)算符為“=”時(shí),稱為等值連接,其他情況稱為非等值連接。若定義了表的別名,則在T-SQL語(yǔ)句中必須用別名代替表名。40三、外連接內(nèi)連接(INNERJOIN)操作只輸出滿足連接條件的元組;外連接(OUTERJOIN)操作以指定表為連接主體,將主體表中不滿足連接條件的元組一起輸出,可分為左外連接(LEFTJOIN)、右外連接(RIGHTJOIN)和全外連接(FULLJOIN)。1.?左外連接左外連接的語(yǔ)法格式如下。41左外連接的結(jié)果集包括LEFTOUTER子句或LEFTOUTERJOIN中指定的左表的所有行,而不僅僅是連接列所匹配的行。如果左表的某行在右表中沒(méi)有匹配行,那么在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值。左連接是將左表中的所有記錄與右表中的每條記錄進(jìn)行組合,結(jié)果集中除返回內(nèi)部連接的記錄外,還在查詢結(jié)果中返回左表中不符合條件的記錄,并在右表的相應(yīng)列上加上NULL,bit類型以0填充。422.?右外連接右外連接的語(yǔ)法格式如下。右外連接RIGHTJOIN或RIGHTOUTERJOIN將返回右表的所有行。右外連接是將左表中的所有記錄與右表中的每條記錄進(jìn)行組合,結(jié)果集中除返回內(nèi)部連接的記錄外,還在查詢結(jié)果中返回右表中不符合條件的記錄,并在左表的相應(yīng)列上加上NULL,bit類型以0填充。433.?全外連接全外連接的語(yǔ)法格式如下。全外連接FULLJOIN是將左表中的所有記錄與右表中的每條記錄進(jìn)行組合,結(jié)果集中除返回內(nèi)部連接的記錄外,還在查詢結(jié)果中返回兩個(gè)表中不符合條件的記錄,并在左表或右表的相應(yīng)列上加上NULL,bit類型以0填充。44集合查詢?nèi)蝿?wù)6451.?能使用UNION聯(lián)合查詢,將多個(gè)查詢結(jié)果合并為一個(gè)結(jié)果集。2.?能敘述UNION?ALL關(guān)鍵字的用法,用于合并查詢結(jié)果時(shí)保留所有的行,包括重復(fù)行。3.?能敘述UNION、EXCEPT、INTERSECT關(guān)鍵字的用法。4.?能使用SELECT?INTO語(yǔ)句把聯(lián)合查詢的結(jié)果生成新表。46本任務(wù)要求使用數(shù)據(jù)庫(kù)ssts中的數(shù)據(jù)表classOne和classTwo進(jìn)行組合查詢,具體查詢?nèi)蝿?wù)如下。1.查詢兩個(gè)班級(jí)總分高于320分的學(xué)生的學(xué)號(hào)、姓名和成績(jī)。2.查詢兩個(gè)班級(jí)網(wǎng)絡(luò)安全課程成績(jī)小于60分的學(xué)生名單。要求輸出學(xué)號(hào)、姓名和課程的成績(jī)。3.對(duì)于網(wǎng)絡(luò)安全課程成績(jī)不及格的學(xué)生,單獨(dú)生成一張新表,表名為“網(wǎng)絡(luò)安全補(bǔ)考名單”。47一、UNION聯(lián)合查詢?cè)赟QLServer中,將多個(gè)查詢的結(jié)果放在一起,以一個(gè)查詢結(jié)果的形式顯示出來(lái),可以使用UNION關(guān)鍵字把多個(gè)SELECT連接起來(lái)。每個(gè)SELECT查詢語(yǔ)句應(yīng)有相同數(shù)量的字段,若字段個(gè)數(shù)不等,可以使用NULL來(lái)代替;每個(gè)查詢語(yǔ)句中相應(yīng)的字段的類型必須相互兼容,若不兼容,可使用類型轉(zhuǎn)換函數(shù)強(qiáng)制轉(zhuǎn)換字段類型。UNION缺省在合并結(jié)果集后消除重復(fù)項(xiàng),UNIONALL指定在合并結(jié)果集后保留重復(fù)項(xiàng)。UNION結(jié)果集中的列名總是等于UNION中第一個(gè)SELECT語(yǔ)句中的列名。48二、INTERSECT交集查詢UNION將查詢結(jié)果合并到一個(gè)結(jié)果集中,而INTERSECT運(yùn)算符從最終結(jié)果集中刪除重復(fù)的行,取兩個(gè)查詢的交集。三、EXCEPT集合差查詢EXCEPT用于從第一個(gè)查詢的結(jié)果中去除第二個(gè)查詢結(jié)果中也出現(xiàn)的行,即找出在第一個(gè)查詢結(jié)果中獨(dú)有的行,而不在第二個(gè)查詢結(jié)果中出現(xiàn)的行。49子查詢?nèi)蝿?wù)7501.?能使用單值子查詢,將單值子查詢轉(zhuǎn)化為連接查詢。2.?能使用帶有ANY、SOME或ALL子句的子查詢,并驗(yàn)證查詢結(jié)果。3.?能使用帶有IN、EXISTS和FROM子句的子查詢,并驗(yàn)證查詢結(jié)果。51本任務(wù)要求在數(shù)據(jù)庫(kù)ssts中完成以下3個(gè)查詢?nèi)蝿?wù)。1.根據(jù)課程表course,查詢cno號(hào)碼是c01、c02或c03的所有信息。2.根據(jù)學(xué)生表student,查詢dept不是信息工程系,也不是創(chuàng)意服務(wù)系的所有的學(xué)生信息。3.根據(jù)newCompetition表的出生日期Date,查詢年齡最小的學(xué)生,數(shù)據(jù)表NewCompetition如圖所示。5253數(shù)據(jù)表NewCompetition一、子查詢子查詢也稱內(nèi)部查詢或嵌套查詢,是指將一個(gè)SELECT查詢(子查詢)的結(jié)果作為另一個(gè)T-SQL語(yǔ)句(主查詢)的數(shù)據(jù)來(lái)源或判斷條件。當(dāng)一個(gè)查詢構(gòu)成另一個(gè)查詢的條件時(shí),這個(gè)查詢稱為子查詢。子查詢是一個(gè)嵌套在SELECT、INSERT、DELETE語(yǔ)句或其他子查詢中的查詢。任何允許使用表達(dá)式的地方都可以使用子查詢。子查詢可以從任何表中提取數(shù)據(jù),只要對(duì)該表有適當(dāng)?shù)脑L問(wèn)權(quán)限即可。通過(guò)子查詢可以在主查詢的條件中使用子查詢的結(jié)果,以便根據(jù)特定的需求進(jìn)行過(guò)濾和排序。54一般而言,子查詢的組件包括選擇列表組件的常規(guī)SELECT子句、一個(gè)表或多個(gè)表或視圖名稱的常規(guī)FROM子句、可選的WHERE子句、可選的GROUPBY子句、可選的HAVING子句等。子查詢?cè)谏弦患?jí)查詢處理之前求解,子查詢的結(jié)果用于建立父查詢的查找條件。1.?單值子查詢單值子查詢可以由一個(gè)比較運(yùn)算符引入,由比較運(yùn)算符引入的子查詢必須返回單個(gè)值而不是值列表。552.?帶有比較運(yùn)算符的子查詢【例】根據(jù)數(shù)據(jù)庫(kù)ssts的選課表sc,查詢超出課程平均成績(jī)學(xué)生的學(xué)號(hào)和課程號(hào)。一個(gè)SELECTFROMWHERE語(yǔ)句稱為一個(gè)查詢塊,將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING子句的條件中的查詢稱為嵌套查詢。56二、帶有ANY、SOME或ALL的子查詢1.?使用ALL返回一組值的普通子查詢ALL運(yùn)算符用于比較子查詢返回列表中的每個(gè)值。“<ALL”表示小于最小的;“>ALL”表示大于最大的;“=ALL”表示沒(méi)有返回值,因?yàn)樵诘扔谧硬樵兊那闆r下,返回列表中的所有值是不符合邏輯的。2.?使用ANY返回一組值的普通子查詢ANY運(yùn)算符用于比較子查詢返回列表中的某個(gè)值。“<ANY”表示小于最大的;“>ANY”表示大于最小的;“=ANY”表示等于IN。573.?使用SOME返回一組值的普通子查詢SOME運(yùn)算符與ANY運(yùn)算符是同義的,它們都允許比較運(yùn)算符前面的單值與后面的子查詢返回值集合中的某個(gè)值進(jìn)行比較。如果比較運(yùn)算符前面的單值與比較運(yùn)算符后面的子查詢返回值集合中的某個(gè)值之間任何比較結(jié)果為TRUE,那么比較表達(dá)式求值的結(jié)果為TRUE。58三、帶有IN子查詢通過(guò)IN(或NOTIN)運(yùn)算符引入的子查詢結(jié)果是包含零個(gè)或多個(gè)值的列表。子查詢返回結(jié)果后,外部查詢將利用這些結(jié)果。帶有IN運(yùn)算符的子查詢是指在外層查詢和子查詢之間用IN運(yùn)算符進(jìn)行連接,判斷某個(gè)屬性列是否在子查詢的結(jié)果中,其返回的結(jié)果可以包含零個(gè)或多個(gè)值。59在IN子句中,子查詢和輸入多個(gè)運(yùn)算符數(shù)據(jù)的區(qū)別在于,使用多個(gè)運(yùn)算符輸入時(shí),一般都會(huì)輸入兩個(gè)或兩個(gè)以上的值;而使用子查詢時(shí),不能確定其返回結(jié)果的數(shù)量。但是,即使子查詢返回的結(jié)果為空,語(yǔ)句也能正常運(yùn)行。NOTIN運(yùn)算符也可以應(yīng)用在子查詢中,能夠產(chǎn)生NOTIN使用的清單,但是帶有NOTIN運(yùn)算符的子查詢,其查詢速度很慢,在對(duì)T-SQL語(yǔ)句的性能有所要求時(shí),就要使用性能更好的語(yǔ)句來(lái)代替NOTIN子句。60四、帶有EXISTS子查詢帶有EXISTS運(yùn)算符的子查詢,其功能是判斷子查詢的返回結(jié)果中是否有數(shù)據(jù)行。如果帶有EXISTS運(yùn)算符的子查詢返回的結(jié)果集是空集,那么判斷為不存在數(shù)據(jù)行,即帶有EXISTS運(yùn)算符的子查詢失敗。如果帶有EXISTS運(yùn)算符的子查詢返回至少一行的數(shù)據(jù)記錄,那么判斷存在,即帶有EXISTS運(yùn)算符的子查詢成功。由于帶有EXISTS運(yùn)算符的子查詢不用返回具體值,因此該子查詢的選擇列表常用“SELECT*”格式。61在使用EXISTS運(yùn)算符引入子查詢時(shí),應(yīng)注意以下情況。1.EXISTS運(yùn)算符一般直接跟在外層查詢的WHERE子句后面,它的前面沒(méi)有列名、常量或表達(dá)式。2.EXISTS運(yùn)算符引入子查詢的SELECT列表清單通常是由“*”組成的。3.EXISTS強(qiáng)調(diào)是否返回結(jié)果集,不要求知道返回的是什么。EXISTS子句的返回值是一個(gè)布爾值。62五、在FROM子句中使用子查詢SQLServer非常靈活,允許在FROM子句中嵌套使用子查詢。當(dāng)在FROM子句中使用子查詢時(shí),為了更方便地引用這個(gè)子查詢的結(jié)果,可以通過(guò)AS關(guān)鍵字給它起一個(gè)別名,并且還可以對(duì)子查詢中的列進(jìn)行重命名,讓它們?cè)诓樵冎懈忧逦锥?3項(xiàng)目六管理索引和視圖6465任務(wù)1創(chuàng)建索引任務(wù)2管理索引任務(wù)3管理視圖任務(wù)4通過(guò)視圖操作數(shù)據(jù)表創(chuàng)建索引任務(wù)1661.?能根據(jù)應(yīng)用場(chǎng)景選擇創(chuàng)建不同類型的索引。2.?能使用SSMS窗口或T-SQL語(yǔ)句創(chuàng)建索引,能優(yōu)化數(shù)據(jù)表的查詢性能。67為了提升查詢的速度與效率,要在經(jīng)常查詢的表的相應(yīng)字段上創(chuàng)建索引。根據(jù)數(shù)據(jù)庫(kù)ssts中的數(shù)據(jù)表classThree,表中包含學(xué)號(hào)、姓名、性別、身份證號(hào)碼、出生日期、手機(jī)等字段,可以使用SSMS方式,在classThree表的“身份證號(hào)碼”列上創(chuàng)建聚集索引idx_idcard,可以使用T-SQL語(yǔ)句方式在classThree表的“姓名”列上創(chuàng)建非聚集索引idx_name。創(chuàng)建索引的結(jié)果如圖所示。
68創(chuàng)建索引的結(jié)果一、索引的概念索引是根據(jù)表中一列或多列的值按照一定順序建立的列值與記錄之間的對(duì)應(yīng)關(guān)系,是以表列為基礎(chǔ)建立的數(shù)據(jù)庫(kù)對(duì)象。索引可以提高檢索數(shù)據(jù)行的速度,當(dāng)查閱圖書的某一章節(jié)內(nèi)容時(shí),為了方便查找,可以選擇目錄索引,快速找到頁(yè)碼。在學(xué)生成績(jī)數(shù)據(jù)庫(kù)中,為加快查詢速度,要給經(jīng)常使用的表創(chuàng)建索引,并設(shè)置相關(guān)屬性。因?yàn)樗饕谒阉鲾?shù)據(jù)上所花的時(shí)間比在表中逐行搜索花的時(shí)間更長(zhǎng),若列中有幾個(gè)不同的值,或表中僅包含幾行值,則不推薦為其創(chuàng)建索引。69二、索引的類型1.?唯一索引唯一索引不允許兩行具有相同的索引值,也就是說(shuō),對(duì)于表中的任何兩行記錄來(lái)說(shuō),索引鍵的值都各不相同。如果創(chuàng)建了唯一約束,那么將自動(dòng)創(chuàng)建唯一索引。2.?主鍵索引為表定義一個(gè)主鍵將自動(dòng)創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型。主鍵索引要求主鍵中的每一個(gè)值都是唯一的,并且不能為空。703.?聚集索引(clustered?index)聚集索引是指表中各行的物理順序與鍵值的邏輯順序(索引順序)相同的索引,每個(gè)表只能有一個(gè)聚集索引。聚集索引通常創(chuàng)建在表中經(jīng)常被搜索到的列或按順序訪問(wèn)的列上,在默認(rèn)情況下,主鍵約束自動(dòng)創(chuàng)建聚集索引。4.?非聚集索引(non-clustered?index)非聚集索引是指表中各行的物理順序與索引順序不相同的索引。數(shù)據(jù)存儲(chǔ)在一個(gè)位置,索引存儲(chǔ)在另一個(gè)位置,索引中包含指向數(shù)據(jù)存儲(chǔ)位置的指針。71三、創(chuàng)建索引使用T-SQL語(yǔ)句創(chuàng)建索引的簡(jiǎn)單語(yǔ)法如下。其中,UNIQUE表示唯一索引,CLUSTERED表示聚集索引,NONCLUSTERED表示非聚集索引,F(xiàn)ILLFACTOR表示填充因子,指定一個(gè)0到100之間的值,該值指示索引頁(yè)填滿的空間所占的百分比,該值是可選的。使用CREATEINDEX方法可以指定索引的類型、唯一性等,可以創(chuàng)建聚集索引,也可以創(chuàng)建非聚集索引,既可以在一個(gè)列上創(chuàng)建索引,又可以在兩個(gè)或多個(gè)列上創(chuàng)建索引。72四、查看索引在SSMS中查看索引,在對(duì)象資源管理器窗口中,依次展開(kāi)數(shù)據(jù)庫(kù)ssts,展開(kāi)表節(jié)點(diǎn)classThree,展開(kāi)索引節(jié)點(diǎn),右擊需要查看索引信息的索引名稱,如idx_mobilephone,在彈出的快捷菜單中選擇“屬性”選項(xiàng),如圖所示。73選擇“屬性”選項(xiàng)在彈出的“索引屬性”對(duì)話框中,可以查看當(dāng)前索引idx_mobilephone的詳細(xì)信息,如圖所示。74查看當(dāng)前索引idx_mobilephone的詳細(xì)信息也可以展開(kāi)“統(tǒng)計(jì)信息”節(jié)點(diǎn),雙擊所要查看統(tǒng)計(jì)信息的索引idx_mobilephone,查看索引idx_mobilephone的統(tǒng)計(jì)信息屬性,如圖所示。在上面的“統(tǒng)計(jì)信息屬性”對(duì)話框中,在“選擇頁(yè)”中選擇“詳細(xì)信息”選項(xiàng),顯示當(dāng)前索引的統(tǒng)計(jì)信息,可以查看索引idx_mobilephone的統(tǒng)計(jì)信息。75查看索引idx_mobilephone的統(tǒng)計(jì)信息屬性
管理索引任務(wù)2761.?能使用存儲(chǔ)過(guò)程查看索引。2.?能使用SSMS或T-SQL語(yǔ)句修改索引。3.?能使用SSMS或T-SQL語(yǔ)句刪除索引。77根據(jù)數(shù)據(jù)庫(kù)ssts中的數(shù)據(jù)表classThree,該表中包含學(xué)號(hào)、姓名、性別、身份證號(hào)碼、出生日期、手機(jī)等字段,要求使用T-SQL語(yǔ)句在classThree表中的“手機(jī)”列上創(chuàng)建唯一的非聚集索引idx_mobilephone,要求使用存儲(chǔ)過(guò)程查看classThree表上的所有索引,要求使用T-SQL語(yǔ)句修改idx_mobilephone索引名為idx_phone,
重建idx_phone索引,最后刪除idx_phone索引。78一、修改索引1.?重命名索引重命名索引的語(yǔ)法格式如下。其中,oldIndexName是原索引名稱,newIndexName是新索引名稱。sp_renameoldName和newName[,object_type]必須在索引前面加上表名前綴。792.重新生成索引重新生成索引的語(yǔ)法格式如下。3.?禁用索引禁用索引的語(yǔ)法格式如下。80二、刪除索引使用T-SQL語(yǔ)句中的DROPINDEX命令可以刪除表中的索引,其語(yǔ)法格式如下。在刪除索引時(shí),要注意不能使用DROPINDEX語(yǔ)句刪除由主鍵約束或唯一性約束創(chuàng)建的索引。要想刪除這些索引,必須先刪除這些約束。當(dāng)刪除表時(shí),該表的全部索引也將被刪除。當(dāng)刪除一個(gè)聚集索引時(shí),該表的全部非聚集索引重新自動(dòng)創(chuàng)建。81管理視圖任務(wù)3821.?能在SSMS中查看視圖、創(chuàng)建視圖、修改視圖和刪除視圖。2.?能通過(guò)視圖查詢、添加、修改、刪除表數(shù)據(jù)。83現(xiàn)要求附加上已有的數(shù)據(jù)庫(kù)ssts,在數(shù)據(jù)庫(kù)中分別打開(kāi)學(xué)生表student、課程表course和選課表sc。需要在SSMS中創(chuàng)建視圖vi_score,要求查詢數(shù)學(xué)課程的考試成績(jī)大于等于60分的學(xué)生的學(xué)號(hào)、姓名、課程名稱和成績(jī)。使用系統(tǒng)存儲(chǔ)過(guò)程sp_help查看視圖,來(lái)顯示視圖的名稱、擁有者、類型和創(chuàng)建時(shí)間等信息。使用系統(tǒng)存儲(chǔ)過(guò)程sp_helptext查看視圖的定義。查看已經(jīng)創(chuàng)建的視圖,修改視圖vi_score。創(chuàng)建的視圖vi_score如圖所示。84創(chuàng)建的視圖vi_score一、視圖的概念視圖是一種數(shù)據(jù)庫(kù)對(duì)象,是一個(gè)虛擬的數(shù)據(jù)表,該數(shù)據(jù)表中的數(shù)據(jù)記錄是從一個(gè)或多個(gè)表(稱為基礎(chǔ)表)中進(jìn)行查詢篩選后的結(jié)果。85當(dāng)對(duì)視圖中的數(shù)據(jù)進(jìn)行修改時(shí),相應(yīng)的基本表數(shù)據(jù)也被修改;若基本表的數(shù)據(jù)被修改,視圖中的對(duì)應(yīng)數(shù)據(jù)也會(huì)自動(dòng)修改。視圖可以是一個(gè)數(shù)據(jù)表的一部分,也可以是多個(gè)基本表的聯(lián)合,視圖還可以由一個(gè)或多個(gè)其他視圖產(chǎn)生。視圖上的操作和基本表類似,但是數(shù)據(jù)庫(kù)管理系統(tǒng)對(duì)視圖的更新操作等往往存在一定的限制。視圖簡(jiǎn)化了操作,也提供了數(shù)據(jù)庫(kù)的安全機(jī)制,可以只允許用戶通過(guò)視圖訪問(wèn)數(shù)據(jù),而不允許用戶直接訪問(wèn)基礎(chǔ)表。86二、使用存儲(chǔ)過(guò)程查看視圖1.使用存儲(chǔ)過(guò)程sp_help查看視圖信息,顯示視圖的名稱、擁有者、類型和創(chuàng)建時(shí)間等信息,語(yǔ)法格式如下。2.使用存儲(chǔ)過(guò)程sp_helptext查看視圖文本信息,即可以查看到CREATEVIEW的T-SQL語(yǔ)句,語(yǔ)法格式如下。87三、刪除視圖在SSMS中刪除視圖的操作與刪除表一樣,右擊需要?jiǎng)h除的視圖名,如vi_student,在彈出的快捷菜單中,選擇“刪除”選項(xiàng),在彈出的對(duì)話框中單擊“確定”按鈕,即可完成刪除操作。可以使用DROPVIEW語(yǔ)句刪除視圖,其語(yǔ)法格式如下。88通過(guò)視圖操作數(shù)據(jù)表任務(wù)4891.?能使用T-SQL語(yǔ)句創(chuàng)建視圖、查看視圖的記錄內(nèi)容、修改視圖和刪除視圖。2.?能通過(guò)視圖查詢、添加、修改、刪除表數(shù)據(jù)。90本任務(wù)要求附加上已有的數(shù)據(jù)庫(kù)ssts,在數(shù)據(jù)庫(kù)中打開(kāi)學(xué)生表student、課程表course和選課表sc。通過(guò)視圖vi_score查詢視圖的執(zhí)行結(jié)果,查詢成績(jī)最高的學(xué)生的姓名和成績(jī)。創(chuàng)建查詢學(xué)生表student所有信息的視圖vi_student后,通過(guò)視圖添加表數(shù)據(jù),增加一個(gè)名為“馮剛”的學(xué)生記錄。通過(guò)視圖vi_student修改表數(shù)據(jù),將“馮剛”的系部由“機(jī)電工程系”修改為“電氣工程系”。通過(guò)視圖vi_student刪除表數(shù)據(jù),刪除名為“馮剛”的學(xué)生記錄。91一、視圖的操作1.使用T-SQL語(yǔ)句創(chuàng)建視圖使用T-SQL語(yǔ)句創(chuàng)建視圖的簡(jiǎn)單語(yǔ)法結(jié)構(gòu)如下。922.使用T-SQL語(yǔ)句修改視圖可以使用ALTERVIEW語(yǔ)句來(lái)修改視圖,語(yǔ)法格式如下。93二、視圖的應(yīng)用1.通過(guò)視圖查詢表數(shù)據(jù)通過(guò)視圖對(duì)基本表做添加、修改和刪除時(shí),要注意限制條件。以視圖的查詢?yōu)槔晥D的一個(gè)重要作用是簡(jiǎn)化查詢,為復(fù)雜的查詢建立一個(gè)視圖,不必輸入復(fù)雜的查詢語(yǔ)句,只需對(duì)此視圖做簡(jiǎn)單的查詢即可。942.通過(guò)視圖添加表數(shù)據(jù)使用視圖插入數(shù)據(jù)與在基本表中插入數(shù)據(jù)一樣,都可以通過(guò)INSERT語(yǔ)句來(lái)實(shí)現(xiàn)。插入數(shù)據(jù)的操作是針對(duì)視圖中的列的插入操作,而不是針對(duì)基本表中的所有列的插入操作。使用INSERT語(yǔ)句進(jìn)行插入操作的視圖必須能夠在基本表中插入數(shù)據(jù),否則插入操作將會(huì)失敗。對(duì)于由多個(gè)基本表連接而成的視圖來(lái)說(shuō),一個(gè)插入操作只能作用于一個(gè)基本表上,語(yǔ)法格式如下。953.通過(guò)視圖修改表數(shù)據(jù)使用視圖修改數(shù)據(jù)與在基本表中修改數(shù)據(jù)一樣,都可以通過(guò)UPDATE語(yǔ)句來(lái)實(shí)現(xiàn),語(yǔ)法格式如下。若通過(guò)視圖修改數(shù)據(jù),視圖必須定義在一個(gè)表上,并且不包括統(tǒng)計(jì)函數(shù),SELECT語(yǔ)句中不包括GROUPBY子句。964.通過(guò)視圖刪除表數(shù)據(jù)盡管視圖不一定包含基礎(chǔ)表的所有列,但可以通過(guò)視圖刪除基礎(chǔ)表的數(shù)據(jù)行,語(yǔ)法格式如下。通過(guò)視圖刪除數(shù)據(jù)與通過(guò)基本表刪除數(shù)據(jù)的方式一樣,在視圖中刪除的數(shù)據(jù)同時(shí)在基本表中也被刪除。當(dāng)一個(gè)視圖連接了兩個(gè)以上的基本表時(shí),對(duì)數(shù)據(jù)的刪除操作則是不允許的。97項(xiàng)目七維護(hù)數(shù)據(jù)庫(kù)安全9899任務(wù)1配置SQLServer身份驗(yàn)證模式任務(wù)2管理服務(wù)器登錄和數(shù)據(jù)庫(kù)用戶任務(wù)3管理角色任務(wù)4管理權(quán)限配置SQLServer身份驗(yàn)證模式任務(wù)11001.?了解兩種不同的身份驗(yàn)證模式。2.?了解身份驗(yàn)證模式的工作原理、優(yōu)勢(shì)和限制。3.?能在SQL?Server中更改身份驗(yàn)證模式,適應(yīng)特定的身份驗(yàn)證需求。4.?能更改身份驗(yàn)證模式,并了解其對(duì)應(yīng)用程序和數(shù)據(jù)庫(kù)的影響,保證應(yīng)用程序和數(shù)據(jù)庫(kù)正常運(yùn)行。101SQLServer安全管理模式是建立在安全身份驗(yàn)證和訪問(wèn)許可的基礎(chǔ)上的。SQLServer通過(guò)驗(yàn)證登錄名和口令的方式來(lái)保證其安全性,登錄名和口令又稱賬號(hào)和密碼。Windows操作系統(tǒng)和SQLServer都是微軟公司的產(chǎn)品,因此,SQLServer的驗(yàn)證可以由Windows操作系統(tǒng)來(lái)完成。102SQLServer身份驗(yàn)證模式有Windows驗(yàn)證機(jī)制和SQLServer驗(yàn)證機(jī)制兩種。本任務(wù)要求把Windows驗(yàn)證機(jī)制修改為SQLServer驗(yàn)證機(jī)制,SQLServer驗(yàn)證機(jī)制如圖所示。103SQL?Server驗(yàn)證機(jī)制一、安全身份驗(yàn)證安全身份驗(yàn)證用來(lái)確認(rèn)登錄SQLServer用戶的登錄賬號(hào)和密碼的正確性,由此來(lái)驗(yàn)證該用戶是否具有連接SQLServer的權(quán)限。任何用戶在使用SQLServer數(shù)據(jù)庫(kù)之前,必須經(jīng)過(guò)系統(tǒng)的安全身份驗(yàn)證。1041.?Windows身份驗(yàn)證SQLServer數(shù)據(jù)庫(kù)系統(tǒng)通常運(yùn)行在Windows服務(wù)器上,而Windows作為網(wǎng)絡(luò)操作系統(tǒng),本身就具備管理登錄、驗(yàn)證用戶合法性的能力,因此Windows驗(yàn)證模式正是利用了這一用戶安全性和賬號(hào)管理機(jī)制,允許SQLServer可以使用Windows的用戶名和口令。在這種模式下,只需要通過(guò)Windows身份驗(yàn)證,就可以連接到SQLServer。1052.?SQL?Server身份驗(yàn)證SQLServer身份驗(yàn)證模式允許用戶使用SQLServer安全性連接到SQLServer。在該認(rèn)證模式下,用戶在連接SQLServer時(shí)必須提供登錄名和登錄密碼,這些登錄信息存儲(chǔ)在系統(tǒng)表syslogins中,與Windows的登錄賬號(hào)無(wú)關(guān)。SQLServer自身執(zhí)行認(rèn)證處理,如果輸入的登錄信息與系統(tǒng)表syslogins中的某條記錄相匹配,那么表明登錄成功。
106二、驗(yàn)證模式的設(shè)置利用SQLServer管理平臺(tái)可以進(jìn)行認(rèn)證模式的設(shè)置,操作步驟如下。1.打開(kāi)SQLServer管理平臺(tái),右擊要設(shè)置認(rèn)證模式的服務(wù)器,在彈出的快捷菜單中,選擇“屬性”選項(xiàng),彈出“服務(wù)器屬性”對(duì)話框。2.在“服務(wù)器屬性”對(duì)話框中選擇“安全性”選擇頁(yè),SQLServer服務(wù)器屬性如圖所示。1073.在“數(shù)據(jù)庫(kù)設(shè)置”選擇頁(yè),可以更改“數(shù)據(jù)”“日志”“備份”文件的位置,這樣在每次創(chuàng)建數(shù)據(jù)庫(kù)時(shí),可以省略更改數(shù)據(jù)庫(kù)文件和日志文件的保存位置。108SQL?Server服務(wù)器屬性三、訪問(wèn)許可確認(rèn)通過(guò)了認(rèn)證并不代表用戶就能訪問(wèn)SQLServer中的數(shù)據(jù),同時(shí)必須通過(guò)許可確認(rèn)。用戶只有在具有訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限之后,才能對(duì)服務(wù)器上的數(shù)據(jù)庫(kù)進(jìn)行權(quán)限許可下的各種操作,這種用戶訪問(wèn)數(shù)據(jù)庫(kù)權(quán)限的設(shè)置是通過(guò)用戶賬號(hào)來(lái)實(shí)現(xiàn)的。109管理服務(wù)器登錄和數(shù)據(jù)庫(kù)用戶任務(wù)21101.?能使用SSMS界面管理SQL?Server登錄,能創(chuàng)建、修改和刪除登錄賬號(hào)。2.?能使用T-SQL語(yǔ)言管理SQL?Server登錄,能創(chuàng)建、修改和刪除登錄賬號(hào)。3.?能管理登錄賬號(hào)和數(shù)據(jù)庫(kù)用戶,能分配適當(dāng)?shù)臋?quán)限和角色。111通過(guò)命令行新建一個(gè)登錄名stuLogin,并設(shè)置密碼為1234qwer!。創(chuàng)建成功后,使用stuLogin登錄數(shù)據(jù)庫(kù)服務(wù)器,并在此登錄名下添加數(shù)據(jù)庫(kù)用戶stuLoginUser。隨后,檢測(cè)并分析stuLoginUser所能訪問(wèn)的數(shù)據(jù)庫(kù)列表。完成分析后,刪除數(shù)據(jù)庫(kù)用戶stuLoginUser,并最終刪除登錄名stuLogin。112為教師用戶群體創(chuàng)建一個(gè)登錄名teaLogin,并設(shè)置密碼為258asd!。同時(shí),在該登錄名下創(chuàng)建數(shù)據(jù)庫(kù)用戶teaUser,并指定其默認(rèn)架構(gòu)為dbo。在數(shù)據(jù)庫(kù)ssts中,將teaUser用戶添加至db_owner角色,以對(duì)其賦予高級(jí)數(shù)據(jù)庫(kù)管理權(quán)限。最后,執(zhí)行對(duì)數(shù)據(jù)庫(kù)ssts中數(shù)據(jù)表的查詢操作,以確保權(quán)限配置正確無(wú)誤。113一、服務(wù)器的登錄名在SQLServer中,利用SQLServer管理平臺(tái)即SSMS可以創(chuàng)建服務(wù)器的登錄名,也可以通過(guò)T-SQL語(yǔ)句新建服務(wù)器的登錄名。服務(wù)器的登錄名用來(lái)登錄SQLServer數(shù)據(jù)庫(kù)服務(wù)器,一個(gè)數(shù)據(jù)庫(kù)服務(wù)器上可能有若干個(gè)數(shù)據(jù)庫(kù)。114二、管理服務(wù)器的登錄名1.?使用SSMS新建服務(wù)器登錄名打開(kāi)SQLServer管理平臺(tái),單擊需要登錄的服務(wù)器左側(cè)的“+”按鈕,然后展開(kāi)“安全性”文件夾。如圖所示,右擊“登錄名”文件夾,在彈出的快捷菜單中,選擇“新建登錄名”選項(xiàng),彈出如圖所示的“登錄名-新建”對(duì)話框。
115當(dāng)前服務(wù)器的名稱和登錄名
選擇“新建登錄名”選項(xiàng)116“登錄名-新建”對(duì)話框在“登錄名”文本框中輸入登錄名,可以選擇Windows身份驗(yàn)證和SQLServer身份驗(yàn)證兩種模式。可以去除勾選“強(qiáng)制密碼過(guò)期”和“用戶在下次登錄時(shí)必須更改密碼”及“強(qiáng)制實(shí)施密碼策略”三個(gè)復(fù)選框,這樣密碼會(huì)簡(jiǎn)單些。選擇“服務(wù)器角色”選擇頁(yè),在如圖所示的“服務(wù)器角色”列表框中,列出了系統(tǒng)的固定服務(wù)器角色。在這些固定服務(wù)器角色的左側(cè)有相應(yīng)的復(fù)選框,勾選相應(yīng)的復(fù)選框表示該登錄賬號(hào)是相應(yīng)的服務(wù)器角色成員。117118“服務(wù)器角色”列表框選擇“用戶映射”選擇頁(yè),在如圖所示的“用戶映射”列表框中列出了“映射到此登錄名的用戶”,單擊左側(cè)的復(fù)選框設(shè)定該登錄賬號(hào)可以訪問(wèn)的數(shù)據(jù)庫(kù)及該賬號(hào)在各個(gè)數(shù)據(jù)庫(kù)中對(duì)應(yīng)的用戶名。下面的列表框列出了相應(yīng)的“數(shù)據(jù)庫(kù)角色成員身份”清單,從中可以指定該賬號(hào)所屬的數(shù)據(jù)庫(kù)角色。119“用戶映射”列表框設(shè)置完成后,單擊“確定”按鈕即可完成登錄賬號(hào)的創(chuàng)建。可以在“登錄名”文件夾下找到所創(chuàng)建的登錄名。斷開(kāi)數(shù)據(jù)庫(kù)的連接,使用新建的登錄名chensir和密碼登錄數(shù)據(jù)庫(kù)服務(wù)器。1202.使用T-SQL語(yǔ)句新建服務(wù)器的登錄名(1)Windows身份認(rèn)證Windows身份認(rèn)證的語(yǔ)法格式如下。121(2)SQLServer身份認(rèn)證SQLSever身份認(rèn)證的語(yǔ)法格式如下。1223.修改服務(wù)器的登錄名(1)啟用已禁用的登錄名【例】啟用已禁用的登錄名techerLogin。(2)更改登錄密碼【例】更改登錄名techerLogin的登錄密碼。(3)更改登錄名稱【例】將登錄名techerLogin更改為techLogin。1234.刪除登錄名不能刪除正在登錄的登錄名,也不能刪除擁有任何安全對(duì)象、服務(wù)器級(jí)對(duì)象或SQLServer代理作業(yè)的登錄名。【例】刪除登錄名techerLogin。124三、數(shù)據(jù)庫(kù)用戶數(shù)據(jù)庫(kù)用戶訪問(wèn)指定的數(shù)據(jù)庫(kù)。登錄成功后,根據(jù)登錄名找到對(duì)應(yīng)的數(shù)據(jù)庫(kù)用戶,再去訪問(wèn)某個(gè)具體用戶數(shù)據(jù)庫(kù)。找到該數(shù)據(jù)庫(kù)用戶對(duì)應(yīng)的權(quán)限,操作數(shù)據(jù)庫(kù)。服務(wù)器的登錄名與數(shù)據(jù)庫(kù)用戶是一對(duì)多的關(guān)系,數(shù)據(jù)庫(kù)用戶與數(shù)據(jù)庫(kù)是一對(duì)一的關(guān)系。125四、管理數(shù)據(jù)庫(kù)用戶在一個(gè)數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)用戶賬號(hào)可唯一標(biāo)識(shí)一個(gè)用戶,數(shù)據(jù)庫(kù)用戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限及對(duì)數(shù)據(jù)庫(kù)對(duì)象的所有關(guān)系都是通過(guò)用戶賬號(hào)進(jìn)行控制的。1.?使用SSMS新建數(shù)據(jù)庫(kù)用戶利用SQLServer管理平臺(tái)可以授予SQLServer登錄訪問(wèn)數(shù)據(jù)庫(kù)的許可權(quán)限。利用SQLServer管理平臺(tái)創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù)用戶賬號(hào)的過(guò)程如下。126打開(kāi)SQLServer管理平臺(tái),展開(kāi)要登錄的服務(wù)器和數(shù)據(jù)庫(kù)文件夾,然后展開(kāi)要?jiǎng)?chuàng)建用戶的數(shù)據(jù)庫(kù)及“安全性”文件夾,右擊“用戶”圖標(biāo),在彈出的快捷菜單中,選擇“新建用戶”選項(xiàng),彈出如圖所示的“數(shù)據(jù)庫(kù)用戶-新建”對(duì)話框。在“用戶類型框”文本框中輸入數(shù)據(jù)庫(kù)用戶名稱,在“登錄名”選擇框內(nèi)選擇已經(jīng)創(chuàng)建的登錄名,然后在下面的“默認(rèn)架構(gòu)”選擇框中為該用戶選擇數(shù)據(jù)庫(kù)角色,最后單擊“確定”按鈕,即可完成數(shù)據(jù)庫(kù)用戶的創(chuàng)建。127“數(shù)據(jù)庫(kù)用戶-新建”對(duì)話框2.?使用SSMS查看或刪除數(shù)據(jù)庫(kù)用戶在SQLServer管理平臺(tái)中,可以查看或刪除數(shù)據(jù)庫(kù)用戶。(1)展開(kāi)某一數(shù)據(jù)庫(kù),展開(kāi)“用戶”文件夾,則會(huì)顯示當(dāng)前數(shù)據(jù)庫(kù)的所有用戶。(2)在右側(cè)的頁(yè)框中,右擊所要?jiǎng)h除的數(shù)據(jù)庫(kù)用戶,在彈出的快捷菜單中,選擇“刪除”選項(xiàng),如圖所示,即可刪除數(shù)據(jù)庫(kù)用戶。128選擇“刪除”選項(xiàng)3.使用T-SQL語(yǔ)句新建數(shù)據(jù)庫(kù)用戶語(yǔ)法格式如下。如果已省略FORLOGIN,那么新的數(shù)據(jù)庫(kù)用戶將被映射到同名的SQLServer登錄名。1294.使用T-SQL語(yǔ)句修改數(shù)據(jù)庫(kù)用戶語(yǔ)法格式如下。130上述語(yǔ)句中的DEFAULT_SCHEMA即默認(rèn)架構(gòu),它是數(shù)據(jù)庫(kù)中的一個(gè)概念,類似于Windows系統(tǒng)中的默認(rèn)用戶文件夾。在數(shù)據(jù)庫(kù)中,每個(gè)用戶或會(huì)話都有一個(gè)默認(rèn)架構(gòu),用于在沒(méi)有明確指定架構(gòu)時(shí)解析對(duì)象名。這意味著,如果只輸入表名而不指定架構(gòu),數(shù)據(jù)庫(kù)將自動(dòng)在DEFAULT_SCHEMA中查找該表。簡(jiǎn)單來(lái)說(shuō),DEFAULT_SCHEMA就是數(shù)據(jù)庫(kù)用戶默認(rèn)的“工作空間”,用于存儲(chǔ)和訪問(wèn)用戶最常用的數(shù)據(jù)庫(kù)對(duì)象。如果不能確定默認(rèn)架構(gòu),就使用dbo架構(gòu)。其中,principle_id可以通過(guò)下面的查詢語(yǔ)句得到:1315.使用T-SQL語(yǔ)句刪除數(shù)據(jù)庫(kù)用戶語(yǔ)法格式如下。不能從數(shù)據(jù)庫(kù)中刪除擁有安全對(duì)象的用戶,必須先刪除或轉(zhuǎn)移安全對(duì)象的所有權(quán),才能刪除擁有這些安全對(duì)象的數(shù)據(jù)庫(kù)用戶。132管理角色任務(wù)31331.?能使用SSMS或T-SQL語(yǔ)句管理固定服務(wù)器角色及其成員。2.?能使用SSMS或T-SQL語(yǔ)句管理固定數(shù)據(jù)庫(kù)角色及其成員。3.?能使用SSMS或T-SQL語(yǔ)句管理用戶自定義數(shù)據(jù)庫(kù)角色及其成員。4.?能使用SSMS或T-SQL語(yǔ)句管理應(yīng)用程序角色。134本任務(wù)要求完成以下管理角色的操作。使用SSMS管理固定服務(wù)器角色,查看固定服務(wù)器角色,增加用戶linkLogin為sysadmin服務(wù)器成員,一段時(shí)間后,刪除服務(wù)器角色成員linkLogin。使用SSMS管理固定數(shù)據(jù)庫(kù)角色,查看固定數(shù)據(jù)庫(kù)角色及其成員和權(quán)限,添加登錄名linkLogin,默認(rèn)登錄數(shù)據(jù)庫(kù)ssts,添加數(shù)據(jù)庫(kù)ssts的用戶zhangyong,其登錄名為linkLogin,設(shè)置為db_owner數(shù)據(jù)庫(kù)角色的成員。135使用SSMS管理用戶自定義數(shù)據(jù)庫(kù)角色,在數(shù)據(jù)庫(kù)ssts中,創(chuàng)建用戶角色teacher,并添加用戶zhangyong作為角色成員,為角色teacher授予查詢和插入選課表sc的權(quán)限。用戶自定義的數(shù)據(jù)庫(kù)角色teacher的屬性和成員如圖所示。使用SSMS方式管理應(yīng)用程序角色:創(chuàng)建應(yīng)用程序角色AppNewRole。為此角色配置擁有的架構(gòu)db_owner。136用戶自定義的數(shù)據(jù)庫(kù)角色teacher的屬性和成員一、服務(wù)器角色服務(wù)器角色根據(jù)SQLServer的管理任務(wù),及這些任務(wù)相對(duì)的重要性等級(jí)來(lái)把具有SQLServer管理職能的用戶劃分為不同的用戶組,每一組所具有的管理權(quán)限都是SQLServer內(nèi)置的。服務(wù)器角色也稱為固定服務(wù)器角色,它不能被用戶創(chuàng)建,其權(quán)限作用域?yàn)榉?wù)器范圍。137服務(wù)器角色可用來(lái)管理服務(wù)器上的權(quán)限。當(dāng)用戶成功安裝SQLServer后,服務(wù)器角色就存在于數(shù)據(jù)庫(kù)服務(wù)器中,且已具備了執(zhí)行指定操作的權(quán)限。可以將服務(wù)器級(jí)主體(SQLServer登錄名、Windows賬戶和Windows組)添加到服務(wù)器角色。固定服務(wù)器角色的每個(gè)成員都可以將其他登錄名添加到該角色,用戶定義的服務(wù)器角色的成員無(wú)法將其他服務(wù)器級(jí)主體添加到角色。不是每個(gè)用戶都應(yīng)該分配為服務(wù)器角色,只有高級(jí)用戶如數(shù)據(jù)庫(kù)管理員,應(yīng)分配為服務(wù)器角色。SQLServer提供了9個(gè)固定服務(wù)器角色,服務(wù)器角色的權(quán)限見(jiàn)下表。138139服務(wù)器角色的權(quán)限1.查看固定服務(wù)器角色及其成員在新建查詢窗口輸入以下代碼。執(zhí)行后,查看固定服務(wù)器角色如圖所示。140查看固定服務(wù)器角色由上圖可以看出,顯示有8個(gè)固定服務(wù)器角色,另外還有1個(gè)public角色沒(méi)有顯示,原因是sp_helpsrvrole無(wú)法識(shí)別public角色。在服務(wù)器上創(chuàng)建的每個(gè)登錄名都是public服務(wù)器角色的成員,不能將用戶、組或角色指派為public角色的成員。不要為服務(wù)器public角色授予服務(wù)器權(quán)限,可以通過(guò)對(duì)public設(shè)置權(quán)限從而為所有數(shù)據(jù)庫(kù)設(shè)置相同的權(quán)限。1412.增加服務(wù)器角色成員將登錄賬號(hào)添加到固定服務(wù)器角色中,使用系統(tǒng)存儲(chǔ)過(guò)程sp_addsrvrolemember,語(yǔ)法格式如下。其中,login是待添加的登錄名,可以是Windows登錄名或SQLServer登錄名;role是固定服務(wù)器角色名稱。1423.?刪除服務(wù)器角色成員將登錄名從固定服務(wù)器角色中刪除,使用系統(tǒng)存儲(chǔ)過(guò)程sp_dropsrvrolemember,語(yǔ)法格式如下。143二、數(shù)據(jù)庫(kù)角色數(shù)據(jù)庫(kù)角色是為某一用戶或某一組用戶授予不同級(jí)別的管理或訪問(wèn)數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)對(duì)象的權(quán)限,這些權(quán)限是數(shù)據(jù)庫(kù)專有的,并且還可以使一個(gè)用戶具有屬于同一數(shù)據(jù)庫(kù)的多個(gè)角色。數(shù)據(jù)庫(kù)角色定義在數(shù)據(jù)庫(kù)級(jí)上,保存在各自數(shù)據(jù)庫(kù)的系統(tǒng)表sysusers之中,作用在各自的數(shù)據(jù)庫(kù)之內(nèi)。數(shù)據(jù)庫(kù)管理員給數(shù)據(jù)庫(kù)用戶指定角色,也就是將該用戶添加到相應(yīng)的角色組中。通過(guò)角色簡(jiǎn)化了直接向數(shù)據(jù)庫(kù)用戶分配權(quán)限的煩瑣操作,對(duì)于用戶數(shù)量多、安全策略復(fù)雜的數(shù)據(jù)庫(kù)系統(tǒng),能夠簡(jiǎn)化安全管理工作。數(shù)據(jù)庫(kù)角色分為固定數(shù)據(jù)庫(kù)角色和用戶自定義數(shù)據(jù)庫(kù)角色。1441.?固定數(shù)據(jù)庫(kù)角色固定數(shù)據(jù)庫(kù)角色是系統(tǒng)預(yù)先定義在數(shù)據(jù)庫(kù)級(jí)上的角色。除public角色外,角色的種類和權(quán)限都是固定的,不可更改或刪除,只允許為其添加或刪除成員。SQLServer提供了9個(gè)固定數(shù)據(jù)庫(kù)角色,固定數(shù)據(jù)庫(kù)角色的權(quán)限見(jiàn)下表。145固定數(shù)據(jù)庫(kù)角色的權(quán)限146固定數(shù)據(jù)庫(kù)角色的權(quán)限(1)查看固定數(shù)據(jù)庫(kù)角色及其成員查看數(shù)據(jù)庫(kù)ssts固定數(shù)據(jù)庫(kù)角色,在新建查詢窗口輸入以下代碼。執(zhí)行后,查看固定數(shù)據(jù)庫(kù)角色如圖所示。147查看固定數(shù)據(jù)庫(kù)角色(2)添加固定數(shù)據(jù)庫(kù)角色成員與固定服務(wù)器角色類似,SQLServer提供的系統(tǒng)存儲(chǔ)過(guò)程sp_addrolemember,能夠?yàn)閿?shù)據(jù)庫(kù)角色添加成員,語(yǔ)法格式如下。其中,role是當(dāng)前數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)角色的名稱;security_account是添加到該角色的安全賬戶;security_account可以是數(shù)據(jù)庫(kù)用戶、數(shù)據(jù)庫(kù)角色、Windows登錄或Windows組。148(3)刪除固定數(shù)據(jù)庫(kù)角色成員若要?jiǎng)h除數(shù)據(jù)庫(kù)角色的成員,使用的存儲(chǔ)過(guò)程為sp_droprolemember,語(yǔ)法格式如下。1492.用戶自定義數(shù)據(jù)庫(kù)角色(1)創(chuàng)建用戶自定義數(shù)據(jù)庫(kù)角色使用CREATEROLE語(yǔ)句可以自定義數(shù)據(jù)庫(kù)角色,語(yǔ)法格式如下。其中,role_name是用戶自定義角色的名稱,AUTHORIZATIONowner_name是將擁有新角色的數(shù)據(jù)庫(kù)用戶或角色,如果未指定用戶,那么執(zhí)行CREATEROLE的用戶將擁有該角色。(2)添加用戶為角色成員與添加固定服務(wù)器角色成員類似,將用戶添加到角色中,使用戶成為角色成員,獲得與角色一樣的權(quán)限,將用戶添加到角色中可以使用sp_addrolemember語(yǔ)句完成。150(3)授予角色權(quán)限為主體授予安全對(duì)象的權(quán)限,使用“GRANT<某種權(quán)限>ON<某個(gè)對(duì)象>TO<某個(gè)用戶、登錄名或組>”,語(yǔ)法格式如下。如果指定了WITHGRRANTOPTION子句,那么獲得某種權(quán)限的用戶還可以把這種權(quán)限再授予給其他用戶。如果沒(méi)有指定WITHGRRANTOPTION子句,那么獲得某種權(quán)限的用戶只能使用該權(quán)限,不能傳播該權(quán)限。GRANT語(yǔ)句向用戶授予權(quán)限,REVOKE語(yǔ)句撤銷已經(jīng)授予用戶的權(quán)限。151(4)刪除用戶自定義數(shù)據(jù)庫(kù)角色刪除用戶自定義數(shù)據(jù)庫(kù)角色時(shí),可以使用DROPROLE命令實(shí)現(xiàn)。152三、應(yīng)用程序角色1.創(chuàng)建應(yīng)用程序角色使用CREATEAPPLICATIONROLE語(yǔ)句創(chuàng)建應(yīng)用程序角色,語(yǔ)法格式如下。其中,application_role_name是指定應(yīng)用程序角色的名稱,此名稱不得已用于引用數(shù)據(jù)庫(kù)中的任何主體;password是指定數(shù)據(jù)庫(kù)用戶將用于激活應(yīng)用程序角色的密碼;schema_name是指定服務(wù)器在解析此角色的對(duì)象名稱時(shí)將搜索的第一個(gè)架構(gòu),如果未定義默認(rèn)架構(gòu),那么應(yīng)用程序角色將使用dbo作為其默認(rèn)架構(gòu)。1532.?激活應(yīng)用程序角色當(dāng)用戶執(zhí)行客戶端應(yīng)用程序并連接到SQLServer服務(wù)器時(shí),需要調(diào)用系統(tǒng)存儲(chǔ)過(guò)程sp_setapprole來(lái)激活應(yīng)用程序角色,語(yǔ)法格式如下。其中,[@rolename=]'role'在當(dāng)前數(shù)據(jù)庫(kù)中定義應(yīng)用程序角色的名稱。[@password=]{encryptN'password'}激活應(yīng)用程序角色所需的密碼。使用encrypt函數(shù)時(shí)
,必須將N放在第一個(gè)引號(hào)之前,將密碼轉(zhuǎn)換為Unicode字符串。使用sp_setapprole激活應(yīng)用程序角色后,該角色將保持活動(dòng)狀態(tài),直到用戶與服務(wù)器斷開(kāi)連接或停用該角色。1543.?刪除應(yīng)用程序角色若從當(dāng)前數(shù)據(jù)庫(kù)刪除應(yīng)用程序角色,則需要使用“DROPAPPLICATIONROLE”語(yǔ)句,語(yǔ)法格式如下。4.?使用應(yīng)用程序角色的過(guò)程(1)用戶執(zhí)行客戶端應(yīng)用程序,客戶端應(yīng)用程序以用戶身份連接到SQLServer服務(wù)器。(2)應(yīng)用程序通過(guò)指定密碼和應(yīng)用程序角色執(zhí)行系統(tǒng)存儲(chǔ)過(guò)程sp_setapprole。(3)若應(yīng)用程序角色生效,此時(shí)連接會(huì)放棄用戶的原有權(quán)限。(4)使用應(yīng)用程序角色操作數(shù)據(jù)庫(kù)。155管理權(quán)限任務(wù)41561.?能使用GRANT語(yǔ)句授予對(duì)象級(jí)權(quán)限,授予表、視圖、存儲(chǔ)過(guò)程等的訪問(wèn)權(quán)限。2.?能使用GRANT語(yǔ)句授予系統(tǒng)級(jí)權(quán)限,授予登錄、數(shù)據(jù)庫(kù)訪問(wèn)、備份恢復(fù)等的權(quán)限。3.?能使用DENY語(yǔ)句完成拒絕授予權(quán)限的操作,阻止用戶或角色對(duì)某些對(duì)象的訪問(wèn)或操作。4.?能使用REVOKE語(yǔ)句完成收回權(quán)限的操作,撤銷已經(jīng)授予的權(quán)限。157管理員有權(quán)限允許用戶創(chuàng)建、修改和刪除數(shù)據(jù)表。在數(shù)據(jù)庫(kù)ssts中,管理員使用T-SQL語(yǔ)句管理用戶chensir的權(quán)限,授予用戶chensir對(duì)數(shù)據(jù)表student的SELECT權(quán)限,拒絕用戶chensir對(duì)數(shù)據(jù)庫(kù)ssts中學(xué)生表student進(jìn)行增加、刪除、修改的權(quán)限。數(shù)據(jù)庫(kù)用戶chensir的權(quán)限如圖所示。158159數(shù)據(jù)庫(kù)用戶chensir的權(quán)限經(jīng)過(guò)一段時(shí)間后,管理員撤銷授予用戶chensir對(duì)數(shù)據(jù)表student的SELECT權(quán)限。最后刪除數(shù)據(jù)庫(kù)用戶chensir,刪除登錄名chensir。一、授予權(quán)限對(duì)數(shù)據(jù)對(duì)象授予權(quán)限的基本語(yǔ)法如下。160為主體授予安全對(duì)象的權(quán)限,一般順序是“GRANT<某種權(quán)限>ON<某個(gè)對(duì)象>TO<某個(gè)用戶、登錄名或組>”。其中,ALL表示授予為全部可能的權(quán)限;PRIVILEGES包含此參數(shù)是為了符合ISO標(biāo)準(zhǔn);permission是權(quán)限的名稱;column指定表中將授予權(quán)限的列的名稱,需要使用圓括號(hào);class指定將授予權(quán)限的安全對(duì)象的類,需要使用作用域限定符::;securable指定將授予權(quán)限的安全對(duì)象;TOprincipal是主體的名稱;GRANTOPTION指示被授權(quán)者在獲得指定權(quán)限的同時(shí),還可以將指定權(quán)限授予其他主體。161二、拒絕授予權(quán)限拒絕為主體授予權(quán)限,防止該主體通過(guò)組或角色成員身份繼承權(quán)限。DENY優(yōu)先于所有權(quán)限,但DENY不適用于sysadmin固定服務(wù)器角色的對(duì)象所有者或成員。需要注意的是,sysadmin固定服務(wù)器角色的成員和對(duì)象所有者不能拒絕授予權(quán)限。162對(duì)數(shù)據(jù)對(duì)象拒絕授予權(quán)限的基本語(yǔ)法如下。其中,參數(shù)的含義與GRANT語(yǔ)句的參數(shù)相同,CASCADE指示拒絕授予指定主體該權(quán)限時(shí),被該指定主體授予了該權(quán)限的所有其他主體也被拒絕授予該權(quán)限。當(dāng)主體具有帶GRANTOPTION的權(quán)限時(shí),CASCADE為必選項(xiàng)。163三、收回權(quán)限撤銷以前授予或拒絕的權(quán)限,基本語(yǔ)法如下。參數(shù)的含義與GRANT語(yǔ)句的參數(shù)相同。164項(xiàng)目八設(shè)計(jì)與實(shí)現(xiàn)政務(wù)平臺(tái)數(shù)據(jù)庫(kù)165166任務(wù)1創(chuàng)建政務(wù)平臺(tái)數(shù)據(jù)庫(kù)任務(wù)2編輯政務(wù)平臺(tái)數(shù)據(jù)庫(kù)任務(wù)3查詢政務(wù)平臺(tái)數(shù)據(jù)庫(kù)任務(wù)4使用索引和視圖優(yōu)化政務(wù)平臺(tái)數(shù)據(jù)庫(kù)創(chuàng)建政務(wù)平臺(tái)數(shù)據(jù)庫(kù)任務(wù)11671.?能對(duì)數(shù)據(jù)庫(kù)功能需求和性能需求進(jìn)行分析。2.?能繪制數(shù)據(jù)庫(kù)的E-R圖,能寫出數(shù)據(jù)表的關(guān)系模式。3.?能使用CREATE?DATABSE創(chuàng)建數(shù)據(jù)庫(kù),能使用CREATE?TABLE創(chuàng)建數(shù)據(jù)表。4.?能使用INSERT?INTO?VALUES語(yǔ)句,插入一條或多條記錄到表中,能選擇恰當(dāng)?shù)臄?shù)據(jù)類型。5.?能在創(chuàng)建表時(shí)使用主鍵、外鍵等約束。168政務(wù)平臺(tái)面向廣大社會(huì)群眾,發(fā)布政府政策新聞、公開(kāi)信息、機(jī)構(gòu)設(shè)置等信息,其后臺(tái)需要政務(wù)數(shù)據(jù)庫(kù)的支持,在開(kāi)發(fā)數(shù)據(jù)庫(kù)之前,需要對(duì)政務(wù)平臺(tái)的數(shù)據(jù)庫(kù)進(jìn)行前期的
需求分析,數(shù)據(jù)庫(kù)分析與設(shè)計(jì)完成后,公司的數(shù)據(jù)庫(kù)工程師接到創(chuàng)建政務(wù)平臺(tái)數(shù)據(jù)庫(kù)(policyplatformdatabase)的任務(wù),現(xiàn)要求創(chuàng)建一個(gè)名為zw的數(shù)據(jù)庫(kù),包括Information、Organization、User三個(gè)表,
分別定義主鍵、外鍵等約束。數(shù)據(jù)庫(kù)zw的數(shù)據(jù)庫(kù)關(guān)系圖如圖所示。169170數(shù)據(jù)庫(kù)zw的數(shù)據(jù)庫(kù)關(guān)系圖一、政務(wù)平臺(tái)數(shù)據(jù)庫(kù)需求分析通過(guò)對(duì)系統(tǒng)的終端用戶、政府職能部門的調(diào)查分析,定義政務(wù)平臺(tái)數(shù)據(jù)庫(kù)的功能需求。政務(wù)平臺(tái)數(shù)據(jù)庫(kù)的功能需求主要包括用戶管理、機(jī)構(gòu)管理及信息發(fā)布和查詢等功能。用戶管理包括用戶的注冊(cè)、登錄、權(quán)限控制等;機(jī)構(gòu)管理包括機(jī)構(gòu)信息的錄入和管理;信息發(fā)布和查詢功能包括發(fā)布新信息、查詢已發(fā)布信息、按機(jī)構(gòu)過(guò)濾信息等。此外,用戶角色的劃分也是必要的,以便不同角色的用戶有不同的操作權(quán)限。171政務(wù)平臺(tái)數(shù)據(jù)庫(kù)的性能需求涉及查詢和更新操作的效率,尤其在信息發(fā)布頻繁的情況下,要求數(shù)據(jù)庫(kù)能夠迅速處理大量用戶登錄、信息發(fā)布和查詢的請(qǐng)求。由于機(jī)構(gòu)與信息存在一對(duì)多關(guān)系,需要優(yōu)化查詢機(jī)構(gòu)發(fā)布的所有信息的性能。同時(shí),對(duì)于信息的查詢,可能需要考慮按標(biāo)題、按內(nèi)容等字段進(jìn)行模糊查詢,因此需要有相應(yīng)的索引來(lái)提高政務(wù)平臺(tái)信息的檢索速度。172二、概念結(jié)構(gòu)設(shè)計(jì)階段在需求分析的基礎(chǔ)上,通過(guò)實(shí)體關(guān)系模型(ER模型)等工具,將需求轉(zhuǎn)化為數(shù)據(jù)庫(kù)設(shè)計(jì)的概念模型,確定實(shí)體、關(guān)系及其屬性,并建立實(shí)體間的關(guān)系模式。在設(shè)計(jì)政務(wù)平臺(tái)數(shù)據(jù)庫(kù)時(shí),需要考慮實(shí)體包括信息、機(jī)構(gòu)、用戶及其屬性。在概念結(jié)構(gòu)設(shè)計(jì)階段,繪制出數(shù)據(jù)庫(kù)的E-R圖。政務(wù)平臺(tái)數(shù)據(jù)庫(kù)的E-R圖如圖所示。173174政務(wù)平臺(tái)數(shù)據(jù)庫(kù)的E-R圖將需求轉(zhuǎn)化為概念模型,每個(gè)實(shí)體轉(zhuǎn)化為一個(gè)表,實(shí)體的屬性轉(zhuǎn)化為列,并確定主鍵。信息(信息ID、信息標(biāo)題,信息內(nèi)容)Information(InformationID,Tile,Content)機(jī)構(gòu)(機(jī)構(gòu)ID,機(jī)構(gòu)名稱,負(fù)責(zé)人,聯(lián)系電話)Organization(OrganizationID,Name,Head,ContactNumber)175用戶(用戶ID,用戶名,密
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)保護(hù)與書畫藝術(shù)創(chuàng)作考核試卷
- 藝術(shù)品市場(chǎng)規(guī)范考核試卷
- 航班機(jī)組人員溝通技巧考核試卷
- 花卉畫法的分類與特點(diǎn)考核試卷
- 一次函數(shù)應(yīng)用舉例教學(xué)課件
- 共建文明社區(qū)共享和諧生活:課件教程
- 中國(guó)古代教育長(zhǎng)善救失
- 2019-2025年咨詢工程師之工程項(xiàng)目組織與管理能力提升試卷B卷附答案
- 2025年投資項(xiàng)目管理師之投資建設(shè)項(xiàng)目決策真題練習(xí)試卷A卷附答案
- 扈中平現(xiàn)代教育改革理論與實(shí)踐
- 《海上風(fēng)電場(chǎng)安全標(biāo)識(shí)設(shè)置設(shè)計(jì)規(guī)范》
- 創(chuàng)造心智與創(chuàng)新訓(xùn)練智慧樹(shù)知到期末考試答案2024年
- 創(chuàng)傷性前房積血
- 供水企業(yè)安全生產(chǎn)培訓(xùn)課件
- 2024年《大學(xué)語(yǔ)文》期末考試復(fù)習(xí)題庫(kù)(含答案)
- 早產(chǎn)的護(hù)理查房課件
- 國(guó)家智慧教育平臺(tái)培訓(xùn)課件
- 針灸科出科個(gè)人小結(jié)
- 語(yǔ)感與語(yǔ)言習(xí)得-【中職專用】高一語(yǔ)文同步課件(高教版2023·基礎(chǔ)模塊上冊(cè))
- 2024年中國(guó)石化集團(tuán)資本有限公司招聘筆試參考題庫(kù)含答案解析
- 普通高中地理課程標(biāo)準(zhǔn)(2023年版)
評(píng)論
0/150
提交評(píng)論