人力資源SQL系統環境_第1頁
人力資源SQL系統環境_第2頁
人力資源SQL系統環境_第3頁
人力資源SQL系統環境_第4頁
人力資源SQL系統環境_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PAGE PAGE 13第8章 SQLL系統環環境本章主要要討論數數據庫的的設計步步驟以及及每個步步驟用到到的方法法。數據庫的的設計主主要有四四個步驟驟:需求求分析、概念設設計、邏邏輯設計計和物理理設計。本章的主主要知識識點包括括:學習要點點1、嵌嵌入式SSQL學習要點點2、有有關事物物的嵌入入式SQQL學習要點點3、SSQL環環境學習要點點4、數數據庫的的完整性性學習要點點5、SSQL中中的安全全和用戶戶權限學習要點點1、嵌嵌入式SSQL1、什么么是嵌入入式SQQL當一個程程序既要要訪問數數據庫,又又要處理理數據時時,把SSQL語語言嵌入入程序設設計語言言即宿主主語言中中,將SSQL語語言訪

2、問問數據庫庫的功能能和宿主主語言的的數據處處理功能能相結合合,是目目前解決決該問題題的最有有效途徑徑。這樣樣使用的的SQLL稱為嵌嵌入式SSQL。2、如何何實現嵌嵌入式SSQL對于不同同的DBBMS和和宿主語語言,實實現嵌入入式SQQL的方方法基本本相同,只只是在一一些特殊殊的地方方略有差差異。實實現嵌入入式SQQL語言言主要是是實現說說明部分分的嵌入入和執行部部分的嵌嵌入。以SQLL嵌入C語言為為例說明明實現嵌嵌入式SSQL的的方法。說明部分分C語言和和SQLL語言之之間是通通過共享享變量來來進行數數據的傳傳送。共享變量量是由宿宿主語言言程序定定義、用用SQLL的DECCLARRE語句句說明

3、,以以后可在在SQLL語句中中引用的的宿主語語言變量量。共享變量量需用以以“EXEEC SSQL”為前綴綴的說明明語句說說明,在在說明語語句的結結尾加“;”。在SQLL語句中中引用共共享變量量時,每每個共享享變量前前要加“:”。在共享變變量中,有有一個系系統定義義的特殊殊變量,稱稱為SQQLSTTATEE。在每每執行一一個SQQL語句句時,都都要返回回一個SSQLSSTATTE代碼碼,來表表示這個個SQLL語句是是否執行行成功等等情況。當SQLLSTAATE為為全零時時,表示示SQLL語句執執行成功功;當SQLLSTAATE為為“020000”時,表表示SQQL語句句已執行行,但未未找到元元組

4、。所有SQQL語句句中用到到的共享享變量,除除系統定定義的(例例如SQQLSTTATEE)以外外,都必必須在宿宿主程序序中進行行說明。說明語語句的開開頭行為為:EXECC SQQL BBEGIIN DDECLLAREE SEECTIION;說明語句句的結束束行為:EXECC SQQL EEND DECCLARRE SSECTTIONN;在一個說說明語句句中定義義幾個共共享變量量,它們們都是按按照C語言的的數據類類型和格格式進行行定義的的。EXECC SQQL BBEGIIN DDECLLAREE SEECTIION;charr snno66,ssnamme220;int sagge;charr

5、 SQQLSTTATEE6;EXECC SQQL EEND DECCLARRE SSECTTIONN;執行部分分插入語句句的格式式為:EXECC SQQL IINSEERTINTOO Sttudeent (SttudeentNNo,StuudenntNaame)VALUUES (:ssno, :ssnamme);修改語句句的格式式為:EXECC SQQL UUPDAATE Stuudennt SET (SttudeentNNamee=:snaame,StuudenntAgge=:sagge)WHERRE SStuddenttNo=:snoo;刪除語句句的格式式為:EXECC SQQL DDEL

6、EETE FROMM SttudeentCCourrseWHERRE SStuddenttNo=(SELLECTT SStuddenttNo FROOM SStuddenttWHERRE SStuddenttNamme=:snaame);查詢語句句:當查詢的的結果只只有一個個元組時時,EXECC SQQL SSELEECT StuudenntNaame,StuudenntDeept INTTO :snaame,:sdeept FRROM StuudenntWHERRE SStuddenttNo=:snoo;當查詢的的結果有有多個元元組時,需需采用涉涉及到游游標的查查詢方法法。3、使用用游標的的

