数据库系统及应用基础课件_第1页
数据库系统及应用基础课件_第2页
数据库系统及应用基础课件_第3页
数据库系统及应用基础课件_第4页
数据库系统及应用基础课件_第5页
已阅读5页,还剩353页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章資料庫系統概述1.1數據管理技術的三個階段1.2資料庫與資料庫系統1.3數據模型與數據模式1.4資料庫系統的發展趨勢1.1數據管理技術的三個階段1.1.1數據管理技術概述1.1.2數據管理技術發展的三個階段返回目錄1.1.1數據管理技術概述(1)電腦應用 科學計算:解決數值計算問題 數據處理:為數據密集型應用 數據處理就是對原始數據進行科學地採集、整理、存儲、加工和傳送,從繁雜的數據中獲取所需的資料,提取有用的數據成分作為指揮生產、優化管理的決策依據。(2)數據處理的幾個特點 ① 涉及的數據量大,記憶體中只能存放一小部分,大部分都將保存在磁片等輔助記憶體中; ② 數據需長期保留在電腦系統中,並不隨某個程式的執行完畢而消失; ③ 數據常常需要共用,包括供多個單位、多個應用程式共用。(3)資料庫系統 顯著特點是:可靠的數據存儲與管理(含共用),高效的數據存取和方便的應用開發等

返回1.1.2數據管理技術發展的三個階段1.人工管理:基於人工 主要特徵:

(1)電腦系統不提供對用戶數據的管理功能

(2)數據不能共用

(3)不單獨保存數據2.檔系統:基於操作系統 主要弊病:

(1)檔系統提供的功能有限,不能滿足應用程式對數據訪問日益增長的要求。

(2)數據的冗餘和不一致性。

(3)數據的無結構性。3.資料庫管理系統:當前人們進行數據管理的主要形式。

基本功能:

(1)支持對大量或超大量數據的存儲、管理與控制

(2)給用戶或應用程式提供了良好的資料庫語言

a.數據定義語言DDL(DataDefinitionLanguage)

b.數據操作語言DML(DataManipulationLanguage)或查詢語言(QueryLanguage)

返回1.2資料庫與資料庫系統1.2.1資訊和數據1.2.2資料庫的基本概念1.2.3資料庫系統的組成返回目錄1.2.4資料庫系統的分層結構1.2.5資料庫管理員(DBA)與資料庫用戶1.2.1資訊和數據資訊

資訊: 資訊是反映客觀世界中各種事物的特徵和變化的組合,是經過加工處理並對客觀世界產生影響的數據。 資訊是對數據的解釋,是經過加工處理後的一種數據形式,它能提高人們對事物認識的深刻程度,對決策或行為有現實或潛在的價值。 特點: 往往有它的時間性,也依賴於使用資訊的人們。2.數據 是為了人們對客觀世界的瞭解與交流,常常需要對各種事物進行描述,對事物描述的特定符號。 是反映客觀世界的資訊載體,是載荷資訊可以鑒別的符號,這些符號包括數字、文字、圖像和語音等。3.數據和資訊的聯繫與區別 人們通過解釋、推論、歸納、分析和綜合等方法,從數據中獲取有意義的內容就稱為資訊。數據是資訊存在的一種形式,只有通過解釋或處理才能成為有用的資訊。同樣的數據可因載體的不同表現出不同的形式,而資訊則不會隨資訊載體的不同而改變。

返回1.2.2資料庫的基本概念資料庫是為滿足某一組織中許多用戶的許多應用系統的需要,而在電腦系統中所建立起來的相互關聯的數據的集合,這些數據按照一定的數據模型來組織和存儲,並能為所有的應用業務所共用。在資料庫中,數據的最小單位是資料項目(或字段),或者是記錄,記錄由資料項目組成

返回1.2.3資料庫系統的組成資料庫系統(Databasesystem)是指一個完整的、能為用戶提供資訊服務的系統組成:三個部分

(1)電腦系統和電腦網絡

(2)資料庫與資料庫管理系統 是一個介於資料庫與用戶之間的管理軟體,是資料庫系統的核心。

a.對用戶:資料庫管理系統能為他們提供各種有關資料庫的服務功能(包括資料庫的定義、資料庫的查詢與記錄的更新、插入與刪除等),使他們不要關心這些資料庫提供的服務功能是如何具體實現的。

b.對數據庫:資料庫管理系統要實現:對數據的存儲管理;解決許多用戶共用資料庫時可能產生的衝突;保證數據的正確性、一致性和完整性;提供對數據庫訪問的安全機制;防止非法用戶進入資料庫管理系統,對數據進行非法竊取或非法修改。

c.典型產品

(3)基於資料庫的應用軟體系統

返回1.2.4資料庫系統的分層結構

為了針對資料庫系統的三大組成部分,解決對數據的抽象認識,可將資料庫系統中的數據,按從底向上的順序描述成如下的三層分層結構。物理層:是最底層,基於操作系統。 它給出了複雜而詳細的底層數據結構,具體說明資料庫中的數據在存儲介質上是如何存放的,以及對這些數據的相關操作。它的物質基礎是相關的電腦硬體。邏輯層:中間層 它是針對DBMS的管理人員需要使用的數據,該層描述資料庫中應當存儲哪些數據以及這些存儲的數據相互之間有些什麼關係視圖層:最高層 它是針對廣大資料庫用戶如何看待他們的應用業務系統所需要的數據的。 在視圖層上,用戶所看到的只是一組應用程式和若干個視圖,這些視圖是在視圖層上定義的,它遮罩了資料庫邏輯層的實現細節,還提供了防止非法用戶訪問資料庫某些部分的安全機制。一個視圖就像是一個窗口,它從某個特定的視角來反映資料庫。

返回1.2.5資料庫管理員(DBA)與資料庫用戶資料庫管理員(DBA) 是指專業的資料庫設計與維護(特別是對部門或單位的資料庫系統)人員。

主要職責: ①根據用戶的需求,理解DBMS需要存儲什麼數據以及如何使用數據,利用數據定義語言DDL定義數據模式,定義存儲結構和存取方式;修改數據模式和物理存儲組織。 ②數據訪問授權 ③定義數據的完整性約束。 ④數據備份、日誌維護和故障恢復。資料庫用戶 主要包括:終端用戶和數據庫應用軟體系統的開發者

返回1.3數據模型與數據模式

1.3.1數據模型1.3.2數據模式1.3.3典型數據模型簡介返回目錄1.3.1數據模型1.數據模型

定義: 它是一組嚴格定義的概念的集合,它們精確地描述了數據、數據之間的相互聯繫、對數據的操作以及有關的語義約束規則。

E.F.Codd指出:“一個數據模型實質上就是向用戶提供的一組規則,規定用戶如何組織數據結構以及允許對它們執行哪些相應的操作。”

組成:(三要素) (1)數據結構 它是指所研究的對象類型的集合,這些對象類型包括:數據屬性(包括類型、內容和性質)和數據相互之間的聯繫。 它是建立數據模型的基礎。 (2)數據操作 數據操作是指對於資料庫中各種對象的實例,允許對它們執行的操作的集合,資料庫對數據的操作主要包括查詢與更新兩項功能。 (3)數據的完整性約束規則 它是指定義數據的約束條件,即在給定的數據模型中,規定數據及其聯繫所具有的制約和依存規則,用以限定符合數據模型的資料庫狀態以及狀態的變化,以保證數據的正確、有效和相容。2.三級數據模型

