第一篇:《Visual FoxPro 數據庫程序設計》教學總結
《Visual FoxPro 數據庫程序設計》
教學總結
Visual FoxPro 數據庫程序設計作為國家計算機等級考試的一部分,其重要性不言而喻。該課程的突出特點是可視化操作居多,簡單、易于理解,結合本人的教學過程及同學們的學習特點,主要有以下兩點值得注意的地方:
1.學生學習的主動性有待加強。學生對該課程的接受相當快,很容易理解和上手,但通常學生們在上完課之后,幾乎不會再利用業余時間復習,這嚴重影響了輔導的有效性。
2.VFP課程作為一種可視化的軟件系統,其界面操作是很重要的一部分,如果條件允許,建議在多媒體教室進行該課程的講解。相信直觀的多媒體教學方式能使教學效果事半功倍。以上是本人考慮的有待改進的地方,如有偏頗,望諒解。當然,鑒于榮宇教育嚴格的管理制度和學生考試意識的濃重,相信本次考試會取得比較良好的成績。
《Visual FoxPro 數據庫程序設計》
考點總結
一 VFP基礎知識
1.基本概念—選擇和填空題
數據庫,數據模型,數據庫管理系統,類和對象,事件,方法 2.關系數據庫
(1)關系數據庫:關系模型,關系模式,關系,元組,屬性,域,主關鍵字和外部關鍵字(2)關系運算:選擇,投影,連接
(3)數據的一致性和完整性:實體完整性,域完整性,參照完整性—掌握完整性與索引類型之間的對應關系,以及不同索引類型的作用
3.VFP的基本數據元素:
(1)常量,變量,表達式--掌握不同類型常量所占的字節數
(2)常用函數:字符處理函數,數值計算函數,日期時間函數,數據類型轉換函數,測試函數--掌握不同函數的返回值類型 二 VFP數據庫的基本操作
1.數據庫和表的建立、修改與有效性校驗:--上機題的第一題,必須掌握
(1)表結構的建立與修改
(2)表記錄的瀏覽、增加、刪除與修改(3)創建數據庫,向數據庫添加或移除表(4)表的索引:主索引、候選索引、普通索引、唯一索引 2.多表操作(1)選擇工作區
(2)建立表之間的關聯:一對一的關聯,一對多的關聯。(3)設置參照完整性(4)建立表間臨時關聯
3.建立視圖與數據查詢—上機題的第二題,必須掌握(1)查詢文件的建立、執行與修改(2)視圖文件的建立、查看與修改(3)建立多表查詢(4)建立多表視圖
三 SQL(筆試部分最重要的章節,是二級考試的核心內容,必須熟練掌握,機試部分也有所體現)1.SQL的數據定義功能:(1)create table(2)alter table 2.SQL的數據修改功能:(1)DELETE(2)INSERT(3)UPDATE 3.SQL的數據修改功能:(1)簡單查詢(2)嵌套查詢
(3)連接查詢:內連接,外連接,左連接,右連接,完全連接(4)分組域計算查詢(5)集合的并運算
四 項目管理器、設計器和向導的使用 1.使用項目管理器:(1)使用“數據”選項卡(2)使用“文檔”選項卡 2.使用表單設計器:--上機題(1)在表單中加入和修改控件對象(2)設定數據環境 3.使用菜單設計器:(1)建立主選項(2)設計子菜單
(3)設定菜單選項程序代碼
4.使用報表設計器--上機題的最后一題,但出的幾率不大(1)生成快速報表(2)修改報表布局(3)設計分組報表(4)設計多欄報表
復習建議:
筆試部分:在熟悉教材的基礎上,反復做培訓機構發的套題,做完套題后,再回頭看教材,然后再回頭重新做題,如此在不斷的反復中查漏補缺。
機試部分:在發的模擬光盤里有上機樣本試題,附有視頻演示,熟悉考試的機試環境。
第二篇:VF數據庫程序設計教案
Visual Foxpro數據庫程序設計教案
姓名:
李運娣
系別:
計算機
第1章 Visual FoxPro 數據庫基礎
本章重點與學習目標:
? 了解數據庫系統的相關概念
? 數據、數據庫、數據庫管理系統、數據庫系統 ? 數據庫管理系統發展過程
? 概念模型以及常用的數據模型—層次模型、網狀模型、關系模型
? 掌握關系數據庫
? 關系模型的相關屬于
? 數據庫設計基礎
? 數據庫設計的步驟和過程
? 了解VF系統的發展過程
? 數據庫管理系統的發展
? VF的發展簡史及了解Visual FoxPro系統的特點 ? 掌握VF系統的啟動與退出方法 ? 熟悉VF系統的用戶界面
? 熟悉VF項目管理器
? 創建新項目
? 項目管理器窗口的各類選項卡
教學器材:
多媒體教學
本章課時: 3學時
§1.1 數據庫基礎知識
§1.1.1 計算機數據管理的發展
1.數據與數據處理 數據是指存儲在某一種媒體上能夠識別的物理符號;數據處理是指將數據轉換成信息的過程。2.計算機數據管理
數據管理:是指對數據的組織、分類、編碼、存儲、檢索、維護等,它是數據處理的中心問題。
數據管理技術的發展過程:人工管理階段(40年代中--50年代中);文件系統階段(50年代末--60年代中);數據庫系統階段(60年代末--現在)。
§1.1.2 數據庫系統
1.數據庫有關概念
數據庫(DataBase):指數據庫系統中以一定的方式將相關數據組織在一起,存儲在外存儲設備上形成的、為多個用戶共享、與應用程序相互獨立的相關數據集合。
數據庫管理系統(DBMS): 用于建立、使用和維護數據庫的系統軟件。數據庫管理系統對數據庫進行統一的管理和控制,以保證數據庫的安全性和完整性。
數據庫應用系統:數據庫應用系統簡稱數據庫系統,是指系統開發人員利用數據庫系統資源開發出來的,面向某一類實際應用的應用軟件系統。
數據庫管理員(DBA):負責全面管理和實施數據庫控制和維護的技術人員。
2.數據庫系統的特點
數據庫系統是指引進數據庫技術后的計算機系統,實現有組織地、動態地存儲大量相關數據,提供數據處理和信息資源共享的便利手段。特點:實現數據共享,減少數據冗余;采用特定的數據模型;具有較高的數據獨立性;有統一的數據控制功能
§1.1.3 數據模型
1.實體的描述:實體的定義、屬性、實體集和實體型 2.實體間聯系及聯系的類型
定義:實體之間相對應的關系稱為聯系,它反映了現實世界事物之間的相互關聯。
類型:一對一聯系;一對多聯系;多對多聯系 3.數據模型簡介
數據模型是在數據庫領域中定義數據及其操作的一種抽象表示。類型:網狀模型;層次數據模型;關系模型
§1.2 關系數據庫 §1.2.1 關系模型
1.關系定義的定義及相關術語
一個關系就是一張二維表,通常將一個沒有重復行、重復列的二維表看成一個關系,每個關系都有一個關系名。
相關術語:元組、屬性、域、關鍵字、外部關鍵字 2.關系的特點
? 關系必須規范化
? 二維表中的每一列都有唯一的字段名且取值性質相同 ? 二維表中不允許出現完全相同的兩行
? 二維表中可以任意交換行的順序和列的順序 3.實際關系模型
一個具體的關系是由若干個關系模式組成。在VF中,一個數據庫中包含相互之間存在聯系的多個表。這個數據庫文件就代表一個實際的關系模型。為了反映出各個表所表示的實際實體之間的聯系,公共字段名往往起著“橋梁”的作用。
? 例1.1 部門-職工-工資關系模型 ? 例1.2 圖書-讀者-借閱關系模型
§1.2.2 關系運算
1.傳統的集合運算:交、并、差 2.專門的關系運算
選擇定義:從一個關系模式中找出滿足給定條件的記錄的操作稱為選擇,選擇是從行的角度進行的運算,相當于對關系進行水平分解。
投影定義:投影運算從關系中選取若干屬性形成一個新的關系。連接定義:將兩個關系模式的若干屬性拼接成一個新的關系模式的操作,對應的新關系中,包含滿足連接條件的所有元組。§1.3 數據庫設計基礎 §1.3.1數據庫設計步驟
1.設計原則
? 概念單一化”一事一地”原則 ? 避免在表之間出現重復字段
? 表中的字段必須是原始數據和基本數據元素 ? 用外部關鍵字保證有關聯的表之間的聯系 2.設計步驟
? 需求分析
? 確定需要的表 ? 確定所需字段 ? 確定聯系 ? 設計求精
§1.3.2 數據庫設計過程
1.需求分析:用戶需求主要包括信息需求、處理需求、安全性和完整性要求。
2.確定需要的表:數據庫設計過程中最主要的一步就是確定需要的表,分析的過程實際上就是對收集到的數據進行抽象的過程。3.確定所需字段 4.確定聯系 5.設計求精
§1.4 Visual FoxPro系統概述
Visual FoxPro6.0是微軟公司1998年發布的可視化編程語言集成包Visual Studio6.0中的一員,是一種用于數據庫結構設計和應用程序開發的功能強大的面向對象的計算機數據庫軟件。
§1.4.1 Visual FoxPro 6.0的安裝與啟動
1.安裝步驟
將Visual FoxPro 6.0系統光盤插入CD-ROM驅動器,打開光盤,找到setup.exe文件,雙擊該文件,進行安裝向導。按照安裝向導的提示,單擊“下一步”按鈕根據提示進行安裝。2.啟動系統
單擊Windows的“開始”按鈕,選擇“程序”“Microsoft Visual FoxPro 6.0”“Microsoft Visual FoxPro 6.0”菜單項。§1.4.2 Visual FoxPro 6.0的主界面
1.菜單操作
下拉式菜單項:
主菜單欄中包括8個下拉式菜單項:文件(F)、編輯(E)、顯示(V)、工具(T)、程序(P)、項目(Q)、窗口(W)、幫助(H)。2.命令操作
顯示與隱藏命令窗口的方法:
單擊命令窗口右上角的關閉按鈕可以關閉它,然后通過“窗口”菜單下的“命令窗口”選項可以重新打開。3.項目管理器窗口
項目管理器是VF中各種數據和對象的主要組織工具。一個項目是文件、數據、文檔和對象的集合。§1.4.3 工具欄的使用
1.顯示或隱藏工具欄 2.定制工具欄
3.修改現有工具欄
§1.4.4 Visual FoxPro 6.0的配置
為了使系統滿足個性化的要求,可以定制自己的系統環境。在VF中可以使用“選項”對話框或SET命令進行附加的配置設定,這里主要用“工具”菜單下的“選項”進行設定。§1.5 項目管理器
項目是指文件、數據、文檔和對象的集合。“項目管理器”是VF中處理數據和對象的主要組織工具,它為系統開發者提供了極為便利的工作平臺,一是提供了簡便的、可視化的方法來組織和處理表、數據庫、表單、報表、查詢和其他一切文件;二是在項目管理器中可以將應用系統編譯成一個擴展名為.app的應用文件或.exe的可執行文件。§1.5.1創建項目
1.創建新項目
2.打開和關閉項目 3.各類文件選項卡 §1.5.2 使用項目管理器
1.創建文件 2.添加文件 3.修改文件 4.移去文件
5.其他按鈕:“瀏覽”按鈕、“關閉”和“打開”按鈕、“預覽”按鈕、“運行”按鈕、“連編”按鈕
§1.5.3 定制項目管理器
1.移動、縮放和折疊 2.拆分項目管理器 3.停放項目管理器
§1.6 向導、設計器、生成器簡介
VF提供真正的面向對象的程序設計工具,使用它的各種向導、設計器和生成器可以更加簡便、快速、靈活地進行應用程序開發。§1.6.1 Visual FoxPro的向導
1.啟動向導 2.使用向導
3.修改用向導創建的項 §1.6.2Visual FoxPro的設計器
1.各種設計器:表設計器、數據庫設計器、報表設計器、查詢設計器、視圖設計器、表單設計器、菜單設計器、數據環境設計器、連接設計器
2.打開Visual FoxPro設計器
§1.6.3Visual FoxPro的生成器
各種生成器:表單生成器、表格生成器、編輯框生成器、列表框生成器、文本框生成器、組合框生成器、命令按鈕組生成器、選項按鈕組生成器 1.啟動“表單生成器”
2.對表單中的控件使用相應的生成器 3.使用自動格式生成器來設置控制格式 4.使用參照完整性生成器
本章小結:
本章首先介紹了數據庫系統的有關概念、數據庫管理系統的功能,然后介紹了VF6.0的初步知識,包括其用戶界面、工具欄的使用和系統配置。通過本章的學習希望對數據庫的相關知識有所了解,同時也對VF6.0有初步的認識,為后面的進一步學習打下基礎。
本章作業:
1.數據庫管理員的職責包括哪些方面? 2.簡述數據庫系統的特點。3.簡述關系的特點。
4.數據庫有哪些設計原則。5.簡述數據庫的設計步驟。6.創建項目的方法有哪些?
教學后記:
第2章 VF程序設計基礎
本章重點與學習目標:
? 掌握VF常用數據類型
? 字符型、數值型、浮點型、雙精度、整型等
? 掌握VF常量、變量的定義與使用方法及運算符和表達式
? 常量類型、變量類型及使用
? VF運算符及優先級、VF各種表達式
? 了解VF程序設計基本知識及基本程序結構
? 程序文件的建立與編輯和程序的調用方法
? 程序的三種結構:順序結構、分支結構、循環結構
? 掌握VF的過程與函數的定義及運用方法
? 子過程與過程的定義及操作 ? 自定義函數的運用
? 掌握變量的作用域與參數的傳遞
? VF變量的作用域 ? VF參數的傳遞
教學器材:
多媒體教學
本章課時:7學時
§2.1 常量與變量
VF主要數據類型有:字符型、數值型、貨幣型、日期型、日期時間型、邏輯型、備注型、通用型。§2.1.1 常量
常量是指在所有的操作過程中保持不變的數。
VF主要有:數值型常量、貨幣型常量、字符型常量、日期型常量、日期時間型常量和邏輯型常量。§2.1.2 變量
變量是能夠隨時更改的。每個變量有一個變量名。
命名規則:變量名以字母,漢字和下劃線開頭,后接字母、數字、漢字和下劃線構成。
VF變量分為字段變量和內存變量
數組:與內存變量不同,數組在使用之前一般要DIMENSION或DECLARE命令顯式創建,并且規定數組是一維數組還是二維數組,數組名和數組大小。
數組創建數組的格式:
DIMENSION <數組名>(<下標上限1> [,<下標上限2>])[,?] DECLARE <數組名>(<下標上限1> [,<下標上限2>])[,?] §2.1.3 內存變量常用命令
1.內存變量的賦值
格式1 :STORE <表達式>TO<內存變量名表> 格式2:<內存變量名>=<表達式>
2.表達式的顯示
格式1 :?[<表達式表>] 格式2:??[<表達式表>] 3.顯示內存變量
格式1: LIST MEMORY[LIKE<通配符>][TO PRINTER|TO FILE<文件名>] 2: DISPLAY MEMORY[LIKE<通配符>][TO PRINTER|TO FILE<文件名>] 4.清除內存變量
格式1 :CLEAR MEMORY 格式2:RELEASE<內存變量名表> 格式3 :RELEASE ALL [EXTENDED] 格式4:RELEASE ALL [LIKE<通配符>| EXCEPT<通配符>] 5.表與數組之間的數據傳遞
將表的當前記錄復制到數組 格式1 :SCATTER [ FIELDS<字段名表>][ MEMO ] TO <數組名> [ BLANK ] 格式2:SCATTER [FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>] [ MEMO ] TO<數組名> [ BLANK ] §2.2 表達式
表達式是由常量、變量和函數通過特定的運算符連接起來的式子。§2.2.1 數值、字符與日期時間表達式
數值表達式又叫做算術表達式,是最容易理解的一種表達式。數值型數據可以是數值型常量或者變量。
運算符包括:()、**或^、*、/、%、+、-§2.2.2 關系表達式
稱為簡單邏輯表達式,它由關系運算符將兩個運算對象連接起來形成。運算符包括:<、<=、>、>=、=、==、<>或#或!=、$ §2.2.3 邏輯表達式
由邏輯運算符將邏輯型數據連接形成的,其運算符結果仍然是邏輯數據。運算符包括:.NOT.或!(邏輯非)、.AND.(邏輯與)和.OR.(邏輯或)。§2.2.4 運算符優先級
表達式中出現了多種不同類型的運算符時,其運算符優先級如下:算術運算符>字符運算符和日期時間運算符>關系運算符>邏輯運算。可以用括號改變優先順序,強令表達式的某些部分優先運行。括號內的運算總是優先于括號外的運算。對于多重括號,總是由內到外。§2.3 常用函數
§2.3.1 數值函數
常用數值函數有:ABS()函數、SIGN()函數、SQRT()函數、PI()函數、INT()函數、CEILING()函數、FLOOR()函數、ROUND()函數、MOD()函數、MAX()函數 §2.3.2 字符函數
常用字符函數有:LEN()函數、LOWER()函數、UPPER()函數、SPACE()函數、TRIM()函數、LTRIM()函數、ALLTRIM()函數、LEFT()函數、RIGHT()函數、SUBSTR()函數、OCCURS()函數、AT()函數、ATC()函數、STUFF()函數、CHRTRAN()函數、LIKE()函數 §2.3.3 日期和時間函數
常用日期和時間函數有:DATE()函數、TIME()函數、DATETIME()函數、YEAR()函數、MONTH()函數、DAY()函數、HOUR()函數、MINUTE()函數、SEC()函數 §2.3.4 數據類型轉換函數
常用數據類型轉換函數有:STR()函數、VAL()函數、CTOD()函數、CTOT()函數、DTOC()函數、TTOC()函數、宏替換函數 §2.3.5 測試函數
常用測試函數有:BETWEEN()函數、ISNULL()函數、EMPTY()函數、VARTYPE()函數、EOF()函數、BOF()函數、RECNO()函數、RECCOUNT()函數、IIF()函數、DELETED()函數 §2.4 程序與程序文件 §2.4.1 程序的概念
定義:程序是能夠完成一定任務的命令的有序集合。這組命令被存放在稱為程序文件或命令文件的文本文件中。
程序中經常插入注釋,以提高程序的可讀性。注釋為非執行代碼,不會影響程序的功能。
注釋方式:NOTE<注釋內容>或*<注釋內容>,以NOTE或*開頭的代碼行為注釋行,一般用于對下面一段命令的說明。
&&<注釋內容>,命令行后可添加注釋,對所在行命令的說明。
§2.4.2 程序文件的建立與執行
1.程序文件的建立
2.打開、修改程序文件 3.執行程序文件
§2.4.3 簡單的輸入/輸出/命令
1.INPUT命令: INPUT [<字符表達式>] TO <內存變量> 2.ACCEPT命令:ACCEPT [<字符表達式>] TO <內存變量> 3.WAIT命令:WAIT [<字符表達式>] [TO <內存變量>] [WINDOW [AT <行>,<列>]][NOWAIT] [CLEAR | NOCLEAR] [TIMEOUT <數值表達式>] §2.5 程序的基本結構 §2.5.1 選擇結構
1.簡單形式的條件語句 IF <條件> <語句序列1> ENDIF 2.一般形式的條件語句
IF <條件> <語句序列1> ELSE <語句序列2> ENDIF 3.多分支語句
DO CASE CASE <條件1> <語句序列1> CASE <條件2> <語句序列2> ?? CASE <條件n> <語句序列n> [OTHERWISE <語句序列>] ENDCASE §2.5.2 循環結構
1.DO WHILE-ENDDO語句
DO WHILE <條件> <命令序列> [LOOP] [EXIT] ENDDO 2.FOR語句
FOR <循環變量>=<初值> to <終值> [step<步長>] <循環體> [EXIT] [LOOP] ENDFOR|NEXT 3.SCAN-ENDSCAN語句
SCAN [<范圍>] [FOR <條件1>] [WHILE<條件2>] <循環體> [LOOP] [EXIT] ENDSCAN §2.6 多模塊程序設計
模塊是一個相對獨立的程序段,它可以被其他模塊所調用,也可以去調用其他的模塊。通常,把被其他模塊調用的模塊稱為子程序,把調用其他模塊而沒有被其他模塊調用的模塊稱為主程序。§2.6.1 模塊的定義和調用
1.模塊的定義:模塊可以是命令文件,也可以是過程。
語法格式:
PROCEDURE | FUNCTION<過程名> <命令序列> [RETURN[<表達式>]] [ENDPROC︱
格式1: SET PROCEDURE TO 功能:關閉所有打開的過程文件
格式2:RELEASE PROCEDURE <過程文件1>[,<過程文件2>,?] 2.模塊調用
格式1:DO <文件名>︱<過程名> 格式2:<文件名>︱<過程名>()
§2.6.2 參數傳遞
1.PARAMETERS和LPARMETERS語句傳遞參數
PARMETERS<形參變量1>[,<形參變量2>,?] LPARMETERS <形參變量1>[,<形參變量2>,?] 2.調用模塊程序
格式1:DO <文件名>︱<過程名>WITH<實參1>[,<實參2>,?] 格式2:DO <文件名>︱<過程名>(<實參1>[,<實參量2>,?])
§2.6.3 變量的作用域
1.變量的作用域:指變量在什么范圍內是有效的或者能夠被訪問的。
內存變量分類:公共變量、私有變量、局部變量 2.變量的隱藏
開發應用程序時,主程序與子程序不一定是由同一個人來設計的,子程序中用到的變量實際上在主程序中已經建立,子程序的運行會無意間改變主程序中變量的取值。為了解決這個問題,可以采用在子程序中使用PRIVATE命令隱藏主程序中可能存在的變量,使得這些變量在子程序中暫時無效。
格式:PRIVATE <內存變量表> PRIVATE ALL[LIKE<通配符>|EXCEPT<通配符>] 本章小結:
本章主開始先介紹了語言的一些基本成分,包括常量、變量、函數和表達式,同時也介紹了一些相關的命令,在后半部分主要介紹了程序設計的基本內容,包括程序的概念、程序的基本結構、多模塊程序設計等。通過本章的學習要求同學們對程序設計有初步的了解,并且能編寫小的算法程序來進行特定的數據處理。本章作業:
上機練習課后習題三
教學后記:
第3章 VF數據庫及操作
本章重點與學習目標: ? 了解VF項目管理器 ? 熟悉VF數據庫
? 數據庫的創建方法 ? 數據庫的應用 ? 數據庫的修改 ? 數據庫的刪除
? 掌握VF數據庫表的相關操作
? 數據庫表、自由表的創建 ? 表結構的修改
? 數據庫表的關閉與打開 ? 數據庫表的基本操作
? 掌握數據庫表索引
? 索引的類型 ? 索引的建立
? 了解數據完整性相關概念 教學器材:
多媒體教學
教學課時:4學時
§3.1 Visual FoxPro數據庫及其建立 §3.1.1 基本概念
數據庫:數據庫是一個邏輯上的概念和手段,通過一組系統文件將相互關聯的數據庫表及其相關的數據庫對象統一組織和管理。§3.1.2 建立數據庫
常用方法:(1)使用項目管理器中建立數據庫
(2)使用“新建”對話框建立數據庫(3)使用命令方式建立數據庫
格式:CREATE DATABASE[Databasename|?] §3.1.3 使用數據庫
常用方法:(1)在“項目管理器”中打開數據庫
(2)通過“打開”對話框打開數據庫(3)使用命令方式打開數據庫 格式:OPEN DATABASE §3.1.4 修改數據庫
常用方式:(1)從項目管理器中打開數據庫設計器
(2)用“打開”對話框打開數據庫設計器
§3.1.5 刪除數據庫
常用方法:(1)使用項目管理器刪除數據庫
(2)使用命令方式刪除數據庫 格式:DELETE DATABASE DatabaseName|? [DELETETABLES] [RECYCLE] §3.2 建立數據庫表
§3.2.1 在數據庫中建立表
方法:(1)使用項目管理器建立數據庫表
(2)使用“新建”或CREATE命令建立數據庫表
§3.2.2 修改表結構
方法:(1)在“項目管理器”中修改表結構
(2)在“數據庫設計器”中修改表結構(3)使用命令修改表結構
如果當前不在數據庫設計器中,則首先要用USE命令打開要修改的表,然后使用命令方式MODIFY STRUCTURE打開表設計器。
§3.3 表的基本操作
§3.3.1 使用瀏覽器操作表
方法:(1)在項目管理器中將數據庫展開至表,并且選擇要操作的表,然后單擊“瀏覽”命令按鈕即可。(2)在數據庫設計器中選擇要操作的表,然后從“數據庫”菜單中
選擇“瀏覽”,或者對要操作的表單擊鼠標右鍵,然后從快捷菜單中選擇“瀏覽”。(3)在命令窗口中,用USE命令打開要操作的表,然后輸入BROWSE 命令來瀏覽表。
§3.3.2 增加記錄的命令
APPEND命令: APPEND命令是在表的尾部增加一個或多個新記錄。
格式:APPEND或APPEND BLANK INSERT命令: INSERT命令可以在表的任意位置插入新的記錄。
格式:INSERT [BEFORE][BLANK] §3.3.3 刪除記錄的命令
邏輯刪除: DELETE [FOR<邏輯表達式>] 恢復記錄的命令: RECALL [FOR<邏輯表達式>] 物理刪除有刪除標記的記錄: PACK 物理刪除表中的全部記錄: ZAP §3.3.4 修改記錄的命令
EDIT或CHANGE命令交互修改:這兩個命令均用于交互式地對當前表記錄進行編輯、修改,操作界面類似于APPEND界面。修改后用CTRL+W或ESC退出界面
REPLACE命令直接修改: REPLACE 字段名1 WITH 表達式1 [,字段名2 WITH 表達式2]? [FOR 表達式] §3.3.5 顯示記錄的命令
LIST/DISPLAY命令: LIST/DISPLAY [[FIELDS] Fiedlist] [FOR lExpression1] [OFF] [TO PRINTER [PROMPT] | TO FILE FileName] §3.3.6 查詢定位命令
用GO、GOTO命令直接定位: GO 記錄號 |TOP | BOTTOM SKIP命令: SKIP [nRecords] 用LOCATE命令定位: LOCATE FOR 條件表達式
§3.4 索引
§3.4.1 基本概念 定義:VFP索引是指由指針構成的文件,這些指針邏輯上按照索引關鍵字的值進行排序。
分類:主索引、候選索、唯一索引、普通索引 §3.4.2 在設計器中建立索引
1.單項索引
2.復合字段索引:在多個字段上的索引稱做復合字段索引。
3.索引文件的種類:非結構單索引文件、非結構復合索引文件、結構復合索引文件
§3.4.3 用命令建立索引
命令:INDEX ON eExpression TO IDXFileName|TAG TagName [OF CDXFileName] [FOR lExpresssion][COMPACT] [ASCENDING|DESCENDING] [UNIQUE|CANDIDATE] [ADDITIVE] §3.4.4 使用索引
命令格式:SET ORDER TO [ nIndexNumber | [TAG] TagName ] [ASCENDING|DESCENDING] §3.4.5 使用索引快速定位
Seek命令格式:SEEK eExpression [ORDER nIndexNumber | [TAG]
TagName ][ASCENDING|DESCENDING] §3.4.6 刪除索引
格式1:DELETE TAG TagName1 格式2:DELETE TAG ALL §3.5 數據完整性
§3.5.1 實體完整性與主關鍵字
實體完整性是保證表中記錄唯一的特性,在VFP中利用主關鍵字和候選索引字來保證表中記錄的惟一性,即實體惟一性。§3.5.2 域完整性與約束規則
域完整性:通過限定字段的取值類型和取值范圍來保證域完整性,還可以進一步通過域約束規則來保證域完整性。約束規則也稱作字段有效性規則,用于檢驗輸入數據的正確性。
§3.5.3 參照完整性與表之間的聯系
建立參照完整性:(1)建立表之間的“永久聯系”。
(2)設置參照完整性約束。
§3.6 自由表
§3.6.1 數據庫表與自由表
創建自由表:(1)使用項目管理器創建自由表
(2)利用菜單方式創建自由表
(3)利用命令窗口的create命令創建自由表
§3.6.2 將自由表添加到數據庫
方法:(1)使用項目管理器添加自由表
(2)使用數據庫設計器添加自由表(3)利用窗口命令添加自由表 §3.6.3 從數據庫中移出表
方法:(1)使用項目管理器移出表
(2)使用數據庫設計器移出表(3)利用命令窗口方式移去表
§3.7 多個表的同時使用
§3.7.1 多個工作區的概念
多工作區: VF中在一個工作區中可以使用一個表,如果在同一時刻需要打開多個表,則只需要在不同的工作區中打開不同的表。系統默認的總是在第1個工作區中工作,如果沒有指定工作區,實際是都是在第1個工作區打開表和操作表。
利用命令窗口選擇工作區: SELECT nWorkAreca | cTabeleAlias §3.7.2 使用不同工作區的表
Visual FoxPro也允許利用IN 命令在一個工作區內使用另一個工作區的表。即命令: In nWorkAreca | cTabeleAlias §3.7.3 表之間的聯系
建立臨時關聯: SET RELATION TO eExpression1 INTO nWorkAreca | cTabeleAlias
§3.8 排序
排序是將記錄按需要的順序重新排列,產生一個新的數據庫文件,實現從物理上對數據庫的重新排列。
物理排序: SORT TO TableName ON FieldName1[/A | /D] [/C] [, FieldName2 [/A | /D] [/C] ?] [ASCENDING | DESCENDING] [FOR lExpression1] [ FIELDS FieldNamelist ] 本章小結
本章主要介紹了VF數據庫相關概念與操作,數據庫表的創建與基本操作,表索引的創建。通過本章的學習要求掌握數據庫的基本操作,表的建立與結構的設置,索引的建立方法,了解數據的完整約束。
本章作業:
上機聯系課后習題三
教學后記:
第4章 關系數據庫標準語言SQL 本章重點與學習目標: ? SQL語言概述
? 了解SQL語言的相關知識 ? 掌握SELECT語句的使用方法
? 查詢功能
? 掌握SELECT語句的使用方法
? 了解使用謂詞和量詞的復雜查詢語句
? 操作和定義功能
? 掌握插入、更新和刪除等操作語句
? 掌握表的定義、刪除和結構修改等定義語句 ? 掌握視圖的定義方法
教學器材:
多媒體教學
教學課時:8學時
§4.1 SQL概述
SQL定義:SQL(Structured Query Language)是一種非過程化的語言,也是結構化查詢語言的縮寫,是關系數據庫的標準語言。
§4.2 查詢功能
SQL的核心是查詢,SQL的查詢命令也稱SELECT命令,它提供了簡單而又豐富的SELECT數據查詢語句。語法格式:
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT][Alias.] Select_Item [AS Column_Name][,[Alias.] Select_Item [AS Column_Name]?]FROM [FORCE][DatabaseName!] Table [[AS] Local_Alias][[INNER |LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN[DatabaseName!] Table [[AS] Local_Alias][ON JoinCondition]]?][[INTO Destination][TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT]| TO SCREEN]][PREFERENCE PreferenceName][NOCONSOLE][PLAIN][NOWAIT] [WHERE JoinCondition [AND JoinCondition?][AND |OR FilterCondition [AND | OR FilterCondition?]]][GROUP BY GroupColumn [,GroupColumn?]][HAVING FilterCondition][UNION [ALL] SELECTCommand][ORDER BY Order_Item [ASC | DESC][,Order_Item [ASC | DESC]?]] §4.2.1 簡單查詢
定義:簡單查詢是針對單個表的查詢,由SELECT和FROM短語構成無條件查詢或由SELECT、FROM和WHERE短語構成條件查詢。
舉例:課本例4.1~4.5 §4.2.2 簡單的連接查詢
定義:簡單聯接查詢也是一類基于多個表的查詢,與嵌套查詢的區別是要查詢的結果可以出自多個表中,而嵌套查詢的結果是基于一個表中。舉例:課本例4.6與例4.7 §4.2.3 嵌套查詢
定義:嵌套查詢基于多個關系的查詢,查詢的結果是來自一個表,而查詢的條件卻涉及到多個表。
舉例:課本例4.8、4.9與例4.10 §4.2.4 幾個特殊運算符
運算符:LIKE和 between ? and 舉例:課本例4.11、4.12與例4.13 §4.2.5 排序
格式:ORDER BY Order_Item [ASC | DESC][,Order_Item [ASC |DESC]?] 舉例:課本例4.14與例4.15 §4.2.6 簡單的計算查詢
字段函數:COUNT、SUM、AVG、MAX、MIN 舉例:課本例4.16~4.20 §4.2.7 分組與計算查詢
格式:GROUP BY GroupColumn [,GroupColumn?] [HAVING FilterCondition 舉例:課本例4.21與例4.22 §4.2.8 利用空值查詢
空值:NULL值
舉例:課本例4.23與例4.24 §4.2.9 別名與自連接查詢
格式:<關系名><別名> 舉例:課本例4.25 §4.2.10 內外層互相關嵌套查詢
前面討論的都是外層查詢依賴于內層查詢的結果,實際上,有時也需要內、外層互相關的查詢,這是內層查詢的條件需要外層查詢提供值,而外層查詢的條件需要內層查詢的結果。舉例:課本例4.26 §4.2.11 使用量詞和謂詞的查詢
格式說明:<表達式> <比較運算符> [ ANY | ALL |SOME ](子查詢)和[NOT] EXISTS(子查詢)舉例:課本例4.27~4.30 §4.2.12 超連接查詢
分類:左聯接、右聯接、完全聯接 命令格式:SELECT??FROM Table INNER | LEFT | RIGHT | FULL JOIN Table ON JoinCondition WHERE?? 舉例:課本例4.31~4.34 §4.2.13 集合的并運算
定義:并運算是將兩個SELECT語句的查詢結果合并成一個查詢結果。運算符:UNION §4.2.14 VF SQL SELECT的幾個特殊選項
1.顯示部分結果
2.將查詢結果放到數組中 3.將查詢結果放到臨時文件中 4.將查詢結果存放到永久表中 5.將查詢結果存放到文本文件中 6.將查詢結果直接輸出到打印機 舉例:課本例4.35、4.36 §4.3 操作功能
§4.3.1 插入數據
格式一:INSERT INTO dbf_name[(fname1[,fname2,?])] VALUES(eExpression1[,eExpession2,?])格式二:INSERT INTO dbf_name from ARRAY ArrayName | from memvar §4.3.2 更新數據
格式:UPDATE TableName
set Column_Name1=eExpession1 [,Column_Name2=eExpession2?] where condition §4.3.3 刪除數據
格式:delete from TableName [where condition] §4.4 定義功能
§4.4.1 表的定義
通過create table命令來建立表,格式為:
create table | DBF TableName1 [NAME LongTableName ] [FREE](FieldName1 FieldType[(nFieldWidth [,nPrecision])] [NULL|NOT NULL] [CHECK lExpession1 [ ERROR cMessageText1]] [DEFAULT eExpession1] [PRIMARY KEY | UNIQUE] [REFERENCES TableName2 [TAG TagName1]] [NOCPTANS] [, FieldName2 ? ] [, PRIMARY KEY eExpression2 TAG TagName2 |, UNIQUE eExpession3 TAG TagName3] [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP] REFERENCES TableName3 [TAG TagName5]] [, CHECK lExpression2 [ERROR cMessageText2]])| FROM ARRAY ArrayName §4.4.2 表的刪除
命令為:DROP TABLE table_name
直接從數據庫刪除表對應的文件。如果是數據庫中的表并且相應的數據庫是當前數據庫,則從數據庫中刪除了表,否則雖然從磁盤上刪除了表文件,但是在數據庫中的信息卻沒有刪除,此后會出現錯誤提示。§4.4.3 表結構的修改
用三種命令格式,格式1為:
ALTER TABLE TableName1 ADD | ALTER [COLUMN] FieldName1
FieldType [(nFieldWidth [, nPrecision ])] [NULL | NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]] [DEFAULT eExpression1] [PRIMAY KEY | UNIQUE] [REFEENCES TableName2 [TAG TagName1]] 格式2為:
ALTER TABLE TableName1 ALTER [COLUMN] FieldName2 [NULL|NOT NULL] [SET DEFAULT eExpression2] [SET CHECK lExpression2 [ERROR cMessageText2]] [DOP DEFAULT ] [DROP CHECK] 格式3:
ALTER TABLE TableName1 [DROP [COLUMN] FieldName3] [SET CHECK lExpression3 [ERROR cMessageText3]] [DROP CHECK] [ADD PRIMARY KEY eExpression3 TAG TagName2 [FOR lExpression4]] [DROP PRIMARY KEY ] [ADD UNIQUE eExpression4 [TAG TagName3 [FOR lExpression5]]] [DROP UNIQUE TAG TagName4 ] [ADD FOREING KEY [eExpression5] TAG TagName4 [FOR lExpression6] REFERENCES TagName2 [TAG TagName5] [DROP FOREIGN KEY TAG TagName6 [SAVE]] [ RENAME COLUMN FieldName4 TO FieldName5] §4.4.4 視圖的定義
格式:CREATE VIEW view_name AS select_statement
本章小結:
本章比較全面地介紹了關系數據庫標準語言SQL,重點介紹了SQL語言的查詢語句。通過本章的學習,要求掌握SQL查詢語句,并對其數據操作和定義有一定的掌握。本章作業:
上機練習課后習題三
教學后記:
第5章 查詢與視圖
本章重點與學習目標: ? 熟悉查詢設計器
? 查詢設計器的各個選項 ? 運用查詢設計器創建查詢
? 掌握VF視圖的相關知識
? 視圖的相關概念
? 視圖設計器的運用方法
? 視圖的創建及數據更新方法
教學器材:
多媒體教學
教學課時:2學時
§5.1查詢
§5.1.1查詢的概念
定義:查詢是指向一個數據庫發出的檢索信息的請求,它使用一些條件提取特定的記錄。實質上就是一個預先定義好的SOL SELECT語句,以擴展名為qpr的文本文件保存在磁盤上的。§5.1.2查詢設計器
1.打開查詢設計器建立查詢 2.利用查詢向導建立查詢 §5.1.3建立查詢
例5.1 建立一個含有倉庫號、職工號、城市和工資信息的查詢
例5.2 在以上基礎上為查詢增加查詢計算表達式,計算出年工資。例5.3 為查詢設計排序,先按倉庫號升序排列,再按工資降序排列。例5.4 利用分組功能統計各倉庫年工資額的合計。§5.1.4查詢設計器的局限性
1.當建立查詢并存盤后將產生一個擴展名為qpr的文本文件。
2.如果熟悉SOL SELECT,則可以直接用各種文本編輯器,通過自己寫的SOL SELECT語句建立查詢,最后把它保存查詢設計器的局限性為擴展名為qpr的文件。
3.查詢設計器只能建立一些比較規則的查詢,而復雜的查詢(嵌套查詢)就不行了。
§5.1.5使用查詢
1.查詢的運行
2.設計查詢的輸出形式 §5.2視圖
§5.2.1視圖的概念
視圖:視圖是一種基于表或其他視圖而定制的虛擬表,因此,視圖兼有“查詢”和“表”的特點。
分類:本地視圖、遠程視圖: §5.2.2建立視圖
建立視圖的方法:
1.使用CREATE VIEW命令打開視圖設計器建立視圖; 2.選擇菜單“文件→新建”建立視圖; 3.在“項目管理器”中建立視圖; 4.直接用SQL命令建立視圖。§5.2.3遠程視圖與連接
1.定義數據源和連接:可以在VFP內部定義數據源和連接。
2.建立連接:使用項目管理器建立連接、使用菜單方式建立連接、使用CRETE CONNECTION 命令 3.建立遠程視圖
? 連接建立好之后就可以建立遠程視圖了。
? 建立遠程視圖和建立本地視圖的方法基本上是一樣的,只是在打開視圖設計器時有所不同。
? 建立遠程視圖時,一般要根據網絡上其它計算機或其它數據庫中的表建立視圖,所以需要首先選擇“連接”或“數據源”,然后再進入界面建立遠程視圖。
§5.2.4視圖與數據更新
1.指定可更新的表 2.指定可更新的字段 3.檢查更新合法性 4.使用更新方式 §5.2.5使用視圖
1.視圖操作 2.使用視圖
本章小結:
本章主要介紹了Visual FoxPro檢索和操作數據庫的兩個基本工具或手段:查詢和視圖,它們都是根據基本表定義的,定義方式也類似,通過本章的學習要求掌握查詢和視圖的建立與使用方法。
本章作業:
上機練習課后習題三
教學后記:
第三篇:計算機二級《MySQL數據庫程序設計》知識點總結
MySQL知識點總結
.數據操作:檢索、排序、過濾、分組、匯總、計算、聯接、子查詢與組合查詢.表操作:表的創建、修改、刪除和重命名、表數據的插入、更新和刪除.索引(含主、外鍵)、視圖
.難度編程:存儲過程與存儲函數、觸發器與事件、PHP.數據庫管理:事務處理、用戶與權限、備份與還原、數據庫維護
1.檢索數據:select?from?
Select [distinct] prod_id,prod_name from products [limit 4,5];2.檢索排序:order by?
Select * from products order by prod_id [asc|desc],prod_name [asc|desc];3.過濾數據:where 字句
= <>!= >>= <<= between(1)普通where 字句
Select prod_id,prod_name from products where prod_name=’liyang’;Select prod_id,prod_name from products where prod_id between 10 and 50;Select prod_id,prod_name from products where prod_name is [not] null;(2)組合where字句:使用AND和OR連接多個條件表達式,且AND次序優于OR;(3)IN 與NOT操作符
Select prod_id,prod_name from products where prod_id [not] in(1,2,3)|prod_name in(’zhangsan’,’lisi’,’wangwu’);(4)LIKE操作符與通配符:“%”與“_”
Select prod_id,prod_name from products where prod_name like ’%liu%’;Select prod_id,prod_name from products where prod_name like ’_u%’;找出u位于名字的第二個位置的prod_id和prod_name。(5)正則表達式 4.計算字段
(1)拼接字段:concat(?,?)Select concat(姓氏,名字)as 姓名 from orders;Select concat(vend_name,’(’,vend_country,’)’)from vendors;(2)算術運算
Select prod_name,prod_price,prod_num,prod_price*prod_num as prod_money from products;4.使用數據處理函數:文本處理函數、日期和時間處理函數、數值處理函數。5.匯總數據:聚集函數 SUM()AVG()COUNT()MAX()MIN()Select avg(distinct prod_price)from products;Select avg(prod_price)均價,max(prod_price)最高價 from products;6.分組數據:group by? 創建分組、過濾分組、分組排序
Select count(prod_id),prod_id from products where prod_id>1000 group by prod_id having count(prod_id)>2 order by prod_id;求出prod_id大于1000且產品數量大于2的產品數量,并按prod_id排序,注意分組語句中對象要前后一致,如下劃線部分。7.使用子查詢:進行過濾select?where?in(select?where?in(select?))、作為計算字段使用子查詢。8.聯接:join?on?(1)普通聯接
Select oi.order_num,oi.prod_id,p.prod_name,p.vend_id,v.vend_name from orderitems oi join products p on oi.prod_id=p.prod_id join vendors v on p.vend_id=v.vend_id where vend_name=’liyang’;可同時聯接多個表且可同時用于數據過濾,這種類型的聯接一般為內部聯接。
(2)自聯接:一個表自己與自己聯接,注意判斷好各字段與前后兩個表的關系。(3)自然聯接:基本上簡歷的內部聯接都是自然聯接。
(4)外部聯接:在關系表中沒有關聯的信息的行也能顯示出來的聯接,根據表在join字句的左邊還是右邊可分為左聯接與右聯接。(5)帶聚集函數的聯接
Select c.cust_id,count(o.order_num)num_ord from customers c join orders o on c.cust_id=o.cust_id order by c.cust_id;找出客戶對應的訂單數。
9.組合查詢:連接多個(至少兩個)查詢語句,滿足其中一個查詢語句條件的結果都會顯示出來 union(不重復顯示)/union all(可重復顯示即全部顯示)Select vend_id,prod_id,prod_price from products where prod_price<=5 Union [all] Select vend_id,prod_id,prod_price from products where vend_id in(1001,1002)order by prod_id;注意每個查詢必須包含相同的列、表達式或者聚集函數,列的數據類型必須兼容,排序語句只能放在最后面,該排序語句對組合查詢語句中的所有select語句都適用。10.全文本搜索:只支持引擎為MyISAM的表,不支持引擎為InnoDB的表,可對搜索結果進行智能排序后輸出,具有較高等級的行先返回。
Match(全文本搜索字段)against(’全文本搜索內容’[with query expansion])其中下劃線部分為拓展語句,使用該語句,除了可以返回符合所設置的“全文本搜索內容”的數據結果,還可返回與“全文本搜索內容”有較高相似度的數據結果。(1)啟用全文本搜索支持
Create table fs(id int not null primary key,c text,c1 text,fulltext(c,c1))engine=MyISAM;(2)進行全文本搜索
Select note_text from productnotes where match(note_text)against(’liyang’ with query expansion);11.插入數據:insert into?{values|select}?
Insert into products(prod_id,prod_name,prod_price)values(1,’豆漿’,2),(3,’雞蛋’,1);可同時插入多行數據。
Insert into products(prod_id,prod_name,prod_price)select vend_id,vend_name, vend_price from vendors where vend_id<=10;12.更新數據:update [ignore]?set?,一般情況下,若更新的數據中有部分數據出錯,則全部數據返回到原來的數據,而ignore的作用在于即使更新的數據中出現錯誤,只對出現錯誤的數據返回到原來數據,而未出現錯誤的數據返回更新后的結果實現更新。update products set prod_name='饅頭',prod_price=1 where prod_id=1;update customers set cust_city=concat(cust_city,’市’)| cust_city =replace(cust_city,’市’,’city’)where cust_id>1000;13.刪除數據:delete from? Delete from products where prod_id between 10 an 50;14.表的相關操作
(1)創建表:對表結構進行設置create table?
Create table products(prod_id int null auto_increment primary key,prod_name varchar(50),prod_price int,prod_city varchar(50)default ’廣州’)engine= InnoDB;每個字段名后需要設置數據類型,default為指定默認值,只支持常量不支持函數,且只在插入數據時起作用而在更新數據時不起作用,InnoDB是一個可靠的事務處理引擎,但不支持全文本搜索。
(2)更新表:對表結構進行修改 alter table {add|drop}?
Alter table products add prod_city varchar(50); Alter table products drop prod_price;(3)刪除表:一旦刪除,無法撤銷 drop table?
Drop table products;(4)重命名表:rename table?to?
Rename table products to new_products;15.索引的相關操作
(1)創建索引:常用于數據的快速檢索,MySQL中,常用索引在物理可分為:BTREE、HASH索引兩類;在具體用途上可分為:INDEX、UNIQUE、PRIMARY KEY、FOREIGN KEY、FULL TEXT、SPATIAL等。
1使用create index 語句創建索引,對已存在的表創建索引 ○Create [unique|fulltext|spatial] index index_name [using BTREE|HASH] on tbl_name(index_col_name[,index_col_name?]);Create unique index index_products on products(prod_name(2)desc,prod_price);2使用create table 語句創建索引,創建表的同時創建索引 ○Create table seller(seller_id int not null auto_increment,seller_name char(50),seller_adress char(50),seller_contact char(50),product_type int,sales int,primary key(seller_id,product_type),[unique|fulltext|spatial] index index_seller(sales));3使用alter table語句創建索引,修改表的同時添加索引 ○Alter table tbl_name add {[unique|fulltext|spatial] index index_tbl_name(字段名)|primary key(字段名)|foreign key(字段名)references elsetbl_name(相同字段名)};(2)查看索引:Show index from tbl_name [where expr];(3)刪除索引:drop index index_nameon tbl_name語句或alter table語句
Drop index index_name on tbl_name;Alter table tbl_name drop {[unique|fulltext|spatial] index index_tbl_name(字段名)|primary key(字段名)|foreign key(字段名)references elsetbl_name(相同字段名};(下劃線部分不確定)16.視圖的相關操作
視圖:虛擬的表,視圖本身不包含表中的列和數據,它包含只是一個SQL查詢,常用于 檢索數據。*視圖的作用與規則。(1)創建視圖:Create view view_name as select?[where?];Create view view_products as select prod_id,prod_name,prod_price,prod_num, prod_price*prod_num as prod_money from products where prod_id<=10 [with check option];--下劃線部分表示今后對該視圖數據的修改都必須符合prod_id<=10(2)查看視圖(用法同表): select * from view_name;(3)刪除視圖:drop view view_name;17.完整性:實體完整性(主鍵與候選鍵)、參照完整性(主鍵與外鍵)、用戶定義的完整性(非空約束與check約束)。
18.創建主鍵約束:create table語句或alter table語句
Create table products(prod_id int not null auto_increment primary key,c int);作為列的主鍵約束;
Create table products(prod_id int not null auto_increment,c int,c1 int,primary key(prod_id));作為表的主鍵約束,且復合主鍵職能用這種形式創建 Alter table products add primary key(prod_id);備注:實體完整性通過主鍵約束與候選鍵約束來實現,候選鍵約束的創建類似主鍵約束的創建,實質上同索引。
19.設置表外鍵:create table語句或alter table語句,外鍵中列的數目和數據類型必須與被參照表的主鍵中列的數目和對應數據類型一致。
alter table tbl_name add [constraint fk_name] foreign key(?)references? Create table products(prod_id int not null auto_increment,c int,c1 int,foreign key(prod_id)references customers(prod_id));alter table products add constraint fk_products_cust foreign key(cust_id)references cust(cust_id);20.存儲過程:為了以后的使用而保存的一條或多條SQL語句的集合
--建立存儲過程:建立一個可通過輸入item_id,輸出對應訂單總金額的存儲過程->Delimiter //--改變分割符為//->create procedure ordertotal(in o_id int,out o_total decimal(10,2))過程名字輸入參數及類型輸出參數及類型->begin->select sum(item_price*item_num)from orderitems where item_id=o_id into o_total;->if o_total is null then->select ’不存在該訂單號’;->end if;->end;->//--執行存儲過程:當item_id=200005時,得出對應訂單總金額->delimiter;--將分割符改回分號->call ordertotal(200005,@total);--由于不存在輸出參數,故定義一個輸出變量,變量必須用@開頭->select @total;返回結果為149.87 備注:書本第十一章后的編程題,使用update語句,兩個參數類型都需要為in。--顯示存儲過程->Show create procedure ordertotal;--刪除存儲過程
->Drop procedure ordertotal;21.存儲函數
存儲函數與存儲過程的區別:.存儲函數不能擁有輸出參數;.存儲函數可直接調用,且不需使用call語句,而存儲過程的調用必須使用call語句;.存儲函數中必須包含一條return語句,而這條特殊的SQL語句不允許包含于存儲過程。--建立存儲函數:根據給定的cust_id返回客戶所在的州名(縮寫),若庫中無給定的cust_id,則返回“不存在該客戶”。->delimiter //->create function fn_search(c_id int)->returns varchar(50)--定義返回的數據類型,與函數部分中的數據類型需統一,如函數中的“不存在該客戶”為6個字符,如果這里設置為char(5),則無法輸出該結果->deterministic– 表示對于相同的輸入值,返回值也相同->begin->declare state char(2);--聲明一個變量state,作為輸出的州變量->select cust_state from customers where cust_id=c_id into state;->if state is null then->return(select ’不存在該客戶’);--注意這里return不用加s->else->return(select state);->end if;->end;->//--執行存儲函數
->select fn_search(10001);--刪除存儲函數
->drop function fn_search;--刪除前要確定該函數無依賴關系,即不存在其他存儲過程或存儲函數調用過該存儲函數。
22.觸發器:MySQL響應insert、delete、update語句時自動執行的一條MySQL語句,創建觸發器時需要給出的4條信息:唯一的觸發器名、觸發器相關的表、觸發器應該響應的活動(insert delete、update)、觸發器何時執行(處理前或處理后)。
(1)insert觸發器:當對表插入數據時起作用,含有一個虛擬表New,可訪問增加的行,只能用after--建立一個insert觸發器,用于記錄insert語句操作時的系統時間和插入的order_num->delimiter //->create trigger trg_order_insert after insert on orders for each row 觸發器 觸發器名 執行時間 相關表->begin->insert into order_log(o_date,order_num)values(now(),new.order_num);--order_log是事先建立好的表,用于記錄insert語句操作時的系統時間和插入的order_num->end;->//--執行insert觸發器->delimiter;->insert into orders(order_date,cust_id)values(’2010-9-15’,10001);--由于order_num是自動遞增的,故在這里不作為插入對象(2)delete觸發器:當對表刪除數據時起作用,含有一個虛擬表Old,可訪問被刪除的行,只能用after,創建方法與insert類似,區別在于delete和old--建立一個delete觸發器,用于記錄delete語句操作時的系統時間和刪除的order_num->delimiter //->create trigger trg_order_delete after delete on orders for each row 觸發器 觸發器名 執行時間 相關表->begin->insert into order_log(o_date,order_num)values(now(),old.order_num);--order_log是事先建立好的表,用于記錄delete語句操作時的系統時間和刪除的order_num->end;->//--執行delete觸發器->delimiter;->delete from orders where order_num=20010;(3)update觸發器:當對表修改數據時起作用,同時含有new和old兩個虛擬表。結合New可訪問更新行的記錄;結合old可訪問更新前行的記錄,可用after,也可用before。1用after ○--建立一個update觸發器,用于記錄update語句操作時的系統時間和更新數據的order_num->delimiter //->create trigger trg_order_update after update on orders for each row 觸發器 觸發器名 執行時間 相關表->begin->insert into order_log(o_date,order_num)values(now(),old.order_num);->end;->//--執行update觸發器->delimiter;->update orders set order_date=’2015-9-18’ where cust_id=10001;2用before ○--建立一個update觸發器,如果更新后的prod_price大于原來的1.2倍,則用原來的1.2倍作為當前價格->delimiter //->create trigger trg_order_update before update on orders for each row 觸發器 觸發器名 執行時間 相關表->begin->if new.prod_price>old.prod_price*1.2 then->set new.prod_price=old.prod_price*1.2;->end if;->end;->//(4)刪除觸發器:drop trigger trg_name;23.事件:臨時觸發器,要使用事件調度器,必須開啟“event_scheduler”.查看:show variables like ’event_scheduler’;.開啟:set global event_scheduler=1;(1)創建事件
CREATE EVENT EVENT_NAME ON SCHEDULE schedule DO event_body;其中schedule的語法格式為
AT timestamp [+INTERVAL interval]?|every interval--指定事件執行的時間,可以為某時刻點即timestamp,或某時刻點開始的interval時間后,或者為每隔interval時間執行一次
[starts timestamp [+INTERVAL interval]]--設置事件開始執行的時間 [ends timestamp [+INTERVAL interval]]--設置事件終止執行的時間
--建立一個事件,用于每個月向customers表中插入一條數據“liyang、廣州”,該事件從下個月開始并于2015-12-31結束->delimiter //->create event event_insert on schedule every 1 month->starts curdate()+interval 1 month->ends ’2015-12-31’->do->begin->if year(curdate())<2015 then->insert into customers(cust_name,cust_adress)values(’liyang’,’廣州’);->end if;->end;->//(2)修改事件,用于修改時間的狀態:alter event event_name{enable|disable};(3)刪除事件:drop event event_name;24.管理實務處理:start transaction?
實務處理的術語:
(1)實務(transaction):一組SQL語句;(2)回退(rollback):撤銷指定SQL語句的過程;(3)提交(commit):指定未存儲的SQL語句結果寫入到數據庫表里,提交后無法回退;(4)保留點(savepoint):實務處理中設置的臨時占位符。
25.安全管理(用戶創建修改與刪除以及用戶權限的查看設置與撤銷)(1)創建用戶賬號:create user ben identified by ’ben’;(2)修改用戶賬號:update mysql.user set user=’new_ben’ where user=’ben’;--從mysql數據庫中的用戶表user進行修改(3)查看訪問權限:show grants for new_ben;(4)設置訪問權限:grant?to?.grant {all|select,update,delete,insert}on {*.*|crashcourse.*|crashcourse.cus tomers} to new_ben;.grant select(cust_id,cust_name)on crashcourse.customers to new_ben;--可針對{整個服務器|整個數據庫|數據庫中某個表|數據庫中某個表的某些字段},對用戶同時設置全部或一種或多種權限
(5)撤銷訪問權限:revoke?from?,用法與grant?to?類似(6)更改口令(密碼)
Set password for new_ben=password(’new_ben’);(7)刪除用戶:drop user new_ben;26.數據庫備份與還原.使用SQL語句
backup table tbl_name to?/restore table tbl_name from?(只用于MyISAM表)select?intooutfile?/load data?infile?into table tlb_name.使用命令行實用程序:mysqlhotcopy(只用于MyISAM表)或mysqldump/mysql(1)使用select?intooutfile?/load data?infile?into table tlb_name.備份數據:
Select * from mysql.products into outfile ’d:products.txt’ [Fields terminated by ’,’ optionally enclosed by ’”’
lines terminated by ’nr’;--定義字段間的分割符、字符型數據的存放形式、行與行之間的分割符.恢復數據
Load data infile ’d:products.txt’into table customers.copy [Fields terminated by ’,’ optionally enclosed by ’”’
lines terminated by ’nr’;--必須與備份時一致(2)使用命令行實用程序mysqldump/mysql(文本形式)
進入cmd運行界面(mysqldump—help 可用于獲取mysqldump的選項表及更多幫助信息).備份整個數據庫服務器、或整個數據庫或數據庫中某個表
Mysqldump –u root –proot –P 3306 –h localhost {all-databases|mysql_test [products]}>d:data.sql.恢復數據
Mysql –u root –proot –P 3306 –h localhost {all-databases|mysql_test [products]} (1)analyze table tbl_name;更新表的索引散列程度,檢查表鍵是否正確(2)check table tbl_name;檢查一個或多個表是否有錯誤 (3)checksum table tbl_name;對數據庫中的表進行校驗,保證數據的一致性 (4)optimize table tbl_name;利用表中未使用的空間并整理數據文件碎片,保證數據讀取效率 (5)repair table tbl_name;修復一個或多個可能被損害的MyISAM表 28.二進制日志文件的使用:mysqlbinlog 29.使用PHP進行MySQL數據庫編程 編程步驟: .首先建立與MySQL數據庫服務器的連接;.然后選擇要對其進行操作的數據庫; .再執行相應的數據庫操作,包括對數據的添加、刪除、修改和查詢等;.最后關閉與MySQL數據庫服務器的連接。(1)數據庫服務器連接、選擇數據庫 .使用mysql_connect()建立非持久連接 Php $con=mysql_connect(“localhost:3306”,“root”,“123456”);if(!$con){ echo “數據庫服務器連接失敗! .使用mysql_pconnect()建立持久連接 ”;echo “用戶名:root .使用mysql_select_db(databases[,connection])選擇數據庫 ”;die();} mysql_select_db(“mysql_test”,$con);if(mysql_errno()){ echo “數據庫選擇失敗! /*向數據庫mysql_test中的表customers添加一個名為“李中華”的客戶的全部信息*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數據庫選擇失敗! $sql=“insert into customers(’cust_id’,’cust_name’,’cust_sex’)”;$sql=$sql.“values(null,’李中華’,’M’)”;if(mysql_query($sql,$con))echo “客戶信息添加成功! .數據的更新 /*將數據庫mysql_test的表customers中的一個名為“李中華”的客戶的地址修改為“廣州市”*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數據庫選擇失敗! .數據的刪除 /*將數據庫mysql_test的表customers中一個名為“李中華”的客戶信息刪除*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數據庫選擇失敗! (3)數據庫的查詢 .使用mysql_fetch_array(data[,array_type])讀取結果集中的記錄 /*在數據庫mysql_test的表customers中查詢cust_id為916的客戶的姓名*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數據庫選擇失敗! .使用mysql_num_rows(data)讀取結果集中的記錄數 /*在數據庫mysql_test的表customers中查詢女性客戶的人數*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數據庫選擇失敗! 淺談Visual FoxPro數據庫程序設計教學 重慶市工藝美術學校 劉 杰 [關鍵詞] 案例教學 多媒體課件教學 探究式教學 互動式教學 問題驅動法 [摘要] VISUAL FOXPRO程序設計語言作為中職學生入學后的首門數據庫語言課程,但目前采用的還是傳統的以教師為主體的課堂講授方式,教學質量及教學效果不是很理想。本文從教學方法、上機實驗、考試考核幾個方面對VISUAL FOXPRO語言的教學進行了探究,力求找到好的方法來提高本課程的教學質量。 一、引言 《VISUAL FOXPRO數據庫程序設計語言》是中職計算機專業中一門重要的專業課程,而且它作為中職升學高職的一門高考課程,非常重要。它作為學生入學后第一次系統地學習與高級程序設計語言和程序設計有關的內容的一門新課程,加之教科書內容抽象化,牽涉到的概念比較復雜,規則較多,使用靈活,容易出錯,在實際的教學中反映出很多問題,再加上授課一般以VISUAL FOXPRO數據庫操作為主,VISUAL FOXPRO的操作界面很不直觀,使學生不容易理解。因此,盡管VISUAL FOXPRO數據庫語言有實用價值,但生澀的教學內容,不易引起學生的學習興趣,如果不講究教學方法,則難以達到課程的預期目標。因此,為了提高教學質量,使學生從枯燥乏味中走出來,教師必須利用現有資源重新整合教學內容,改進單 一、乏味的教學方法,力求顯現在學生面前的知識有趣而生活化,以提高學生的學習興趣及學以致用的能力。以下幾點是對VISUAL FOXPRO數據庫語言程序設計教學的探索: 二、采用案例教學法,培養學生的興趣和積極性 VISUAL FOXPRO程序設計是應用性很強的一門課程它既有理論又有實踐,既講方法又講動手能力。一般來說,教材中前幾章都是先介紹VISUAL FOXPRO程序設計語言的一些概念和基礎知識,然后才介紹程序的建立和運行。這些概念和基礎知識,既枯燥又比較抽象難懂。在教學中,我們打破課本原有的順序組織課堂教學的方式的邏輯結構體系,改用從案例入手,通過給學生演示、讓學生模仿,在實際應用中去探究和領悟這些概念,并適時地加以歸納總結和概念的延伸,讓學生在輕松愉快的氣氛中學習新知識。 案例教學法打破了以教材為中心的傳統教學模式,不按教材的順序授課,而是以精選出的程序設計的案例為中心,把學習的重點放在具體案例的講述上,把要學習的語法和概念融 1/4 入到具體案例中來講解。整個教學過程中強調在應用中學習,從而避免了枯燥的理論說教,不僅能增進學生的學習興趣,而且對提高學生綜合分析和解決實際問題的能力也大有幫助。那么該如何培養學生對VISUAL FOXPRO語言課程的興趣呢?案例教學法是培養學生學習興趣的有效途徑之一。 三、加強多媒體教學方式的使用 多媒體教學作為一種新型的現代教育技術有很多優點:它集授課、習題、演示等功能為一體,具有生動、形象、直觀的特點。教師在教學過程中應利用各類計算機軟件,根據所教學生的特點,制作出高水平的VISUAL FOXPRO語言程序設計多媒體課件。 如采用以PowerPoint幻燈片或Authorware來制作的多媒體課件展現知識點并輔以Flash動畫演示程序的動態執行過程的方式,使學生對所學知識的理性認識和感性認識有機的結合起來,有助于學生更好地理解和掌握所學內容,激發學生學習的主動性。但是也不能過于依賴課件,教師如果自始至終坐在講臺前,始終以課件授課,難以達到好的教學效果。教師必須在使用課件的同時,穿插使用黑板板書,將重要知識的演繹過程強調出來。同時將課堂教學和網絡教學相結合,制作適合自學的網絡版課件,發布到課程建設網絡平臺或校園網上。該課件應層次結構清楚,較之課堂用教學課件內容更加全面、詳細,使用學生能夠自由選擇章節進行下載學習。 多媒體課件主要包括課程內容、算法演示、在線測試、在線討論以及資源中心五部分功能。多媒體課件可以提供交互式環境供學生學習,并自動根據操作過程進行實時評價。將多媒體課件和教師課堂講授有機地結合起來,能形成最佳教學任務的綜合性手段與教學方案。 四、把握課堂教學方法,提高課堂教學質量 在課堂上教師的著眼點應放在引導學生走向知識,而不是帶著知識走向學生,在預設的問題情境中不要急于將結論告訴學生,應讓學生經歷知識形成過程,提高問題解決的能力。VISUAL FOXPRO程序設計語言的知識體系是一個循序漸進的過程,先后的知識點相關性很大,語句簡潔、緊湊,語法限制不太嚴格,程序設計自由度大。在系統的教學過程中,大部分學生的語法掌握得還是比較好的,但是當涉及到稍為復雜的實際編程問題時,可能還是顯得困難,他們面對一個問題,往往心中只有一些模糊的想法,而無法寫出具體的程序。這是目前VISUAL FOXPRO語言教學中普遍存在的問題。針對這種情況,我們可以從以下幾個方面來解決: 第一、淡化語法、突出算法講解。注重介紹有關算法概念,即突出程序設計而不是語法。 2/4 在掌握了基本而常用的語法之后,可以根據學習的進度和程序設計的需要學習相關語法。學習新的程序設計語言的最佳途徑是編寫程序,不是知道的語法越多,程序編得越好,而是自己動手編程越多,編程水平才越有可能得到提高。突出算法,進而帶動基本語法的學習,可以更加合理地分配學習時間。 第二、加強程序閱讀能力的培養。學生閱讀程序的過程也是為程序設計打基礎的過程。教學中教師通過例題講解,使學生逐步理解和掌握語句的格式、功能等,同時也是在為學生學習程序設計作鋪墊,教師應有意識地在講解過程中向學生滲透程序設計的思想和方法,引導學生從模仿開始,逐步過渡到獨立進行程序設計。 第三、轉變學習方式,提高學生學習興趣。轉變學習方式,實際上是改變一種習慣,即由過去的傳授式學習變為自主、合作、探究式學習。為了達到這個目的,就要求教師在講授知識的時候根據教學內容和學生的實際情況采用多種教學方式進行教學,將教師的“主體”性逐漸削弱,向“主導”過渡,創設和諧的學習氛圍。 五、加強實驗環節的教學設計,輔助理論教學 VISUAL FOXPRO語言程序設計是一門實踐性很強的課程,上機也是整個教學的重要組成部分,因此必須抓好實驗教學環節。在上機作業的布置中,既要有基本的較簡單的題目,又要有一些具有挑戰性的新穎有趣的題目,把它們分作必做題和選做題,這樣既可以使每一個學生都能達到滿足,又充分地調動了他們的積極性和創造性,以及對VISUAL FOXPRO語言學習的興趣。 第一、在實驗教學大綱的指導下,根據所學知識點選擇有代表性的、綜合的問題讓學生進行編程、調試。在實驗開始前要讓學生對實驗作充分的準備,預習實驗內容,明白實驗原理和實驗目的。實驗前應該將實驗所涉及的知識點的重點和難點告知學生。在實驗過程中針對不同的學生有側重點的加以指導,在指導的過程中要注意鍛煉學生獨立思考問題的能力,啟發學生的想象力。實驗完畢后,每個學生都應對實驗用到的知識點進行回顧,總結實驗過程中遇到的問題和問題的解決方法。 第二、注重培養學生調試程序的能力。對于簡單問題,直接編寫出正確的代碼是完全可能的,但是大多數問題的解決方案往往都是比較復雜的,而且代碼需要不斷修改完善,因此調試程序的能力是至關重要的。 第三、培養學生動手能力和獨立思考能力。實驗時,重點讓學生自己動手,學生有問題,盡量給予提示,啟發學生自己思考解決問題。指導學生要針對學習任務,依據學習規則,詳細設計實習步驟,充分發揮學生的主觀能動性,鼓勵學生主動對學習的程序、函數、工具及 3/4 方法進行有效操作,從而提高學習質量和效率。 六、合理安排考試考核,注重學生知識的全方位掌握 VISUAL FOXPRO語言程序設計課程的考核應分為閉卷理論考試和上機考試,重點考核學生的程序閱讀能力和編寫能力。閉卷考試主要考查學生的基本知識、閱讀程序和編程能力。考試題型可包括:概念選擇、讀程序寫結果、程序代碼填空、程序改錯、編寫程序題等。在考題內容上注意嚴格按照教學大綱的要求覆蓋各知識點,各知識點的定位重點在基本概念而不是語法細節。 上機考試主要讓學生在規定的時間內完成給定的上機題目,重點測試考生調試程序、程序改錯、編寫程序等綜合能力,偏重實際應用性強的題型,編程題靈活多樣,或編完整的一個程序,或補充程序的部分函數,重在考核典型算法的應用。平時成績也要在總成績中占一定的比例,這樣有利于學生對平時作業的重視。 七、結束語 VISUAL FOXPRO語言程序設計課程的教學涉及到諸多方面的因素,需要我們不斷地探索新的教學方法和教學模式,激發學生學習該課程的興趣,使學生不但掌握高級編程語言的知識、編程技術和基本算法,更重要的是掌握程序設計的思想和方法,具備利用計算機求解實際問題的基本能力,只有這樣才能達到我們教學的真正目的。 參考文獻: [1] 張小莉,李盛瑜,代秀娟 編,VISUAL FOXPRO語言程序設計,科學出版社有限責任公司 [2]張小毅,數據庫基礎及應用——VISUAL FOXPRO操作基礎及應用,重慶大學出版社 [3] 盧湘鴻,Visual FoxPro 6.0數據庫與程序設計(第3版),電子工業出版社 4/4 程序設計教學工作總結 在一學期的教學工作中,本人能堅持黨的教育方針,認真學習國家的各種法律法規,嚴格要求自己,努力培養自己的職業道德修養與正確的行為規范,在實際的工作崗位上盡職盡責,自始至終以認真、嚴謹的治學態度,勤懇、堅持不懈的精神從事教學工作。 為了上好這門課,我按照規范教學規范管理嚴格要求自己,深入研究教學大綱,認真鉆研教材,精心設計教法,認真備寫教案,精選典型試題,強化訓練,力爭在有限的時間,使每一堂課的教學優質高效。重視實踐性教學,耐心進行輔導,認真批改和及時評講作業。廣泛涉獵各種知識,形成比較完整的知識結構,嚴格要求學生,尊重學生,發揚教學民主,使學生學有所得,不斷提高,從而不斷提高自己的教學水平和思想覺悟,并順利完成教育教學任務。 在教學中,我采用案例教學法,將抽象的程序設計知識,以一個個實用案例的形式呈現給學生,符合學生 認知規律。學生課堂紀律較好,部分學生參與度較高;學生積極就練習過程中問題提問,學習積極性較高,課堂氣氛活躍。本門課程達到教學目標,教學效果良好。 在過去的教學工作中,自己雖然取得了一些成績,也積累了一些教學經驗,但在理論與實踐相結合的教學方法中還有待進一步提高。今后,我要更加努力地提高教學質量,成為真正讓學生滿意的教師。
”;die();} echo “數據庫服務器連接成功!
”;?> //將connect.php部署在已開啟的WAMP平臺環境中,并在瀏覽器地址中輸入“http://localhost/connect.php”
”;echo “使用函數mysql_pconnect()永久連接數據庫。
”;?>
”;die();} echo “數據庫選擇成功!
” ?>(2)數據的添加、更新和刪除操作,mysql_query(SQL語句[,connection]),insert、update、delete語句可置于函數mysql_query()中從而實現數據的添加、更新和刪除操作.數據的添加
”);Mysql_query(“set names ’gbk’”);//設置中文字符集
”;else echo “客戶信息添加失敗!
”;?>
”);Mysql_query(“set names ’gbk’”);$sql=“update customers set cust_address=’廣州市’”;$sql=$sql.“where cust_name=’李中華’”;if(mysql_query($sql,$con))echo “客戶地址修改成功!
”;else echo “客戶地址修改失敗!
”;?>
”);Mysql_query(“set names ’gbk’”);$sql=“delete from customers”;$sql=$sql.“where cust_name=’李中華’”;if(mysql_query($sql,$con))echo(“客戶信息刪除成功!
”);else echo(“客戶信息刪除失敗!
”);?>
”);Mysql_query(“set names ’gbk’”);$sql=“select cust_name from customers”;$sql=$sql.“where cust_id=916”;$result=mysql_query($sql,$con);if($result){ echo “客戶查詢成功!
”;$array=mysql_fetch_array($result,MYSQL_NUM);if($array){ echo “讀取到客戶信息!
”;echo “所要查詢客戶的姓名為:”.$array[0].“
”;} else echo “未讀取到客戶信息!
”;} else echo “客戶查詢失敗!
”;?>
”);Mysql_query(“set names ’gbk’”);$sql=“select * from customers”;$sql=$sql.“where cust_sex=’F’”;$result=mysql_query($sql,$con);if($result){ echo “查詢成功!
”;$num=mysql_num_rows($result);//如果結果為空,則為0行 echo “所要查詢的女性客戶人數為:”.$num.“位
”;} else echo “查詢失敗!
”;?>第四篇:淺談Visual FoxPro數據庫程序設計教學(劉杰)
第五篇:程序設計教學總結