7、SQLL編程利用游標標進行查查詢需要要四種語語句:說說明游標標語句、打開游游標語句句、推進進語句和和關閉游游標語句句。分析學生生成績的的分布情情況。首首先從SStuddenttCouursee中取出出每個元元組的GGradde;其其次設置置游標sscCuursoor復蓋蓋這些元元組;然然后打開開游標,使使之處于于初始位位置;隨隨后,推推進游標標,取出出一個單單分量元元組放入入共享變變量grradee;接著著,確定定該成績績屬于哪哪一段,并并在相應應的統計計上加11;不斷斷推進游游標,重重復上述述統計過過程,直直到元組組全部取取完,再再關閉游游標;最最后打印印統計結結果。舉例:假設分析析學生成成

8、績的分分布情況況,把統統計結果果劃分為為11段段:09,110119,2202299099,1100。首先從SStuddenttCouursee中取出出每個元元組的GGradde;其其次設置置游標sscCuursoor復蓋蓋這些元元組;然然后打開開游標,使使之處于于初始位位置;隨隨后,推推進游標標,取出出一個單單分量元元組放入入共享變變量grradee;接著著,確定定該成績績屬于哪哪一段,并并在相應應的統計計上加11;不斷斷推進游游標,重重復上述述統計過過程,直直到元組組全部取取完,再再關閉游游標;最最后打印印統計結結果。程序如下下:#deffinee NOO-TUUPLEE !(strrcm

9、pp(SQQLSTTATEE,0020000)voidd grradeeSecctioon() int i,ssecttionn,coountt111;EXECC SQQL BBEGIIN DDECLLAREE SEECTIION;int graade;charr SQQLSTTATEE6;EXECC SQQL EEND DECCLARRE SSECTTIONN;EXECC SQQL DDECLLAREE sccCurrsorr CUURSOOR FFORSELEECT Graade FROOM SSC;EXECC SQQL OOPENN sccCurrsorr;for(i=00;i11;i+

10、) ccounntii=00;whille(11)EXECC SQQL FFETCCH FFROMM sccCurrsorr IINTOO:grradee;if (NO-TUPPLE) brreakk;secttionn=grradee/100;counntssecttionn+;EXECC SQQL CCLOSSE sscCuursoor;for(i=00;i11;i+)couttSecctioon=ii+1 nuumbeer=ccounntiinn;學習要點點2、有有關事物物的嵌入入式SQQL在集中選選課的時時間里,學學生可以以在能連連接到數數據庫上上的成百百上千臺臺計算機機上同時時對一個

11、個數據庫庫進行操操作。在在同一時時間里,數數據庫中中完全有有可能存存在相互互影響的的兩個或或者更多多的操作作。如果果對這些些操作的的順序沒沒有限制制,那么么它們之之間的相相互影響響就有可可能產生生錯誤。1、事務務假定某門門課的選選課余額額為1,這時時,同時時有兩名名學生進進行了上上面的查查詢。結結果兩名名學生都都選上了了這門課課,并分分別把選選課余額額由1修改為為0。把一一個選課課的名額額送給兩兩個學生生顯然是是不妥當當的。解決這個個問題的的方式就就是當一一個函數數正在執執行的時時候,限限制另一一個函數數,不能能讓它也也執行。這種方方式執行行的兩個個函數是是串行的的。SQQL中的的機制就就是使

12、兩兩個函數數的執行行實現串串行化。EXECC SQQL BBEGIIN DDECLLAREE SEECTIION;int cNoo;charr cNNamee200; int nLeeft;EXECC SQQL EEND DECCLARRE SSECTTIONN;voidd ChhoosseCooursse()coutt cNoo;EXECC SQQL SSELEECT nummLefft INTOO :nnLefft FFROMM CooursseWHERRE ccourrseNNo=:cNoo;if(nnLefft00)EXECC SQQL UUPDAATE CouurseeSET num

