Visual FoxPro 數據庫程序設計教程結合作者多年數據庫應用課程的教學經驗,并且兼顧“全國計算機等級考試二級Visual FoxPro 數據庫程序設計考試大綱(2013 版)”的要求編寫而成。Visual FoxPro 數據庫程序設計教程以Visual FoxPro 6.0 為基礎,介紹關系數據庫管理系統的基礎理論及系統開發技術。主要內容包括關系數據庫管理系統的基本概念、VisualFoxPro 基礎知識、數據庫基礎操作、結構化查詢語言SQL、查詢與視圖、報表設計與應用、結構化程序設計、表單設計與應用、菜單設計與應用等。各章實例均參照全國計算機等級考試相關題目設計,另有《Visual FoxPro 數據庫程序設計實踐與題解》(主編梁敏)輔助配套教材。
Visual FoxPro 數據庫程序設計教程可作為普通高等院校各專業計算機公共課教材,也可作為全國計算機等級考試(二級Visual FoxPro)的培訓教材,還可作為數據庫應用系統開發人員的參考書。
目錄
前言第 1章
1.1
1.2
1.3
第 2章
2.1
2.2
2.3
2.4
2.5
概述 1 數據庫系統的基本概念 1
1.1.1
數據、數據庫、數據庫管理系統和數據庫系統 1
1.1.2
數據管理技術的發展 2
1.1.3
數據庫的特點 3
1.1.4
數據庫系統體系結構 3 數據模型 4 關系數據理論基礎 7
1.3.1
基本的關系術語 7
1.3.2
關系模型的完整性約束條件 8
1.3.3
關系數據操縱 9
Visual FoxPro基礎知識 10 Visual FoxPro簡介 10
2.1.1
Visual FoxPro集成環境的使用 10
2.1.2
文件類型與創建 12
2.1.3 Visual FoxPro系統環境的
配置 13 Visual FoxPro的數據類型 15 常量與變量 18
2.3.1
常量 18
2.3.2
變量 20 運算符與表達式 25
2.4.1
數值運算符與數值表達式 25
2.4.2
字符運算符與字符表達式 26
2.4.3
日期、日期時間運算符與日期、日期時間表達式 26
2.4.4
關系運算符與關系表達式 27
2.4.5
邏輯運算符與邏輯表達式 27 函數 28
2.5.1
數值函數 29
2.5.2
字符函數 32
2.5.3
日期和時間函數 35
2.5.4
數據類型轉換函數 37
2.5.5
數據庫與表函數 39
2.5.6
其他函數 41
第 3章數據庫基礎操作 46
3.1
Visual FoxPro項目管理器 46
3.1.1
項目文件的建立 46
3.1.2
項目管理器的界面 46
3.1.3
項目管理器的使用 48
3.2
Visual FoxPro 數據庫 49
3.2.1
基本概念 49
3.2.2
建立數據庫 50
3.2.3
打開數據庫 50
3.2.4
修改數據庫 51
3.2.5
關閉數據庫 51
3.2.6
刪除數據庫 51
3.2.7
數據庫實例操作 51
3.3
表結構 53
3.3.1
數據庫表結構的建立 53
3.3.2
數據庫表結構的修改 54
3.3.3
自由表 56
3.3.4
數據庫表操作實例 57
3.4
表記錄 61
3.4.1
在瀏覽器中操作表 61
3.4.2
操作表的相關命令 63
3.4.3
表記錄定位 63
3.4.4
表記錄實例操作 64
3.5
索引 65
3.5.1
基本概念 65
3.5.2
索引的建立 66
3.5.3
索引的使用 67 5.1.2 查詢設計實例 118
3.5.4
索引的刪除 68 5.2 視圖 124
3.5.5
索引的相關命令 68 5.2.1 視圖的概念 124
3.6
數據完整性 69 5.2.2 使用 SQL命令建立視圖 124
3.6.1
實體完整性 69 5.2.3 使用視圖設計器建立視圖 126
3.6.2
數據庫表高級屬性及域第 6章報表設計與應用 128 完整性設置 69 6.1 報表概述 128
3.6.3
永久聯系與參照完整性 72 6.1.1 報表的常規布局 128
3.7
工作區 75 6.1.2 報表向導 128
3.7.1
基本概念 75 6.2 報表設計器 133
3.7.2
工作區操作命令 75 6.2.1 報表帶區 134
3.7.3
數據工作期 76 6.2.2 工具欄的使用 134
3.7.4
表之間的關聯 77 6.2.3 預覽報表 135
3.8
附表 78 6.3 報表設計實例 135
第 4章結構化查詢語言 SQL 81 第 7章結構化程序設計 143
4.1
SQL概述 81 7.1 程序文件 143
4.2
數據定義語言 81 7.1.1 程序的書寫規則 143
4.2.1
建立表的命令 (CREATE) 81 7.1.2 程序文件的建立、編輯和
4.2.2
修改表結構的命令 (ALTER) 83 運行 143
4.2.3
刪除表的命令 (DROP) 85 7.1.3 程序設計的原則和方法 144
4.3
數據操縱語言 85 7.2 程序的基本結構 144
4.3.1
追加記錄的命令 (INSERT) 85 7.2.1 順序結構 144
4.3.2
刪除記錄的命令 (DELETE) 86 7.2.2 分支(選擇)結構 145
4.3.3
更新記錄的命令 (UPDATE) 86 7.2.3 循環結構 148
4.4
數據查詢 87 7.3 子程序、過程與自定義函數 151
4.4.1
投影查詢 88 7.3.1 子程序 152
4.4.2
條件查詢 90 7.3.2 過程 152
4.4.3
統計和分組統計 93 7.3.3 自定義函數 153
4.4.4
查詢排序 100 7.3.4 內存變量的作用域和參數
4.4.5
查詢結果的處理 102 傳遞 154
4.4.6
多表查詢 104
4.4.7
嵌套查詢 109 第 8章表單設計與應用 156
4.4.8
超連接查詢 113 8.1 面向對象基本概念 156
4.4.9
集合的并運算查詢 116 8.1.1 對象與類 156
8.1.2 容器與控件 158 第 5章查詢與視圖 118 8.1.3 對象的引用 158
5.1 查詢 118 8.1.4 事件與方法 159
5.1.1 查詢設計器 118
8.2 表單的創建與運行 160 8.4.7 列表框 (List) 173
8.2.1 創建表單 160 8.4.8 組合框 (Combo) 175
8.2.2 運行表單 161 8.4.9 表格(Grid) 176
8.3 表單的操作 161 8.4.10 頁框(PageFrame) 181
8.3.1 表單設計器 161 8.4.11 計時器(Timer) 183
8.3.2 常用表單屬性 162 第 9章菜單設計與應用 185
8.3.3 常用表單事件與方法 163 9.1 菜單概述 185
8.3.4 數據環境 163 9.1.1 菜單的結構 185
8.4 常用控件 165 9.1.2 菜單的類型 185
8.4.1 標簽 165 9.2 下拉式菜單設計 186
8.4.2 文本框 (Text)和編輯框 9.2.1 菜單設計的一般步驟 186 (EditBox) 166 9.2.2 “菜單設計器”窗口 187
8.4.3 命令按鈕 (Command)和命令9.2.3 “顯示”菜單 191 按鈕組 (CommandGroup) 167
8.4.4 選項按鈕組 (OptionGroup) 169 9.3 快捷菜單設計 193
9.4 為頂層表單添加菜單 197
8.4.5 復選框 (Check) 170
8.4.6 微調按鈕 (Spinner) 172 參考文獻 200
第 1章概述
信息資源已經成為各個部門的重要財富和資源。數據庫能夠有效、合理地存儲各種數據,為有關應用準確、快速地提供有用的信息,是數據處理的重要工具,是管理信息系統 (MIS)、辦公信息系統 (OIS)和決策支持系統 (DSS)等應用系統的核心部分。數據庫技術是計算機領域中最重要的技術之一,其應用已滲透到人類社會各個領域,并正在改變著人們的生活方式和工作方式。因此,我們有必要學習和掌握數據庫系統的原理和技術,用以解決各種計算機應用中的實際問題。
1.1 數據庫系統的基本概念
在系統介紹數據庫的基本概念之前,首先介紹一些數據庫最常用的術語和基本概念。
1.1.1數據、數據庫、數據庫管理系統和數據庫系統
1.數據
信息與數據是兩個既有區別又有聯系的概念。歸納起來,信息、數據及其聯系可以這樣來定義。
1)信息
信息(Information)是指現實世界事物的存在方式或運動狀態的反映。通俗地講,信息是經過加工并對人類社會實踐和生產以及經營活動產生決策影響的數據。
2)數據描述事物的符號記錄稱為數據(Data)。描述事物的符號可以是數字,也可以是文
字、圖形、圖像、聲音、語言等,數據有多種表現形式,它們都可以經過數字化后存入計算機。
3)信息與數據的關系
不是所有數據都能成為信息,只有經過提煉和濃縮之后,具有新知識的數據才能成為信息。不經過加工處理的數據只是一堆死材料,對人類活動產生不了決策作用。數據經過加工處理之后所得到的信息,仍然以數據的形式出現,此時的數據是信息的載體;而信息是數據的內涵,是數據的語義解釋。
2.數據庫數據庫(DataBase,DB)是長期存儲在計算機內的、有組織的、可共享的數據集合。數
據庫中的數據按一定的數據模型組織、描述和存儲,具有較小的冗余度、較高的數據獨立性和易擴展性,并可為各種用戶共享。
3.數據庫管理系統
數據庫管理系統 (DataBase Management System,DBMS)是數據庫系統中專門用于數據管理的軟件,是用戶與數據庫的接口。它的主要功能包括以下幾個方面。
1)數據庫定義功能
數據庫管理系統提供數據描述語言 (Data Defined Language,DDL)及其翻譯程序,用于定義數據庫結構 (模式及模式間映射 )、數據完整性和保密性約束等。
2)數據庫操縱功能
數據庫管理系統提供數據操縱語言 (Data Manipulation Language,DML)及其翻譯程序,用于實現對數據庫數據的查詢、插入、更新和刪除等操作。
3
)數據庫運行和控制功能
包括數據安全性控制、數據完整性控制、多用戶環境的并發控制等。
4
)數據庫維護功能
包括數據庫數據的載入、轉儲和恢復,數據庫的維護和數據庫的功能及性能分析和監測等。
4.數據庫系統數據庫系統 (DataBase System,DBS)是指在計算機系統中引入數據庫后的系統,一般由數據庫、數據庫管理系統 (及其開發工具)、應用系統、數據庫管理員和用戶構成。應當
指出的是,數據庫的建立、使用和維護等工作只靠一個 DBMS遠遠不夠,還要有專門的人員來完成,這些人員被稱為數據庫管理員 (DataBase Administrator,DBA)。
1.1.2數據管理技術的發展
數據管理技術是指對數據進行分類、組織、編碼、存儲、檢索和維護的技術。在計算機環境下,數據管理技術經歷了從低級到高級的三個發展階段。
1.人工管理階段(20世紀 50年代中期以前)
在人工管理階段,數據處理的主要任務是數據量很少的科學計算,沒有專門的軟件對數據進行管理,在程序設計中,既要考慮程序的處理過程,又要考慮數據的定義和組織,程序和數據總是聯系在一起的。
人工管理階段的特點:數據不保存,程序運行結束后數據就丟失;數據由應用程序自己管理,沒有相應的軟件系統負責數據的管理工作;數據不能共享,程序和數據是一個整體,一個程序中的數據無法被其他程序共享;數據不具有獨立性,一旦修改了數據的存儲結構,則其程序也必須修改。
2.文件系統管理階段 (20世紀 50年代后期至 60年代中期)
在文件系統階段,數據處理的主要任務是科學計算和簡單的數據管理,有了專門管理數據的軟件,即文件系統。數據已經從程序中分離出來,組成相互獨立的數據文件并能保存,程序和數據之間具備一定的獨立性。
文件系統的特點:數據能長期保存,能反復地進行查詢、修改、插入、刪除操作;由文件系統進行數據管理,程序和數據之間由軟件提供的存取方法,如函數調用等方式進行轉換,使數據和程序之間有了一定的獨立性。文件系統存在的不足:數據的冗余度大,不同的應用程序使用相同的數據時,就要建立不同的數據文件,而內容卻是相同的;數據的獨立性差,數據的組織形式依賴于應用程序,相互有影響,不利于系統移植、系統擴充、系統維護等工作;缺乏對數據的統一控制管理,數據的完整性和數據的安全性很難得到保證,各個數據文件需要有管理軟件實施統一控制管理;不支持對文件的并發訪問。
3.數據庫系統管理階段 (20世紀 60年代后期開始 )
在數據庫系統階段,數據處理的主要任務是各種科學計算和大量的、復雜的數據管理,有了統一管理數據的專門軟件系統,即數據庫管理系統。數據與程序已經完全獨立,大大降低了數據的冗余度,實現了多用戶、多應用的數據共享。
1.1.3 數據庫的特點
數據庫系統的出現,是計算機數據處理技術的重大進步,它具有以下基本特點。
1.數據結構化
在數據庫系統中,數據是按照特定的模型進行組織的,數據文件中記錄的內容,不僅能描述數據本身,而且能表示數據之間的聯系。數據庫系統實現整體數據的結構化,這種特征能夠反映現實世界的數據聯系,能適應大批量數據管理的客觀需要。
2.數據共享、冗余度低
數據共享是數據庫系統的目的,也是它的重要特點。在數據庫系統中,數據是面向整個系統的,可為所有訪問系統的用戶共享。數據冗余是指各數據文件中有相互重復的數據。從理論上講,可以消除冗余,但實際上,常常允許部分冗余存在,以提高檢索速度。
3.數據獨立性高
在數據庫系統中,數據庫的建立獨立于程序,數據庫系統通過三級模式和兩種映像功能,使數據具有物理獨立性和邏輯獨立性。物理獨立性是指當數據的存儲結構 (也稱存儲模式或內模式 )改變時,通過映像,數據的邏輯結構 (也稱邏輯模式或模式 )不變,從而不必修改應用程序。邏輯獨立性是指當數據的邏輯結構改變時,通過映像,數據的用戶模式 (也稱子模式或外模式 )不變,從而也不必修改應用程序。
4.數據庫管理系統(DBMS)統一管理和控制
通過 DBMS軟件包統一管理數據,實現多用戶的數據共享和并發操作,并確保數據的安全性和數據的完整性,包括數據庫恢復的功能。
1.1.4數據庫系統體系結構
數據庫的體系結構是數據庫系統的一個總框架。盡管實際數據庫軟件產品種類繁多,使用的數據庫語言各異,基礎操作系統不同,采用的數據結構模型相差甚大,但是絕大多數數據庫系統在總體結構上都具有三級模式的結構特征。數據庫的三級模式結構由外模式、模式和內模式組成,如圖 1-1所示。
圖 1-1 數據庫系統的體系結構
(1)
外模式:又稱子模式或用戶模式,是模式的子集,是數據的局部邏輯結構,也是數據庫用戶看到的數據視圖。
(2)
模式:又稱邏輯模式或概念模式,是數據庫中全體數據的全局邏輯結構和特性的描述,也是所有用戶的公共數據視圖。
(3)
內模式:又稱存儲模式,是數據在數據庫系統中的內部表示,即數據的物理結構和存儲方式的描述。
數據庫系統的三級模式是對數據的三級抽象。為了實現三個抽象層次的轉換,數據庫系統在三級模式中提供了兩次映像:外模式 /模式映像和模式 /內模式映像。所謂映像,就是存在某種對應關系。
外模式到模式的映像,定義了外模式與模式之間的對應關系。模式到內模式的映像,定義了數據的邏輯結構和物理結構之間的對應關系。正是由于這兩級映像,使數據庫管理的數據具有兩個層次的獨立性:物理獨立性和邏輯獨立性。
1.2 數據模型
模型是對現實世界某個事物特征的模擬和抽象。由于用計算機來研究處理現實世界的具體事物時,必須先把具體事物轉換為抽象的模型,再轉換為計算機可以處理的數據模型。所以,數據模型是抽象、表示、處理現實世界中事物的基本工具。
1.信息的三個世界
信息的三個世界是指現實世界、信息世界和計算機世界。現實世界是指客觀存在的事物,它是信息之源,是設計和建立數據庫的出發點,也是使用數據庫的最終歸宿。信息世界,又稱觀念世界,是現實世界中的客觀事物在人頭腦中的反映,客觀事物在信息世界中稱為實體,而反映事務間關系的稱為實體模型或概念模型。計算機世界是指信息世界中的信息數據轉化成能被計算機處理的數據,又稱數據世界。實體模型在數據世界中以數據模型描述。現實世界、信息世界和計算機世界這 3個領域是由客觀到認識、由認識到使用管理的 3個不同層次,后一領域是前一領域的抽象描述。現實世界的事物及聯系,通過抽象成為信息世界的概念模型,而概念模型經過數據化處理轉換為數據模型,其變化關系如圖 1-2所示。
圖 1-2 3個世界的變化關系
2.概念模型
概念模型是數據庫設計人員在認識現實世界中的實體及實體間聯系后進行的一種抽象,是用戶與數據庫設計人員之間進行交流的語言。它獨立于任何數據庫管理系統,但是又很容易向數據庫管理系統支持的邏輯數據模型轉換,數據模型是借助概念模型 (或信息模型)轉化而來的。概念模型中涉及以下概念。
(1)
實體:客觀存在并且可以相互區分的事物稱為實體。它可以指人,如一名教師、一個學生等;也可以指物,如一本書、一張桌子、一塊黑板等;也可以指抽象的事件,如借書、獎勵、交通法規等。它還可以指事物與事物之間的聯系,如學生選課、客戶訂貨、顧客購物等。
(2)
屬性與屬性值:用于描述實體的特性稱為實體的屬性,如職工實體用職工號、姓名、性別、出生日期等若干個屬性描述。屬性的具體取值稱為屬性值,用于刻畫一個實體,如屬性值的組合 (10023,張紅芳,女,1965-10-24)就描述了一個具體的職工。每個屬性的特定取值范圍稱為值域,如性別的值域為 (男,女)。
(3)
實體型與實體值:由上可見,屬性值所組成的集合表征一個實體,相應的這些屬性的集合表征了一種實體的類型,稱為實體型,如(職工號 ,姓名,性別,出生日期)表征職工實體的實體型。實體值是指某個具體實體的取值,如 (10023,張紅芳 ,女,1965-10-24)就是一個實體值。
(4)
實體集:同種類型實體的集合稱為實體集。例如,全體記者就組成一個實體集。在 Visual FoxPro中,用“表”表示同一類實體,即實體集,用“記錄”表示一個具體的實體,用“字段”表示實體的屬性,表的結構對應于實體型。
(5)
碼:在眾多屬性中能夠唯一標識或確定一個實體的屬性或屬性組稱為實體的碼,如學生實體的碼應當是“學號”。
(6)
聯系:聯系是指反映現實世界事物之間的相互關系。一個實體內部各屬性之間的相互聯系稱為實體的內部聯系。各實體集之間的相互聯系稱為實體的外部聯系。這些聯系可以分為一對一、一對多、多對多 3種類型。
①一對一聯系 (記作 1∶1):一個實體集中的每一個實體,在另一個實體集中最多只能找到一個可以與它相對應的實體;反之亦然,稱這兩個實體集之間存在著一對一聯系。比如,一個企業只有一位總經理,并且一位總經理只能管理一個企業,所以企業實體集和總經理實體集之間就是一對一聯系。
②一對多聯系 (記作 1∶n):一個實體集 X中的每一個實體,在另一個實體集 Y中能夠找到多個可以與它相對應的實體;反之,在另一個實體集 Y中的每一個實體,卻只能在實體集 X中找到一個可以與它相對應的實體,稱這兩個實體集之間存在著一對多聯系。比如,一個企業有許多職工,但每一個職工只能工作 (含人事關系)在一個企業,所以企業實體集和職工實體集之間就是一對多聯系。
③多對多聯系 (記作 m∶n):一個實體集 X中的每一個實體,在另一個實體集 Y中能夠找到多個可以與它相對應的實體;反之,在另一個實體集 Y中的每一個實體,也能在實體集 X中找到多個可以與它相對應的實體,稱這兩個實體集之間存在著多對多聯系。比如,一個學生可以選修多門課程,而每一門課程可以被多個學生選修,所以學生實體集和課程實體集之間就是多對多聯系。
描述概念模型的方法很多,其中最常用的是實體 -聯系方法 (Entity-Relationship Approach),簡稱 E-R方法。 E-R方法的規則是:用長方形表示實體,并在框內寫上實體名;用橢圓表示實體屬性,并用無向邊(即直線)把實體與其屬性連接起來;用菱形表示實體間的聯系,菱形框內寫上聯系名;用無向邊把菱形分別與相關的實體相連接,在無向邊旁標上聯系的類型 (1∶1、1∶n、m∶n)。若實體之間的聯系也具有屬性,則把屬性和菱形也用無向邊連接上。上述 3種聯系的簡單 E-R方法表示如圖 1-3所示。