(1)概念數據模型 概念數據模型(Conceptualdatamodel)對應於視圖層,是面向電腦用戶、面向現實世界的數據模型,與DBMS無關,不依賴於具體的電腦系統。 概念數據模型主要有:E-R模型、EER模型、OO模型以及IDEFIX模型等。 (2)邏輯數據模型 邏輯數據模型(Logicaldatamodel)反映數據的邏輯結構,例如檔、記錄和字段等,它與DBMS有關。 邏輯數據模型主要有:關係數據模型、層次數據模型和網狀數據模型。 (3)物理數據模型 物理數據模型(Physicaldatamodel)反映數據的存儲結構,例如存儲介質的物理塊、指針和索引等。

返回1.3.2數據模式1.數據模式

它是指以選定某種數據模型為工具,對一個具體單位被處理對象的具體數據進行描述。 它反映一個單位的各種事務的結構、屬性、聯繫和約束,實質上是用數據模型對一個單位的具體實現(或模擬),它是相對穩定的,數據模式的取值稱之為實例,同一數據模式允許有很多的實例。2.三級數據模式 (1)外模式 它是面向各類最終用戶的,也稱為用戶模式。它最接近用戶,是資料庫用戶看到的數據視圖。或者說外模式是利用邏輯數據模型對用戶所用到的那部分數據進行的描述。 (2)概念模式 也稱邏輯模式,是用邏輯數據模型對一個單位的數據描述,包括現實世界中實體的性質與聯繫,定義記錄、資料項目、數據的完整性約束及記錄之間的聯繫。它描述了資料庫中全體數據的邏輯結構與特徵,整個資料庫只有一個概念模式,它是所有用戶公共的數據視圖。 (3)內模式 也稱存儲模式,是用物理數據模型對數據的描述,對一般用戶是透明的。

返回1.3.3典型數據模型簡介1.邏輯數據模型(1)層次數據模型(2)網狀數據模型(3)關係數據模型2.概念數據模型:E-R模型

(1)什麼是E-R模型 人們在開發一個應用系統時,在對用戶的需求充分瞭解後就要進行概念設計,根據需求分析把緊密相關的數據組織在一起,繪製出資料庫結構的初步藍圖。它是面向用戶的,不涉及到任何具體的DBMS。E-R數據模型就是供用戶(或設計者)來繪製這種藍圖的行之有效的工具。 (2)E-R模型的兩個重要概念

a.實體 實體(Entity)是對能被人們識別的獨立存在的對象的描述,它是對現實世界中事、物、概念等的抽象。 實體一般均具有若干特徵,這些特徵我們稱為該實體的屬性。

b.聯繫 ① 1∶1(一對一)聯繫。 ② 1∶n(一對多)聯繫。

3)m∶n(多對多)聯繫

返回1.4資料庫系統的發展趨勢

1.4.1概述1.4.2面向對象的資料庫系統1.4.3資料庫技術與多學科技術的有機結合返回目錄1.4.4面向實際應用的資料庫研究1.4.1概述1.簡單數據類型 處理數字、日期、字元型數據的簡單應用。 2. 關係資料庫無法處理的複雜數據類型 存儲並檢索複雜的嵌套數據(如材料單——BOM表)、複合數據(如集合、數組、結構)、多媒體數據(如圖像、語音、文本)、網路數據(如電子郵件、電子文檔、網站的各種元素)、用電腦輔助設計CAD繪製的工程圖紙和用GIS(地理資訊系統)提供的空間數據等,關係資料庫都無法實現對它們的管理,正是實際中湧現出這樣許多的問題,促使資料庫系統技術不斷推向新的高度。

返回1.4.3資料庫技術與多學科技術的有機結合1.分佈式資料庫系統2.多媒體資料庫3.工程資料庫

返回2.1關係資料庫及其基本特徵2.1.1基本概念1.實體及其聯繫實體——存在於人們意識之外的客觀對象,如讀者、圖書等聯繫——三種不同類型的聯繫,1-1,1-n,n-n關係——二維表,由行和列組成。關係方法用表中的行描述一個實體,用表中列描述實體的屬性,用外鍵描述實體間的聯繫

2.元組、屬性、主鍵與外鍵

元組—表中的每行,元組不容許重複,表中任意兩行不能完全相同屬性—表中的每列,分為屬性名與屬性值,屬性名不容許重複主屬性—在一個表中能起區分作用的屬性,主屬性可能由兩個或多個屬性組成,主屬性也稱為主鍵外鍵—其他表的主屬性,外鍵是描述兩個表之間關係的基本手段3.數據結構、操作與約束數據結構——用怎樣的數據形式描述應用中所涉及的各種實體及實體間的聯繫,關係方法使用二維表描述實體及其聯繫數據操作——提供哪些數據操作手段,以讓用戶方便迅速地對數據進行各種處理,關係方法提供的數據操作有選擇、投影、連接三種。數據約束——避免產生不相容數據的一種控制機制,有屬性約束、字段間約束和表間約束三種。2.1.2關係資料庫的基本特徵1.有堅實的理論基礎2.數據結構簡單、易於理解3.對用戶提供了較全面的操作支持4.得到了眾多開發商的支持5.視圖機制

E-R模型及其到關係模型的轉化

1.對實體的進一步討論

(1)實體是能被相互區分的客觀對象。這種客觀對象可能是人、物等實際的對象,也可能是一個事件。如一個學生、一本書、一個學校、一輛車、一張發票等都是一個實體。(2)要注意實體集和實體的差別。某某學生是一個實體,而一個班、一個系、一個學校的學生組成一個實體集。在有些討論中,並未在字面上對其嚴格區分,但根據上下文應能從概念上對其進行區分。(3)實體有獨立實體和弱實體之分。

2.屬性

(1)簡單屬性和複合屬性——不可進一步分割的屬性稱為簡單屬性,與此對應,由簡單屬性組合成的屬性稱為複合屬性。