13、mLefft=nnumLLeftt-1WHERRE ccourrseNNo=:cNoo;coutt “你你已經選選定了這這門課。”; EXECC SQQL CCOMMMIT; elsee couut accct1 aacctt2 ammounnt;EXECC SQQL SSELEECT b IINTOO :bb1FROMM AcccouuntssWHERRE aaccttNo=:accct11;if(bb1=acccounnt)EXECC SQQL UUPDAATE AcccounntsSET b=bb-:aamouunt20)WWHERRE aaccttNo=:accct11;EXECC S

14、QQL UUPDAATE AcccounntsSET b=bb+:aamouuntWHERRE aaccttNo=:accct22; EXECC SQQL CCOMMMIT; elsee coutt ” 沒有足足夠結余余“; EXECC SQQL RROLLLBACCK;我們假定定在程序序執行完完20)行行的時候候發生了了故障。我們只只知道這這時數據據庫的狀狀態:在在第一個個帳戶中中,已經經扣除了了要轉的的這筆金金額,而而這筆金金額并沒沒有加到到第二個個帳戶中中去。用用戶在這這個過程程中損失失掉了這這筆錢。數據庫操操作的某某些組合合需要以以原子的的方式完完成,也也就是說說,它們們或者都都做,或

15、或者都不不做。一個通常常的解決決方式是是讓對數數據庫的的所有改改變在本本地的工工作區完完成,并并且只有有當所有有的工作作完成以以后才把把這種改改變提交交給數據據庫。兩種結束束事務的的方法當所有操操作都正正確合理理地執行行完畢之之后,使使用SQQL語句句COMMMITT來提交交做過的的操作。如果事務務異常中中止,則則使用SSQL語語句ROOLLBBACKK。學習要點點3、SSQL環環境1、數據據庫元素素的層次次結構通常可以以把運行行在某個個設備上上的數據據庫管理理系統看看作是SSQL的的環境。我們討討論過的的數據庫庫元素,比比如基本本表、視視圖,都都是在SSQL環環境中定定義的。這些元元素組成成

16、了層次次結構。(圖見881.pptt)模式(SScheema):是指數數據庫模模式,而而不是關關系模式式,是表表、視圖圖、域等等數據庫庫元素的的聚集。模式是是整個體體系結構構的基本本單位。一個模式式,包括括學生、課程和和學生選選課等三三個關系系以及計計算機系系學生視視圖,其其說明簡簡要描述述如下:CREAATE SCHHEMAA SttudeentSScheemaCREAATETABBLE StuudenntCREAATE TABBLE CouurseeCREAATE TABBLE StuudenntCooursseCREAATE VIEEW CCompputeerDeeptSStudd我們要

17、把把學生模模式作為為當前模模式,可可如下設設置:SET SCHHEMAA SttudeentSScheema;于是,隨隨后定義義的表、視圖等等模式元元素均屬屬于學生生模式。目錄(CCataalogg):是模模式的聚聚集,即即每個目目錄都有有一個或或多個模模式。在在一個目目錄中模模式的名名字必須須是唯一一的。每每個目錄錄都包含含一個稱稱為INNFORRMATTIONN-SCCHEMMA(信信息模式式)的特特殊模式式,該模模式包含含該目錄錄中所有有模式的的信息。在目錄中中建立模模式類似似于在模模式中建建立表或或視圖之之類的模模式元素素。可以以設想用用如下語語句建立立學生目目錄:CREAATE CA

18、TTALOOG SStuddenttCattaloog后面跟著著屬于學學生目錄錄的模式式及模式式的說明明。可以用SSET CATTALOOG(設設置目錄錄)語句句設置當當前目錄錄。我們們要把學學生目錄錄作為當當前目錄錄,可如如下設置置:SET CATTALOOG SStuddenttCattaloog;于是,隨隨后定義義的模式式將屬于于學生目目錄。群集(CClussterr):是目目錄的聚聚集。每每個用戶戶都有相相關的群群集,也也就是該該用戶可可以訪問問的所有有目錄的的集合。群集是是數據庫庫可以操操作的最最大范圍圍,因此此,對于于特定的的用戶,群群集就是是“數據庫庫”。2、客戶戶程序和和服務程

19、程序系統統SQL的的客戶程程序和服服務程序序與連接接、會話話和模塊塊這三個個概念緊緊密地聯聯系在一一起。連接是指指把客戶戶程序和和服務程程序連接接起來。可用如如下的SSQL連連接語句句在客戶戶程序和和服務程程序之間間打開連連接:CONNNECTT TOO AS 一般把服服務器名名作為服服務程序序名。會話:當當連接激激活時,所所執行的的SQLL操作將將在客戶戶程序和和服務程程序之間間形成請請求響應式式的交往往,我們們稱這種種操作序序列為會會話(SSesssionn)。會話與建建立它的的連接處處于同一一狀態。模塊:SSQL22標準建建議SQQL實現現至少為為用戶提提供如下下三種類類型的應應用程序序

20、(稱為為模塊,Module)之一:通用SQQL接口口嵌入式SSQL實際模塊塊3、Clliennt/SServver體體系結構構Clieent/Serrverr體系結結構如圖圖所示。(如圖圖822.pppt所示示)客戶機和和服務器器的執行行過程如如圖所示示。(如如圖83.pppt所所示)學習要點點4、數數據庫的的完整性性數據庫運運行時,應應防止輸輸入或輸輸出不符符合語義義的錯誤誤數據,而而始終保保持其中中數據的的正確性性。這就就是通常常所說的的數據庫庫的完整整性(IInteegriity)。1、說明明鍵碼約約束數據庫中中最重要要的約束束就是說說明某個個屬性或或屬性集集構成關關系的鍵鍵碼。這這意味

21、著著對于關關系的兩兩個元組組,不允允許在說說明為鍵鍵碼的屬屬性上一一致,或或者不允允許在共共同構成成鍵碼的的屬性集集的所有有屬性上上一致。鍵碼約約束在SSQL的的建表語語句中說說明。假設學生生都不重重名,則則可用姓姓名作為為學生關關系的鍵鍵碼,而而把學號號作為主主鍵碼。建表語語句如下下:CREAATE TABBLE Stuudennt(StuddenttNo INTT PRRIMAARY KEYY,StuddenttNamme CCHARR(300) UUNIQQUE,StuddenttAgee INNT,StuddenttGennderr CHHAR(1); 在屬性上上建立索索引,除除了用C

22、CREAATE INDDEX語語句之外外,還可可加上關關鍵字UUNIQQUE,從從而在為為屬性建建立索引引的同時時將其說說明為鍵鍵碼。比比如,用用如下語語句既為為學生姓姓名建立立索引,又又為之說說明了唯唯一值約約束:CREAATE UNIIQUEE INNDEXXStuddenttNammeInndexx ON SStuddentt(SttudeentNNamee); 2、說明明外鍵碼碼約束可以把一一個關系系的屬性性或屬性性集說明明為外鍵鍵碼(FForeeignn Keey)。一是指引引用另外外一個關關系的某某個屬性性或屬性性集,而而所引用用的屬性性或屬性性集必須須是所在在關系的的主鍵碼碼。二

23、是指說說明為外外鍵碼的的屬性值值必須是是所引用用的關系系的某個個相應屬屬性值。對于學生生選課關關系,可可用如下下語句說說明:CREAATE TABBLE StuudenntCooursse(StuddenttNo INTT,CourrseNNo IINT,Gradde SSMALLLINNTPRIMMARYY KEEY(SStuddenttNo,CouurseeNo),FOREEIGNN KEEY(SStuddenttNo) REEFERRENCCES Stuudennt(SStuddenttNo),FOREEIGNN KEEY (CouurseeNo) REEFERRENCCESCCourr

24、se(CouurseeNo),); 3、說明明檢驗約約束檢驗(CCHECCK)約約束是除除了鍵碼碼約束和和外鍵碼碼約束之之外的第第三種重重要的約約束。檢檢驗約束束既可用用于屬性性,也可可用于元元組。基于屬性性的檢驗驗約束可先說明明域(DDOMAAIN)的的約束:CREAATE DOMMAINN GeendeerDoomaiin CHAAR(11)CHECCK(VVALUUE IIN (F,MM);屬性geendeer可用用如下形形式來說說明:gendder GennderrDommainn,基于元組組的檢驗驗約束基于元組組的檢驗驗約束就就是對單單個關系系中的元元組給予予某種限限制。當當用CRR

25、EATTE TTABLLE語句句建表時時,要想想說明對對關系元元組的檢檢驗約束束,可在在屬性表表和鍵碼碼、外鍵鍵碼的說說明之后后加上關關鍵字CCHECCK和約約束條件件。4、更新新約束可以在任任何時候候更新約約束,即即增加、更改或或撤消約約束。對約束命命名在約束之之前加上上關鍵字字CONNSTRRAINNT(約約束)和和該約束束名。把表明屬屬性naame為為主鍵碼碼的約束束命名為為NammeIssKeyy,其說說明如下下:namee CHHAR(30) COONSTTRAIINT NammeIssKeyy PRRIMAARY KEYY 更新約束束更改約束束:用ALTTER語語句。AALTEER

26、 TTABLLE即用用于基于于屬性的的檢驗,也也用于基基于元組組的檢驗驗。ALLTERR TAABLEE語句有有幾個選選項,使使之既可可用于撤撤消約束束,也可可用于增增加約束束。撤消約束束:用關關鍵字DDROPP隨后加加上要撤撤消的約約束名。比如,要要把表明明namme為關關系Acctorr的主鍵鍵碼這一一約束撤撤消,可可用如下下語句:ALTEER TTABLLE AActoor DDROPP COONSTTRAIINT NammeIssKeyy;增加約束束:用關關鍵字AADD隨隨后加上上要增加加的約束束名。比如,要要增加一一個約束束以表明明namme為關關系Acctorr的主鍵鍵碼,可可用如

27、下下語句:ALTEER TTABLLE AActoor AADD CONNSTRRAINNT NNameeIsKKeyPRIMMARYY KEEY(nnamee); 5、觸發發與觸發發程序觸發(TTrigggerr)有時時也稱為為事件條件件動作作規則(EventConditionAction Rule)或ECA規則。觸發程序序的選項項與結構構(1)規定的動動作與觸觸發事件件之間的的關系1)AFFTERR 2)BEEFORRE3)INNSTEEAD OF常用的觸觸發事件件的類型型1)UPPDATTE2)INNSERRT3)DEELETTE用元組變變量引用用元組1)觸發發事件為為UPDDATEE2