(2)單值屬性和多值屬性——如果實體集中的每一個實體在某個屬性上都只有惟一值,稱這樣的屬性為單值屬性(相反,如某個實體在一個屬性上有多個值,稱這樣的屬性為多值屬性。

(3)基本屬性和導出屬性

——完全獨立的屬性稱為基本屬性,依賴於其他屬性的屬性稱為導出屬性

(4)碼

——能完全區分該實體集中的每個實體的屬性(或屬性組合)稱為“碼”

3.聯繫

聯繫是實體間的一種關聯關係,即不同實體間的對應關係。從參與聯繫的兩個實體集的數量關係來說,聯繫可分為1∶1,1∶n,m∶n等三種。對於m∶n的聯繫一般設置專門的關係表來表徵這種聯繫在1∶1,1∶m中,用一個外鍵來表徵這種聯繫4.E-R圖舉例

銷售存放供銷商產品倉庫員工零部件使用供應生產屬於部門地址在在建立E-R模型的一個原則建立的E-R模型應該反映所模擬對象的本質(針對某一研究過程),原研究對象中與研究過程有關的一些特徵、過程都應該從所建立的模型中得到反映並很容易地得到解答。如對於一個製造型企業,下述問題是重要的:①

企業有那些產品、每種產品由那些零部件組成;②

每種零部件的當前庫存數量;③

零部件供應商及地址;在圖2-1所建立的模型中,對這些問題都能很容易獲得解答,如:實體類產品回答企業有哪些產品,產品類與零部件的聯繫回答了每種產品由哪些零部件組成。

2.2.2E-R模型到關係模型的轉化

1.獨立實體到關係模式的轉化

——一個獨立實體轉化為一個關係模式(即一張關係表),實體碼轉化為關係表的關鍵屬性、其他屬性轉化為關係表的屬性

2.弱實體到關係模式的轉化

——弱實體依賴於獨立實體,在進行轉化時,弱實體也轉化為一個關係表,弱實體與獨立實體間依賴關係通過定義約束關係來表示

3.

1∶1聯繫到關係模式的轉化

——在兩個實體關係表中各自增加一個外鍵即可

4.

1∶n聯繫到關係模式的轉化

——在n方(即1對多關係的多方)實體類型表中增加一個屬性,將對方的關鍵字作為外來碼處理5.

m∶n聯繫到關係模式的轉化——單獨建立一個關係表,分別用兩個實體的碼作為外鍵6.多元聯繫到關係模式的轉化——所謂多元聯繫,即是說該聯繫涉及兩個以上的實體。如一個課程表,涉及了班級、課程、教室、教師等四個實體。轉化時,應建立一個單獨的關係表,將該聯繫所涉及的全部實體的碼作為該關係表的外鍵,再加上適當的其他屬性:課表(班號,課程號,教師號,教室號,周次)7.自聯繫到關係模式的轉化——分清兩部分實體在聯繫中的身份,按普通二元關係處理

2.3關係模式的規範化

2.3.1函數依賴概述

定義1設R=R(A1,A2,…,An)是一個關係模式(A1,A2,…,An是R的屬性),X∈(A1,A2,…,An),Y∈(A1,A2,…,An),T1,T2是R的兩個任意元組,即T1=T1(A1,A2,…,An),T2=T2(A1,A2,…,An),如果,當:T1(X)=T2(X)成立時,總有:T1(Y)=T2(Y)稱X決定Y,或稱Y函數依賴於X。記為:X→Y。

定義2R,X,Y如定義1所設,如果X→Y成立,但對X的任意真子集X1,都有X1→Y不成立,稱Y完全函數依賴於X,否則,稱Y部分函數依賴於X。所謂完全依賴是說明在依賴關係的決定項(即依賴關係的左項)中沒有多餘屬性,有多餘屬性就是部分依賴。

定義3

設X,Y,Z是關係模式R的不同屬性集,若:X→Y(並且Y→X不成立),Y→Z,稱X傳遞決定Z,或稱Z傳遞函數依賴於X。

定義1——定義3是判斷一個關係是否一個“好關係”的基礎2.3.2關係模式的規範化

1.主屬性與非主屬性

定義4

設關係模式R(A1,A2,…,An),A1,A2…,An是R的屬性,X是R的一個屬性集,如果:① X→(A1,A2…,An)② 對於X的任意真子集X1,X1—>(A1,A2,…,An)都不成立稱屬性集X是關係模式R的一個候選關鍵屬性。

習慣上把候選關鍵屬性稱為候選關鍵字,關鍵屬性稱為關鍵字

(2)主屬性和非主屬性一個關係模式R可能有多個候選關鍵屬性,而一個候選關鍵屬性又可能有多個屬性,這樣,R的所有屬性Ai(i=1,2,…,N)按是否屬於一個候選關鍵屬性被劃分為兩類:主屬性和非主屬性。定義5

設Ai是關係模式R的一個屬性,若Ai屬於R的某個候選關鍵屬性,稱Ai是R的主屬性,否則,稱Ai為非主屬性。應該注意的是,一般說來,單個主屬性並不能作為候選關鍵屬性。

2.第一範式

對關係模式的規範化要求分成從低到高不同的層次,分別稱為第一範式,第二範式、第三範式、Boyce-Codd範式、第四範式和第五範式。定義6

當關係模式R的所有屬性都不能分解為更基本的數據單位時,稱R是滿足第一範式的,簡記為1NF。

3.第二範式定義7

如果關係模式R滿足第一範式,並且R的所有非主屬性都完全依賴於R的每一個候選關鍵屬性,稱R滿足第二範式,簡記為2NF。

設R=R(讀者編號,工作單位,圖書編號,借閱日期,歸還日期)——滿足第一範式,屬性集(讀者編號,圖書編號)是R的一個候選關鍵字,但非主屬性“工作單位”非完全依賴於“(讀者編號,圖書編號)”

R不滿足2NF4.第三範式定義8

設R是一個滿足第一範式條件的關係模式,X是R的任意屬性集,如果X非傳遞依賴於R的任一個候選關鍵字,稱R滿足第三範式,簡記為3NF。由候選關鍵字的定義,R的任何屬性X肯定是函數依賴於R的每一個候選關鍵字的,這裏假設的條件只是這種依賴關係應該是“非傳遞”的,換句話說,在R中沒有哪個屬性充當了這種函數依賴關係的傳遞角色,因而,在3NF中,關係模式R的任何非主屬性對候選關鍵字的依賴都是直接的,從而非主屬性間不存在函數依賴關係,非主屬性和候選關鍵字的部分屬性間也沒有函數依賴關係(這後面的一點限制也保證了符合第三範式的關係模式一定符合第二範式)。

關於3NF,有一個重要結論,我們對這個結論只敘述而不進行形式證明。定理若關係模式R符合3NF條件,則R一定符合2NF條件

5.

BCNF

定義9

設R是一個關係模式,若R的每一個函數依賴關係的左部都是R的一個候選關鍵字,稱R滿足Boyce-Codd規範,簡記為BCNF。可以證明,BCNF是比3NF更強的規範(證明略),即符合BCNF條件的關係模式一定符合3NF條件,但反過來卻不成立。儘管在很多情況下,3NF也就是BCNF,但是,二者是不等價的,可以設計出符合3NF而不符合BCNF的關係實例。

2.3.3關係模式的分解

1.關係模式分解的一般問題符合了3NF(或BCNF)規範標準的關係模式,就會有比較好的性質,不會出現數據冗餘、不一致或插入、刪除異常等情況,但是,在實際應用過程中,所建立的許多關係並不符合3NF,這就出現將一個不滿足3NF條件的關係模式改造為符合3NF模式的要求,這種改造的方法就是對原有關係模式進行分解

所謂關係模式的分解,就是對原有關係在不同的屬性上進行投影,從而將原有關係分解為兩個或兩個以上的含有較少屬性的多個關係

引例:設R=(員工號,姓名,部門,月份,月度獎)關鍵屬性(員工號,月份),R中的非主屬性“姓名”和“部門”都只部分依賴於關鍵屬性中的“員工號屬性,因此R不符合2NF,將R分解為兩個關係:R1=(員工號,姓名,部門)R2=(員工號,月份,月度獎)R1、R2符合3NF,並且R1、R2經過連接運算可得到R無損分解Heath定理

設關係模式R(A,B,C),A,B,C是R的屬性集。如果:

A→B並且A→C則:R和投影(A,B),(A,C)的連接等價。Heath定理告訴我們,只要將關係R的某個候選關鍵字分解到每個子關係中,就會同時保持稱為連接不失真和依賴不失真。

2.

3NF分解

任何關係都可以無損地分解為多個3NF關係:(1)如果R不滿足1NF標準,先對其屬性進行分解,使其滿足1NF

(2)R符合1NF標準但不符和2NF標準時,分解R使其滿足2NF

,分解步驟如下:R=(S1,S2,X1,X2)PrimaryKey(S1,S2)/*(S1,S2)作為關鍵字S1→X1/*X1部分函數依賴於R的候選關鍵字(S1,S2)對R分解成R1和R2:R1=(S1,S2,X2)PrimaryKey(S1,S2)/*R1以(S1,S2)作為關鍵字R2=(S1,X1)PrimaryKey(S1)/*R2以S1作為關鍵字這樣的分解是無損的,如果R1,R2還不滿足2NF標準,可以繼續上述分解過程,直到每個分解後的關係模式都滿足要求為止

2.4資料庫的完整性與安全性

資料庫的完整性是指存儲在資料庫中的數據應該正確、彼此相容、安全,因而資料庫系統應該對每一組操作過程進行審查,防止破壞相容性的數據被寫入資料庫系統;而安全性是指防止人們對數據有意無意的破壞,因而系統應該提供一種訪問控制機制,防止無權者進入系統和有權者超許可權訪問資料庫。

數據是否完整與正確,系統是根據一組規則來進行判斷的。符合這一組規則的數據就是相容的,否則就是不相容的。

相容性規則稱為數據的約束,一組操作所引起的數據更新如果破壞了數據約束,系統就會拒絕。

2.4.1關係模式的約束

1、屬性約束單個屬性的取值範圍

2、元組(數據表)約束屬性間的邏輯關係約束3、資料庫(表間)約束數據表間的邏輯關係約束

2.4.2數據恢復與併發控制

1、事務及其特徵:事務,就是一組不可分割的操作原子性

——組成事務的全部操作要麼全做,要麼全不做

一致性

——資料庫系統由上一個一致性狀態經一個事務轉化為下一個一致性狀態

隔離性

——事務間是相互隔離的。當有T1和T2兩個事務同時作用於一個資料庫時,要麼T1先進行完,要麼T2先進行完,對數據庫的訪問在事務級上該是串行的,兩者隔離,相互不干擾。持久性——事務對數據庫的作用效果是持久的,一旦完成,其操作結果將永久有效

2.事務恢復

事務恢復指撤銷一個已經開始但因某種原因尚未完成的事務,使資料庫恢復到事務開始前的狀態,事務恢復並不是撤銷一個已經完成的事務。從資料庫的設計者角度,事務並非原子的,一個事務所包括的許多操作步只能一一分步進行,當執行到中間過程時倘因某種原因而不能完成後續操作,就應該撤銷業已進行了的工作,以保證事務的原子特性。

現代資料庫系統對數據的修改一般是分兩步進行的:首先將修改的所有操作都放在了一個臨時表中,第二步將這種修改提交(COMMIT)到正式的資料庫中,一個事務提交一次,發佈提交命令的地方稱為提交點。所以,事務是兩個提交點之間的操作序列

3.介質恢復

介質恢復的基本思想是進行系統備份,比如每天備份一次,當資料庫系統遇上什麼不能恢復的故障時,用備份系統恢復當前系統。當然,採用介質備份是有代價的,一般說來,介質備份不能恢復到最新狀態

4.併發控制

當兩個以上的事務同時存儲一個資料庫時,可能會發生三種問題。(1)丟失更新(2)未提交依賴問題(3)不一致分析解決上述問題的基本策略是進行數據封鎖,即在進行數據更新(或數據統計分析)時封鎖記錄(或整個數據表),使其他事務在記錄封鎖期間無法訪問該記錄

2.4.3安全性

資料庫系統的安全性是靠訪問控制來實現的

訪問許可權分配表

B1數據表B2數據表B3數據表A1用戶流覽更新更新A2用戶更新流覽A1用戶可以流覽B1數據表、並可以對B2、B3數據表實施更新操作;A2用戶可以更新B1數據表、並流覽B2數據表,但對B3數據表無訪問許可權2.4.4數據字典

現代的資料庫應用系統一般都非常龐大,管理的數據對象眾多,這些數據又成為了管理對象,數據字典就是以管理資料庫對象為目的的一種輔助工具,它可以幫助開發者井井有條的管理自己的各種數據表、視圖、資料庫等數據對象,並幫助形成各種交流文檔。數據字典是應用開發的一種有力工具。數據字典的數據是由系統自動建立和維護的,也就是說:當用戶建立了一個新的數據對象時,數據字典中將自動插入有關該對象的數據,當用戶修改了或刪除了該對象時,系統也會自動地將這種修改與刪除及時反映到數據字典中

1.資料庫對象及數據字典的基本內容

(1)數據表①

字段

字段名、字段約束、字段訪問許可權分配。②

元組

元組約束,插入規則、刪除規則、更新規則。③

索引

關於表的索引字段和索引方式說明。④

數據表的說明,表的訪問許可權分配(2)數據視圖①

字段

字段來源;②

元組

元組的篩選和連接規則;③

視圖

視圖的說明。(3)資料庫①

表間約束;②

表的存儲空間說明;③

用戶關於資料庫的用戶情況說明。2.數據字典的作用(1)方便開發人員編寫調試系統

(2)便於開發交流,方便開發過程管理

(3)方便系統移交

2.5資料庫設計的一般過程

2.5.1需求分析

1.調研分析、確認設計邊界

2.整理資料,初步確定目標系統的功能和數據結構

3.編寫需求分析報告2.5.2關係資料庫的概念設計

1.確定設計任務2.選定設計工具

3.確定面向用戶的數據子模式

4.確定面向全局的概念模式

2.5.3關係資料庫的邏輯設計

1、表的結構定義2.定義表的約束3.定義數據的各種操作

3.1SQL基礎SQL是關係型資料庫管理系統的標準語言。可以用來執行各種各樣的操作。當用戶需要處理資料庫中的數據時,就可以通過SQL語言發出請求,資料庫對SQL請求進行處理,並將處理的結果其返回給用戶。電腦系統SQL請求資料庫管理系統資料庫數據SQL是一種能夠控制資料庫管理系統並能與之交互的綜合性語言劃分為如下幾類:1. 數據定義(Datadefinition)語言用於定義被存放的數據的結構和組織,以及資料項目之間的關係;2. 數據檢索(Dataretrieval)語言用戶或應用程式通過SQL語言從資料庫中檢索到並能使用符合條件的數據;3. 數據操作(Datamanipulation)語言用戶或應用程式通過SQL語言更改資料庫,增加新數據、刪除舊數據、修改已有數據;4. 數據控制(Datacontrol)語言用戶或應用程式通過SQL語言控制其對數據庫中數據的操作。3.1.2SQL語句語

句說

明語

句說

明數

理SELECT檢索資料庫中的數據INSERT插入新的數據行DELETE刪除數據行UPDATE修改數據數

義CREATETABLE建立一個新表DROPTABLE*刪除一個表ALTERTABLE*修改一個表的結構CREATEVIEW建立一個視圖DROPVIEW*刪除一個視圖CREATEINDEX*建立一個索引DROPINDEX*刪除一個索引存

制GRANT授予用戶存取許可權REVOKE取消用戶存取許可權事

制COMMIT提交事務ROLLBACK回滾事務編

SQLDECLARE定義一個查詢游標OPEN打開查詢數據的游標FETCH檢索查詢結果的一行CLOSE關閉游標帶*號的不是ANSI/ISOSQL1標準的內容。3.1.3標量操作符算術運算符有:+(加)、-(減)、*(乘)、/(除)、%(取模)。。比較運算符有:<、>、=、>=、<=、<>。字串運算符有:+。“+”實現字串之間和連接操作。。布爾操作符有:NOT、AND、OR。布爾操作符在資料庫中有兩個不同的約定,取決於其是應用於位串還是用於其他數據類型。操作符NOT、AND和OR應用於所有數據類型。位運算符有:&(與)、|(或)、^(異或)、~(求反)。3.1.4謂詞謂詞定義應用於表中行的邏輯條件。SQL語言支持下列關係操作符:BETWEEN操作符IN操作符LIKE操作符ULL操作符ALL和ANY操作符EXISTS函數3.1.5集合函數函數說明AVG(expr)一列中值的平均值。列中只能包含數值型數據COUNT(expr),COUNT(*)一列中的值數(如果將一個列名指定為expr)或表中的行數或組中的行值(如果指定*)。COUNT(expr)忽略空值,但COUNT(*)在計數中包含它們MAX(expr)列中的最大值(文本數據類型按字母順序排在最後的)。忽略空值MIN(expr)列中的最小值(文本數據類型按字母順序排在最前的)。忽略空值SUM(expr)列中值的合計。列中只能包含數值型數據3.1.6數量函數函

數說

明ABS(n)返回數值運算式中n的絕對值(即負值返回的是正值)COS(n)計算n的余弦值。n以及結果值為FLOAT數據類型EXP(n)計算en

的值LOG(n)計算n的自然對數值(即以e為底)POWER(X,Y)計算XY值SIN(n)計算n的正弦值。n以及返回的結果值為FLOAT數據類型SQRT(n)計算n的平方根TAN(n)計算n的正切值。n以及結果值為FLOAT數據類型1數值函數2日期函數函

數說

明DATEDIFF(item,dat1,dat2)計算兩個日期dat1和dat2之差,並以值item指定的單位作為整數返回結果DATEADD(item,number,date)添加item指定的單位的數字number到指定的日期date中3字串函數函

數說

明LOWER(Z1)將串Z1的所有大寫字母變為小寫字母。原來小寫的字母和數字及其他字元不變RIGHT(Z,length)返回串Z中的最後Length個字元SPACE(length)返回含有由length指定的長度的空格的串SUBSTRING(Z,a,Length)創建串Z中從位置a開始的部分字串,長度為Length3.1.7空值空值(NULL)是指定給列的特殊值。空值指列中的資訊未知或不可用。在布爾操作AND、OR和NOT中,空值是由下列真值表而指定。ANDTRUEFALSENULLTRUETRUEFALSENULLFALSEFALSEFALSEFALSENULLNULLFALSENULLAND運算真值表

ORTRUEFALSENULLTRUETRUETRUETRUEFALSETRUEFALSENULLNULLTRUENULLNULLNOTTRUEFALSENULLFALSETRUENULLOR運算真值表

NOT運算真值表

3.2SQL數據定義語言本節介紹有關數據定義語言(DDL)的所有SQL語言語句,DDL語句分為三組:第一組包括創建對象的語句;第二組包括修改對象的語句;第三組包括刪除對象的語句。3.2.1創建資料庫對象一個資料庫包含許多不同的對象。資料庫的所有對象可以是物理的或邏輯的。物理對象與數據在物理設備(盤)上的組織有關,邏輯對象描述資料庫的用戶視圖。資料庫、表、列和視圖(虛擬表)是邏輯對象的例子。3.2.2資料庫的創建資料庫的創建語句(CREATEDATABASE)的一般形式為:CREATEDATABASE資料庫名[ON[PRIMARY]資料庫檔1{,資料庫檔2}...][LOGON資料庫檔3{,資料庫檔4}...][FORRESTORE]理想的情況下,只有有限的用戶被授權可創建資料庫。系統安裝之後,只有系統管理員有這個特權。系統管理員可以通過GRANTCREATEDATABASE語句將這個特權授給其他用戶。資料庫的創建者稱為該資料庫的所有者,並對數據庫和其對象有特殊的權利。3.2.3基本表的創建基本表的創建語句(CREATETABLE)在當前打開的資料庫中創建一個新數據表。語句的基本形式為:CREATETABLE表名[字段1類型1[NOTNULL/NULL][{,字段2類型2[NOTNULL/NULL]}...]]table_name是所創建的數據表的名字。Col_name1,Col_name2,...是表中列的名。Type1,Type2...是相應列的數據類型(。表名字與擁有者名一起在資料庫中必須是唯一的,同樣,列名字在表中也必須是唯一的。如果說明為NOTNULL,則列中不允許分配空值資料庫創建之後,在資料庫中創建表的特權授給系統管理員和數據庫擁有者。SQL的數據類型TypeWidthnPrecision說

明CHARN—寬度為n的字元字段INTEGER——整型D——日期型T——日期時間型NNd寬度為n、有d位小數的數值型字段FNd寬度為n、有d位小數的浮點數值型字段B—d雙精度型Y——貨幣型L——邏輯型MEMO——備註型G——通用型3.2.4修改數據表結構修改數據表結構語句(ALTERTABLE)有下列基本形式:ALTERTABLE表名;ADD字段類型[NULL|IDENTITY][,字段類型[NULL|IDENTITY];ALTERCOLUMN字段類型{NULL|IDENTITY}[{,Col_nameTypeNULL|IDENTITY}...]3.2.5刪除資料庫對象刪除資料庫對象語句的形式:DROPDATABASE資料庫1{,資料庫2...}可以刪除一個或多個數據庫。這意味著資料庫DBMS系統中刪除,構成該資料庫所用的全部操作系統檔都被刪除。使用下列語句可以從資料庫中刪除一個或多個表:DROPTABLE表名1{,表名2...}3.3簡單SQL數據查詢語言3.3.1SELECT語句的基本形式查詢是SQL語言的核心。用於表達SQL查詢的SELECT語句是功能最強,也是功能最複雜的SQL語句。使用這個語句使從資料庫(甚至從多個數據庫)的一個或多個表中查詢資訊成為可能。SELECT語句執行的結果是產生符合條件的所有數據記錄的另一個表,也稱為結果集。一個完整的SELECT語句包括6個子句。① SELECT子句列出所有要求SELECT語句檢索的資料項目;② FROM子句列出包含索要查詢數據的表;③ WHERE子句提供SQL只查詢某些行的數據,也就是執行查詢的條件;④ GROUPBY用以制定匯總查詢,即不是對每一行產生一個查詢結果,而是將相似的行進行分組,再對每一組產生一個匯總結果;⑤ HAVING子句告訴SQL只產生由GROUPBY得到的某些組的結果;⑥ ORDERBY子句將查詢結果按照一列或多列中的數據排序。SELECT語句最簡單的形式包含SELECT和FROM子句。這種形式的SELECT語句格式是:SELECT[ALL|DISTINCT]字段列表FROM表名[表別名][{,tab_alias2}]...]tab_1,tab_2,...是被檢索的表名。tab_alias1,tab_alias2,...是被檢索表的別名。別名是相應表的另一個名字,它可以用簡短的方式引用表,或用作引用同一物理表的兩個邏輯實例。column_list包含下列一個或多個說明。星號(*)表示在FROM子句中指定表的全部列。3.3.2WHERE子句WHERE子句就是用來指定這些查詢條件的,主要可以分為如下幾類:① 比較條件

通過比較兩個運算式的值,選取使比較運算式成立的數據行。② 範圍條件

判斷一個運算式的值是否落在某一個指定的範圍內,選取落在範圍內的數據行。③ 組屬條件

判斷一個運算式的值是否落在某一組指定的組內,選取屬於這一組內的數據行。④ 模式匹配條件

判斷一個包含字串的數據列的值是否匹配某一指定的模式,選取於模式相匹配的數據行。⑤ 空值條件

判斷某個列是否有空值,選取為空值或不為空值的數據行。WHERE子句條件可以包含單個條件或多個條件。多個條件可以使用布爾操作符AND、OR和NOT建立。涉及NULL值的查詢,為檢索列中有NULL值的行,SQL包括操作符IS[NOT]NULL。LIKE是將列值與特定模式相比較的操作符,一般形式為:COLUMN[NOT]LIKE'模式'模式中的通配符有特殊的解釋。其中的兩個為百分號(%)表示任意零個或多個字元序列,下劃線(_)表示任意單個字元。3.3.3GROUPBY子句GROUPBY子句將一列或多列具有相同列值的行定義為一組,按組輸出查詢結果。3.3.4集合函數SQL語言支持5個集合函數:MIN、MAX、SUM、AVG、COUNT。集合函數MIN和MAX分別計算列中的最小值和最大值。如果有WHERE子句,MIN和MAX函數返回所選行的最大值和最小值。集合函數SUM計算列中值的總和,SUM函數的參數必須是數值型的。集合函數AVG計算列中所有值的平均值,AVG函數的參數必須是數字型的。集合函數COUNT,COUNT([DISTINCT]列名)計算指定列Col_name中非空值的個數;COUNT(*)計算表中的行數,或WHERE條件為真的行數。3.3.5HAVING子句HAVING子句定義應用到分組行中的條件,HAVING子句對分組行的意義與WHERE子句對每個行的意義是相同的。它的語法是:HAVING條件這裏條件包含集合函數或常量。WHERE和HAVING子句都是條件子句,但兩者在功能上是明顯不同的:HAVING子句則對結果組進行選擇,使不滿足條件的結果行不出現在查詢結果中。此外,HAVING子句只能用在有GROUPBY(分組)子句查詢中。3.3.6ORDERBY子句ORDERBY子句定義查詢結果中行的特定順序。這個子句有下列語法:ORDERBY{[列名|列編號[ASC|DESC]]},...列名定義顯示順序,列編號是可選的說明,按SELECT列表中所有列的順序來標識(1代表第1列,2代表第2列,等等)。ASC指明按昇冪排列,DESC指明按降序排列,缺省的為ASC。3.3.7簡單子查詢SQL語句提供將列值與另一個SELECT語句結果比較的能力。嵌套在另一個SELECT語句的WHERE子句中的SELECT語句稱為子查詢,子查詢中的第一個SELECT語句通常稱為外查詢,相對應的內查詢指的是第二個SELECT語句。內查詢總是首先計算,外查詢接受內查詢的值。子查詢有兩種:簡單子查詢、相關子查詢。簡單子查詢中內查詢一次計算出精確值,相關子查詢與簡單子查詢區別在於其值由外查詢的變數決定。因此,相關子查詢的內查詢每當系統從外查詢檢索一個新行時都要進行計算估值。3.4複雜SQL數據查詢語言SQL提供一種查詢方法,能將存儲於不同數據表中的數據進行連接查詢。在SELECT語句中的FROM子句指定要連接的表,表名後的字母稱為該表的別名,WHERE子句指定了需要連接的表的連接條件。連接條件不必一定使用等號。使用一般連接條件(也就是,使用其他比較操作符而不是等號)的連接操作稱為比較連接。3.5SQL數據操作語言除了已在前面介紹的SELECT語句之外,還有另外三個DML語句:INSERT,UPDATE和DELETE。像SELECT語句那樣,三個修改語句或是對表進行操作或是對視圖進行操作。3.5.1INSERT語句INSERT語句將行(或行的部分)插入表中。它有兩種不同的形式:INSERTINTO表名[(字段1[,字段2,...])];VALUES(運算式1[,運算式2,...])INSERTINTO表名FROMARRAY數組名|FROMMEMVAR使用第一種形式,將一行(或行的部分)插入到表tab_name或視圖view_name的基表中;第二種形式的INSERT語句插入來自SELECT語句或來自使用EXECUTE語句執行的存儲過程的結果集(存儲過程必須返回數據,然後將數據插入表中),SELECT語句可以將來自不同或相同表的值作為INSERT語句的目標,只要這些列的類型相相容即可。3.5.2UPDATE語句UPDATE語句修改表中行的值,它的一般形式為UPDATE表名|視圖名;SET字段1=運算式2[{字段2=運算式2}...][FROM表名1|視圖1[{表名2|視圖2}...]][WHERE條件]表名中的行(或與視圖名有關的表中的行)按照WHERE子句的條件修改。對於每個要修改的行,UPDATE語句在SET子句中修改列的值,為相關的列賦給常量(或一般運算式)。如果WHERE子句省略,UPDATE語句修改表的全部行。注:UPDATE語句只能修改一個表的數據。3.5.3DELETE語句DELETE語句刪除表中的行。語句格式:DELETEFROM[資料庫名]表名[WHERE條件]滿足WHERE子句中條件的所有行都將被做刪除標記。在DELETE語句中不允許明確地命名列,因為適當行的所有列都將被刪除。DELETE語句中的WHERE子句可以包含子查詢。3.6SQL數據控制語言在各種大型DBMS中,只有授權的用戶才可以登錄資料庫系統並在一個對象上執行相應操作;否則,SQL語言中語句的執行或資料庫對象上的操作將被拒絕。本節討論的內容不專門針對VFP,其中大部分命令在VFP中不能使用。有兩組許可權控制一個用戶的活動:語句許可權和對象許可權。3.6.1語句許可權與GRANT語句GRANT語句為DBMS用戶授予許可權,它對語句許可權的語法是:GRANT{ALL|語句列表}TO帳戶列表語句列表指定要授予許可權的一個或多個語句(使用逗號分開),帳戶列表列出要授予許可權的全部帳號(由逗號分開)。帳戶列表的成員可以是資料庫用戶名或角色。ALL指定授予存在的全部語句許可權。3.6.2對象許可權與GRANT語句對象許可權應用於資料庫對象(表、視圖和存儲過程)上的特定操作。GRANT語句對對象許可權的語法是:GRANT{ALL|許可權列表};ON{表名[字段列表]|過程名};TO帳戶列表[WITHGRANTOPTION][AS{組名|角色名}]ALL和帳戶列表與第一種形式的GRANT語句中同名選項有相同的含義,表名可以是表或視圖的名字;AS指定具有執行GRANT語句需要的帳號的名字(當執行GRANT語句的用戶屬於多個組或角色時,必須有AS參數);許可權列表是操作許可權的列表。對象許可權列表權限描述SELECT提供選擇(讀)數據行的能力。可以提供列表限制這個許可權到一行或多個行(如果省略列表,該表的全部列可以被選擇)INSERT提供插入數據行的能力UPDATE提供修改列值的能力。可以提供列表限制這個許可權到一行或多個行(如果省略列表,該表的全部列可以被修改)DELETE提供刪除數據行的能力REFERENCES當用戶沒有引用表的SELECT許可權時,提供引用引用表中外部關鍵字的列的能力EXECUTE提供執行指定存儲過程的能力3.6.3REVOKE語句REVOKE語句刪除一個或多個已經授予(或拒絕)的許可權。這個語句可以用於語句許可權和對象許可權,所以有兩個語法形式:(1) 語句許可權REVOKE{ALL|語句列表}FROM帳戶列表(2) 對象許可權REVOKE[GRANTOPTIONFOR]{ALL[PRIVILEGES]|許可權列表};ON表名[字段列表]{TO|FROM}帳戶列表[CASCADE][AS{組名|角色名}]3.7視圖視圖是減少數據冗餘,方便用戶的一種重要工具。基表用於描述DDL和DML語句。基表包含存在盤上的數據。相反,視圖在物理上並不存在,也就是說,它們的內容不存放在盤上。視圖是使用存放在系統目錄中的資訊從一個或多個表中派生出來的。這些資訊(包括視圖名和從基表中檢索行的方式)是與物理存儲的視圖有關的唯一資訊。因此,視圖稱為虛擬表。3.7.1視圖的創建、刪除和修改CREATEVIEW創建視圖。這個語句的一般形式是:CREATESQLVIEW視圖名[AS查詢語句]。視圖名是要建立的視圖名,查詢語句是指定從一個或多個表中檢索行和列的SELECT語句。DROPVIEW刪除視圖,命令格式:DROPVIEW視圖名,DROPVIEW語句刪除資料庫中指定視圖的定義,但並未刪除與之相關的基表。3.7.2視圖數據的操作如前所述,可以使用與檢索和修改基表相同的SQL語句對視圖進行檢索和修改。視圖的查詢(SELECT語句)總是轉換為與它所依賴的基礎表的等價查詢。可以把視圖作為基表一樣使用INSERT語句。當視圖用於插入行時,行實際上是插入到基表中。也可以把視圖作為基表一樣使用UPDATE語句。當視圖用於修改行時,基表的內容實際上被修改了。與修改操作一樣,刪除操作既可以針對基表進行,也可以針對視圖進行。3.8典型關係資料庫中的SQL語言Oracle中的SQL語言。Oracle資料庫語言是標準的SQL,可在用戶友好介面(UFI)也就是SQL*Plus的支持下實現所有的SQL語言具有的功能。SQLServer中的SQL語言。SQLServer的關係語言稱為Transact-SQL,它是當今最重要的資料庫語言SQL的變種。VFP中的SQL語言。由於VFP是從一個基於微型機的小型資料庫系統發展過來的,它的資料庫系統中在採用SQL標準的基礎上做出了相應的改變。4.1VFP系統概述

4.1.1VFP的發展4.1.2VFP的新功能4.1.3VFP的安裝4.1.4VFP的啟動和退出4.2VFP的用戶介面4.3VFP操作簡述4.3.1VFP操作方式4.3.2定制VFP的系統環境4.3.1VFP操作方式命令方式菜單方式4.3.2定制VFP的系統環境使用“選項”對話框使用配置檔用SET命令配置VFP改變VFP默認的日期格式4.4VFP資料庫和數據表的基本概念資料庫的概念數據表的概念4.5一個簡單VFP的實例以第2章建立的book表為例子要對數據表進行操作,首先打開數據表,在命令窗口中鍵入如下的命令:

結果如圖所示:4.6VFP命令簡述命令即為完成一個特定動作的指令。命令窗口是VFP的一種系統窗口。命令是用戶與VFP進行交互的主要媒介。在命令窗口中用戶可以完成如下操作

在按Enter鍵執行命令之前,按Esc鍵刪除命令文本。將游標移到以前命令行的任意位置並按Enter鍵可重新執行此命令。 選擇要重新處理的代碼塊,然後按Enter鍵可執行代碼塊中的命令。較長的命令語句可分為多行書寫,在分行的位置後鍵入分號,然後按Enter鍵,並在下一行輸入該命令語句的其餘部分。 可在命令窗口內或向其他編輯窗口中移動文本。此時,先用滑鼠選擇需要的文本,再將其拖動到需要的位置。 可在命令窗口內或向其他編輯窗口中複製文本,而不用使用“編輯”菜單的命令。此時,先用滑鼠選擇需要的文本,並按住Ctrl鍵,再將其拖動到需要的位置。 從格式菜單中選擇合適的命令,可改變字體、行間距和縮進方式。在命令窗口中單擊滑鼠右鍵,可以顯示一個帶有下列選項的快捷菜單

剪切、複製、粘貼可用來在命令窗口中移動或刪除文本,或向命令窗口中移動或刪除文本。 生成運算式可用來顯示運算式生成器窗口,在該窗口中可以使用命令、原義字串、字段或其他運算式來定義一個運算式。當單擊確定按鈕時。所生成的運算式就粘貼到命令窗口中。運行所選區域:可將命令窗口中選定的文本作為新命令執行。 清除可用來從命令窗口中移去以前執行命令的列表。 屬性可用來顯示“編輯屬性”窗口,在該窗口中,可以改變命令窗口中的編輯行為、跳位字元寬度、字體和語法著色選項。4.7VFP基本語言要素4.7.1數據類型4.7.2數據容器4.7.3運算符4.7.4運算式4.7.5函數4.7.1數據類型① 字元型② 貨幣型③ 數值型④ 日期型⑤ 日期時間型⑥ 邏輯型4.7.2數據容器1.常量數值型常量字元型常量日期型和日期時間型常量邏輯型常量貨幣型常量2.變數記憶體變數VFP變數的命名規則記憶體變數的賦值記憶體變數的顯示記憶體變數的清除字段變數系統變數3.數組數組的定義數組的賦值4.字段5.記錄6.對象4.7.3運算與運算符

1.算術運算與算術運算符算術運算的運算元必須是數值,運算的結果也是數值。算術運算符包括:① 括弧()② 乘方運算**或^③ 乘、除運算*,/④ 取模運算%⑤ 加、減運算+,-

運算順序是先乘方,再乘除與取模,後加減,同一級別要從左向右。有圓括號時圓括號內先算,若有圓括號嵌套,則按先內後外次序處理。2.關係運算與關係運算符

關係運算兩運算元類型必須一致,比較的結果是邏輯值。數值型數據按數值大小進行比較;日期型數據按年、月、日的先後進行比較;字元型數據按相應位置上兩個字元ASCII碼值的大小進行比較。關係運算符包括:① 小於、大於、等於運算<,>,=② 不等於運算<>或#或!=③ 小於或等於運算<=④ 大於或等於運算>=⑤ 字串全等比較運算==

邏輯運算的運算元須是能得出邏輯值的運算式,運算結果也是邏輯值。若運算元類型不符要求,將會出現類型的錯誤提示。關係運算常用來描述某種條件,而邏輯運算可用於描述複合的條件。若兩個條件中有一個成立便算成立,應使用或運算,而兩個條件同時成立才算成立,應使用與運算;至於非運算則用於否定一個條件。邏輯運算符包括:① 括弧()② 邏輯非NOT或!③ 邏輯與AND④ 邏輯或OR3.邏輯運算與邏輯運算符4.字元運算與字元運算符字元運算符包括:連接運算符和包含比較運算符。(1)連接符:連接運算符有兩個:+和-① +,用於連接兩個字串;② -,用於連接兩個字串,並將前一個字串尾部的空格移到結果字串的尾部。(2)包含比較運算符5.日期和日期時間運算與日期和日期時間運算符

① +,在一個日期或日期時間的基礎上加上天數或時間值(秒),結果還是日期或日期時間;② -,在一個日期或日期時間的基礎上減去天數或時間值(秒),結果還是日期或日期時間;如果減去日期或日期時間,結果是天數或時間值(秒)。4.7.4運算式

字元運算式日期運算式邏輯運算式與關係運算式數值運算式4.7.5函數

函數的組成函數的類型常用函數

5.1表的建立5.1.1設計表的結構5.1.2建立表結構5.1.3向表輸入記錄返回目錄5.1.1設計表的結構表中的記錄所包含的資訊是存放在各個字段中的,設計表的結構也就是創建若干字段來保存用戶收集的資訊,在收集完資訊後,具體設計表結構時有三點很重要:首先是為各字段取一個直觀易理解的字段名,其次是確定字段的數據類型,第三是根據字段取值範圍來確定字段寬度。1.字段的命名VFP中的自由表的字段名由不超過10個字母、數字或下劃線組成,而資料庫表允許使用長達128個字元的長字段名。為數據表的每一個字段起一個清晰、易懂的字段名,對於今後對數據表的操作將會起到事半功倍的作用。2.字段類型(1)字元型(2)貨幣型(3)數值型(4)浮點型(5)日期型(6)日期時間型(7)雙精度型(8)整型(9)邏輯型(10)備註型(11)通用型(12)字元型(二進位)(13)備註型(二進位)3.字段寬度(1)應用系統開發的要求 按實際數據所需要的長度來設定字段的寬度,(2)在VFP數據類型允許範圍內 在VFP中數據的長度都是有規定的,在設置字段長度時不要超過VFP所能接受的最大長度。

返回5.1.2建立表結構

表的創建有兩種方法:使用菜單方式創建表和在“命令窗口”中使用CREATE命令創建數據表。1.使用菜單方式創建表 兩種用菜單創建表的方法:用“表設計器”創建表和和”表嚮導”創建表。 用TableDesigner(表設計器)創建新表。 用TableWizard(數據表嚮導)創建新表。2.使用命令方式創建數據表 命令格式

CREATE[盤符][路徑][數據表檔案名]

說明: 此命令的功能是在指定的目錄下建立一個數據表檔。“數據表檔案名”由用戶指定,其擴展名是.dbf,如果省略了擴展名,則系統會自動加上默認的擴展名.dbf。如果不指定盤符和路徑,則在安裝VFP的目錄下建立數據表檔。

返回5.1.3向表輸入記錄

追加記錄的方法有三種:在“流覽”窗口進入“追加方式”;在“編輯”窗口進入“追加方式”;從“表”菜單中選擇“追加新記錄”(此方式每單擊一次菜單命令只能輸入一條記錄,如要輸入多條記錄則要多次執行此命令)。在本節主要介紹最常用的方式:在“流覽”窗口進入“追加方式”。操作步驟如下:打開數據表。單擊“顯示”菜單中的“流覽”命令,VFP彈出“流覽”窗口,當“流覽”窗口打開之後,VFP菜單增加了“表”菜單,而減少了“格式”菜單,顯示”菜單發生了變化;單擊“顯示”菜單中的“追加方式”,此時在“流覽”窗口中的底部添加一個空記錄行,當此條記錄輸入完成之後,在其底部又會出現一個空記錄行;向備註型字段Resume輸入資訊,可用滑鼠在此字段上雙擊,即彈出一個編輯窗口,在此窗口中輸入備註內容;由於VFP中的通用型字段一般用來存放圖片、照片等數據的,在向通用型字段輸入資訊前先拷貝一張圖片至剪貼板,然後雙擊通用型字段,彈出一個類似於備註型編輯窗口的窗口,在VFP系統的“編輯”菜單中選擇“粘貼”即可。

返回5.2表的顯示與維護

5.2.1數據表的打開與關閉5.2.2表的顯示

5.2.3表的修改和編輯返回目錄5.2.4表記錄指針的定位

5.2.5表記錄的追加和刪除5.2.6表的複製

5.2.7表記錄的篩選

6.2.1數據表的打開與關閉1.使用菜單方式打開數據表 操作步驟如下: ① 在“檔”菜單中選擇“打開”命令; ② 在“打開”窗口中的“檔類型”下拉框中選擇“表”類型; ③ 在“檔案名”欄中輸入要打開的數據表檔,並單擊“確定”。2.使用命令方式打開數據表

USE命令 命令格式

USE[路徑][INDEXS索引檔案名表][ALIAS別名][NOUPDATE]

說明 此命令的功能是打開一個現存的數據表,如記憶體中已打開了別的數據表,則先關閉存在的數據表,然後再向記憶體中放入當前數據表。

INDEXS打開一個指定的索引檔,如沒有指定,則不打開任何索引(關於索引將在下一章進行說明);

ALIAS為打開的數據表指定一個別名,以方便隨後的操作。

NOUPDATE是對數據表的一個保護命令,它的功能是禁止對數據表進行增加記錄、刪除記錄、修改記錄,也不能通過MODIFYSTRUCTURE命令對數據表結構進行改動。6.2.1數據表的打開與關閉

對數據表的操作完成後,應將其關閉以釋放其所佔用的系統資源,可直接在命令窗口中輸入命令USE,關閉當前數據表;或輸入CLOSEALL,此命令不但關閉當前的數據表,而且所有打開的資料庫、數據表、工作區等都將被關閉。

返回5.2.2表的顯示數據表結構的顯示

1.菜單方式 操作步驟如下: ①

打開一個數據表; ②

在“顯示”菜單中選擇“表設計器”。

2.命令方式 在命令方式下,可使用如下命令來實現:

LIST|DISPLAYSTRUCTURE

數據記錄的顯示數據記錄的顯示

1.菜單方式 查看一個數據表的記錄最方便的方法是使用菜單,選用“流覽”窗口,步驟是:打開一個數據表,然後在“顯示”菜單中選擇“流覽”命令即可。

2.命令方式 顯示數據表的記錄也可使用命令方式來實現,主要使用以下兩條命令:DISPLAY和LIST。

返回5.2.3表的修改和編輯

數據表在實際使用過程中,常根據不同的需要而進行修改,包括數據表結構的修改和數據表記錄的修改和編輯。數據表結構的修改 對數據表結構的修改可分為:修改表中的字段屬性或字段名、向表中插入新字段和刪除表中的字段三種操作。

1.修改字段 ① 打開數據表; ② 單擊“顯示”菜單中的“表設計器”; ③ 在彈出的“表設計器”中選擇“字段”選項卡; ④ 在相應的字段直接修改屬性或字段名。

2.數據表中增添新的字段 ① 同“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论