28、)觸發發事件為為INSSERTT3)觸發發事件為為DELLETEE觸發程序序分類觸發程序序可分為為元組級級觸發程程序和語語句級觸觸發程序序兩類。舉例:假設學生生的英語語考試分分為初試試和復試試。初試試后的成成績存入入學生選選課關系系SC。若復試試成績比比初試成成績好,則則按復試試成績修修改原有有成績,否否則不應應修改。CREAATE TRIIGGEER GGTriiggeerAFTEER UUPDAATE OF G OON SSCREFEERENNCINNGOLD AS OlddTupple,NEW AS NewwTuppleWHENN(OlddTupple.GNNewTTuplle.GGAN

29、D NewwTupple.Cnoo=0112)UPDAATE SCSET G=OOldTTuplle.GGWHERRE SSno=NewwTupple.Snoo ANND CCno=NewwTupple.CnooFOR EACCH RROW假設在安安排課程程時發現現某門課課選課人人數過少少而暫停停開設,且且把選課課的學生生并入同同類的另另一門課課,于是是要在學學生選課課關系SSC中修修改課稱稱號。若若修改課課程號而而使某門門課的選選課人員員超過1150人人,則不不應修改改。CREAATE TRIIGGEER CCTriiggeerINSTTEADD OFF UPPDATTE OF CCNo ON SCREFEERENNCINNGOLD_TABBLE AS OlddSettNEW_TABBLE AS NewwSettWHENN (1150=ALLL( SELEECT COUUNT(SNoo)FROMM( SC EXCCEPTT OlldSeet)UNIOON NNewSSet) GROUUP BBY CCNo )DELEETE FROOM SSCWHERRE (SNoo,CNNo,GG) IIN OOldSSet;INSEERT INTTO S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論