第一篇:《Visual FoxPro 數(shù)據(jù)庫程序設(shè)計》教學(xué)總結(jié)
《Visual FoxPro 數(shù)據(jù)庫程序設(shè)計》
教學(xué)總結(jié)
Visual FoxPro 數(shù)據(jù)庫程序設(shè)計作為國家計算機等級考試的一部分,其重要性不言而喻。該課程的突出特點是可視化操作居多,簡單、易于理解,結(jié)合本人的教學(xué)過程及同學(xué)們的學(xué)習(xí)特點,主要有以下兩點值得注意的地方:
1.學(xué)生學(xué)習(xí)的主動性有待加強。學(xué)生對該課程的接受相當(dāng)快,很容易理解和上手,但通常學(xué)生們在上完課之后,幾乎不會再利用業(yè)余時間復(fù)習(xí),這嚴(yán)重影響了輔導(dǎo)的有效性。
2.VFP課程作為一種可視化的軟件系統(tǒng),其界面操作是很重要的一部分,如果條件允許,建議在多媒體教室進行該課程的講解。相信直觀的多媒體教學(xué)方式能使教學(xué)效果事半功倍。以上是本人考慮的有待改進的地方,如有偏頗,望諒解。當(dāng)然,鑒于榮宇教育嚴(yán)格的管理制度和學(xué)生考試意識的濃重,相信本次考試會取得比較良好的成績。
《Visual FoxPro 數(shù)據(jù)庫程序設(shè)計》
考點總結(jié)
一 VFP基礎(chǔ)知識
1.基本概念—選擇和填空題
數(shù)據(jù)庫,數(shù)據(jù)模型,數(shù)據(jù)庫管理系統(tǒng),類和對象,事件,方法 2.關(guān)系數(shù)據(jù)庫
(1)關(guān)系數(shù)據(jù)庫:關(guān)系模型,關(guān)系模式,關(guān)系,元組,屬性,域,主關(guān)鍵字和外部關(guān)鍵字(2)關(guān)系運算:選擇,投影,連接
(3)數(shù)據(jù)的一致性和完整性:實體完整性,域完整性,參照完整性—掌握完整性與索引類型之間的對應(yīng)關(guān)系,以及不同索引類型的作用
3.VFP的基本數(shù)據(jù)元素:
(1)常量,變量,表達式--掌握不同類型常量所占的字節(jié)數(shù)
(2)常用函數(shù):字符處理函數(shù),數(shù)值計算函數(shù),日期時間函數(shù),數(shù)據(jù)類型轉(zhuǎn)換函數(shù),測試函數(shù)--掌握不同函數(shù)的返回值類型 二 VFP數(shù)據(jù)庫的基本操作
1.數(shù)據(jù)庫和表的建立、修改與有效性校驗:--上機題的第一題,必須掌握
(1)表結(jié)構(gòu)的建立與修改
(2)表記錄的瀏覽、增加、刪除與修改(3)創(chuàng)建數(shù)據(jù)庫,向數(shù)據(jù)庫添加或移除表(4)表的索引:主索引、候選索引、普通索引、唯一索引 2.多表操作(1)選擇工作區(qū)
(2)建立表之間的關(guān)聯(lián):一對一的關(guān)聯(lián),一對多的關(guān)聯(lián)。(3)設(shè)置參照完整性(4)建立表間臨時關(guān)聯(lián)
3.建立視圖與數(shù)據(jù)查詢—上機題的第二題,必須掌握(1)查詢文件的建立、執(zhí)行與修改(2)視圖文件的建立、查看與修改(3)建立多表查詢(4)建立多表視圖
三 SQL(筆試部分最重要的章節(jié),是二級考試的核心內(nèi)容,必須熟練掌握,機試部分也有所體現(xiàn))1.SQL的數(shù)據(jù)定義功能:(1)create table(2)alter table 2.SQL的數(shù)據(jù)修改功能:(1)DELETE(2)INSERT(3)UPDATE 3.SQL的數(shù)據(jù)修改功能:(1)簡單查詢(2)嵌套查詢
(3)連接查詢:內(nèi)連接,外連接,左連接,右連接,完全連接(4)分組域計算查詢(5)集合的并運算
四 項目管理器、設(shè)計器和向?qū)У氖褂?1.使用項目管理器:(1)使用“數(shù)據(jù)”選項卡(2)使用“文檔”選項卡 2.使用表單設(shè)計器:--上機題(1)在表單中加入和修改控件對象(2)設(shè)定數(shù)據(jù)環(huán)境 3.使用菜單設(shè)計器:(1)建立主選項(2)設(shè)計子菜單
(3)設(shè)定菜單選項程序代碼
4.使用報表設(shè)計器--上機題的最后一題,但出的幾率不大(1)生成快速報表(2)修改報表布局(3)設(shè)計分組報表(4)設(shè)計多欄報表
復(fù)習(xí)建議:
筆試部分:在熟悉教材的基礎(chǔ)上,反復(fù)做培訓(xùn)機構(gòu)發(fā)的套題,做完套題后,再回頭看教材,然后再回頭重新做題,如此在不斷的反復(fù)中查漏補缺。
機試部分:在發(fā)的模擬光盤里有上機樣本試題,附有視頻演示,熟悉考試的機試環(huán)境。
第二篇:VF數(shù)據(jù)庫程序設(shè)計教案
Visual Foxpro數(shù)據(jù)庫程序設(shè)計教案
姓名:
李運娣
系別:
計算機
第1章 Visual FoxPro 數(shù)據(jù)庫基礎(chǔ)
本章重點與學(xué)習(xí)目標(biāo):
? 了解數(shù)據(jù)庫系統(tǒng)的相關(guān)概念
? 數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng) ? 數(shù)據(jù)庫管理系統(tǒng)發(fā)展過程
? 概念模型以及常用的數(shù)據(jù)模型—層次模型、網(wǎng)狀模型、關(guān)系模型
? 掌握關(guān)系數(shù)據(jù)庫
? 關(guān)系模型的相關(guān)屬于
? 數(shù)據(jù)庫設(shè)計基礎(chǔ)
? 數(shù)據(jù)庫設(shè)計的步驟和過程
? 了解VF系統(tǒng)的發(fā)展過程
? 數(shù)據(jù)庫管理系統(tǒng)的發(fā)展
? VF的發(fā)展簡史及了解Visual FoxPro系統(tǒng)的特點 ? 掌握VF系統(tǒng)的啟動與退出方法 ? 熟悉VF系統(tǒng)的用戶界面
? 熟悉VF項目管理器
? 創(chuàng)建新項目
? 項目管理器窗口的各類選項卡
教學(xué)器材:
多媒體教學(xué)
本章課時: 3學(xué)時
§1.1 數(shù)據(jù)庫基礎(chǔ)知識
§1.1.1 計算機數(shù)據(jù)管理的發(fā)展
1.數(shù)據(jù)與數(shù)據(jù)處理 數(shù)據(jù)是指存儲在某一種媒體上能夠識別的物理符號;數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程。2.計算機數(shù)據(jù)管理
數(shù)據(jù)管理:是指對數(shù)據(jù)的組織、分類、編碼、存儲、檢索、維護等,它是數(shù)據(jù)處理的中心問題。
數(shù)據(jù)管理技術(shù)的發(fā)展過程:人工管理階段(40年代中--50年代中);文件系統(tǒng)階段(50年代末--60年代中);數(shù)據(jù)庫系統(tǒng)階段(60年代末--現(xiàn)在)。
§1.1.2 數(shù)據(jù)庫系統(tǒng)
1.數(shù)據(jù)庫有關(guān)概念
數(shù)據(jù)庫(DataBase):指數(shù)據(jù)庫系統(tǒng)中以一定的方式將相關(guān)數(shù)據(jù)組織在一起,存儲在外存儲設(shè)備上形成的、為多個用戶共享、與應(yīng)用程序相互獨立的相關(guān)數(shù)據(jù)集合。
數(shù)據(jù)庫管理系統(tǒng)(DBMS): 用于建立、使用和維護數(shù)據(jù)庫的系統(tǒng)軟件。數(shù)據(jù)庫管理系統(tǒng)對數(shù)據(jù)庫進行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。
數(shù)據(jù)庫應(yīng)用系統(tǒng):數(shù)據(jù)庫應(yīng)用系統(tǒng)簡稱數(shù)據(jù)庫系統(tǒng),是指系統(tǒng)開發(fā)人員利用數(shù)據(jù)庫系統(tǒng)資源開發(fā)出來的,面向某一類實際應(yīng)用的應(yīng)用軟件系統(tǒng)。
數(shù)據(jù)庫管理員(DBA):負責(zé)全面管理和實施數(shù)據(jù)庫控制和維護的技術(shù)人員。
2.數(shù)據(jù)庫系統(tǒng)的特點
數(shù)據(jù)庫系統(tǒng)是指引進數(shù)據(jù)庫技術(shù)后的計算機系統(tǒng),實現(xiàn)有組織地、動態(tài)地存儲大量相關(guān)數(shù)據(jù),提供數(shù)據(jù)處理和信息資源共享的便利手段。特點:實現(xiàn)數(shù)據(jù)共享,減少數(shù)據(jù)冗余;采用特定的數(shù)據(jù)模型;具有較高的數(shù)據(jù)獨立性;有統(tǒng)一的數(shù)據(jù)控制功能
§1.1.3 數(shù)據(jù)模型
1.實體的描述:實體的定義、屬性、實體集和實體型 2.實體間聯(lián)系及聯(lián)系的類型
定義:實體之間相對應(yīng)的關(guān)系稱為聯(lián)系,它反映了現(xiàn)實世界事物之間的相互關(guān)聯(lián)。
類型:一對一聯(lián)系;一對多聯(lián)系;多對多聯(lián)系 3.數(shù)據(jù)模型簡介
數(shù)據(jù)模型是在數(shù)據(jù)庫領(lǐng)域中定義數(shù)據(jù)及其操作的一種抽象表示。類型:網(wǎng)狀模型;層次數(shù)據(jù)模型;關(guān)系模型
§1.2 關(guān)系數(shù)據(jù)庫 §1.2.1 關(guān)系模型
1.關(guān)系定義的定義及相關(guān)術(shù)語
一個關(guān)系就是一張二維表,通常將一個沒有重復(fù)行、重復(fù)列的二維表看成一個關(guān)系,每個關(guān)系都有一個關(guān)系名。
相關(guān)術(shù)語:元組、屬性、域、關(guān)鍵字、外部關(guān)鍵字 2.關(guān)系的特點
? 關(guān)系必須規(guī)范化
? 二維表中的每一列都有唯一的字段名且取值性質(zhì)相同 ? 二維表中不允許出現(xiàn)完全相同的兩行
? 二維表中可以任意交換行的順序和列的順序 3.實際關(guān)系模型
一個具體的關(guān)系是由若干個關(guān)系模式組成。在VF中,一個數(shù)據(jù)庫中包含相互之間存在聯(lián)系的多個表。這個數(shù)據(jù)庫文件就代表一個實際的關(guān)系模型。為了反映出各個表所表示的實際實體之間的聯(lián)系,公共字段名往往起著“橋梁”的作用。
? 例1.1 部門-職工-工資關(guān)系模型 ? 例1.2 圖書-讀者-借閱關(guān)系模型
§1.2.2 關(guān)系運算
1.傳統(tǒng)的集合運算:交、并、差 2.專門的關(guān)系運算
選擇定義:從一個關(guān)系模式中找出滿足給定條件的記錄的操作稱為選擇,選擇是從行的角度進行的運算,相當(dāng)于對關(guān)系進行水平分解。
投影定義:投影運算從關(guān)系中選取若干屬性形成一個新的關(guān)系。連接定義:將兩個關(guān)系模式的若干屬性拼接成一個新的關(guān)系模式的操作,對應(yīng)的新關(guān)系中,包含滿足連接條件的所有元組?!?.3 數(shù)據(jù)庫設(shè)計基礎(chǔ) §1.3.1數(shù)據(jù)庫設(shè)計步驟
1.設(shè)計原則
? 概念單一化”一事一地”原則 ? 避免在表之間出現(xiàn)重復(fù)字段
? 表中的字段必須是原始數(shù)據(jù)和基本數(shù)據(jù)元素 ? 用外部關(guān)鍵字保證有關(guān)聯(lián)的表之間的聯(lián)系 2.設(shè)計步驟
? 需求分析
? 確定需要的表 ? 確定所需字段 ? 確定聯(lián)系 ? 設(shè)計求精
§1.3.2 數(shù)據(jù)庫設(shè)計過程
1.需求分析:用戶需求主要包括信息需求、處理需求、安全性和完整性要求。
2.確定需要的表:數(shù)據(jù)庫設(shè)計過程中最主要的一步就是確定需要的表,分析的過程實際上就是對收集到的數(shù)據(jù)進行抽象的過程。3.確定所需字段 4.確定聯(lián)系 5.設(shè)計求精
§1.4 Visual FoxPro系統(tǒng)概述
Visual FoxPro6.0是微軟公司1998年發(fā)布的可視化編程語言集成包Visual Studio6.0中的一員,是一種用于數(shù)據(jù)庫結(jié)構(gòu)設(shè)計和應(yīng)用程序開發(fā)的功能強大的面向?qū)ο蟮挠嬎銠C數(shù)據(jù)庫軟件。
§1.4.1 Visual FoxPro 6.0的安裝與啟動
1.安裝步驟
將Visual FoxPro 6.0系統(tǒng)光盤插入CD-ROM驅(qū)動器,打開光盤,找到setup.exe文件,雙擊該文件,進行安裝向?qū)?。按照安裝向?qū)У奶崾荆瑔螕簟跋乱徊健卑粹o根據(jù)提示進行安裝。2.啟動系統(tǒng)
單擊Windows的“開始”按鈕,選擇“程序”“Microsoft Visual FoxPro 6.0”“Microsoft Visual FoxPro 6.0”菜單項?!?.4.2 Visual FoxPro 6.0的主界面
1.菜單操作
下拉式菜單項:
主菜單欄中包括8個下拉式菜單項:文件(F)、編輯(E)、顯示(V)、工具(T)、程序(P)、項目(Q)、窗口(W)、幫助(H)。2.命令操作
顯示與隱藏命令窗口的方法:
單擊命令窗口右上角的關(guān)閉按鈕可以關(guān)閉它,然后通過“窗口”菜單下的“命令窗口”選項可以重新打開。3.項目管理器窗口
項目管理器是VF中各種數(shù)據(jù)和對象的主要組織工具。一個項目是文件、數(shù)據(jù)、文檔和對象的集合?!?.4.3 工具欄的使用
1.顯示或隱藏工具欄 2.定制工具欄
3.修改現(xiàn)有工具欄
§1.4.4 Visual FoxPro 6.0的配置
為了使系統(tǒng)滿足個性化的要求,可以定制自己的系統(tǒng)環(huán)境。在VF中可以使用“選項”對話框或SET命令進行附加的配置設(shè)定,這里主要用“工具”菜單下的“選項”進行設(shè)定。§1.5 項目管理器
項目是指文件、數(shù)據(jù)、文檔和對象的集合?!绊椖抗芾砥鳌笔荲F中處理數(shù)據(jù)和對象的主要組織工具,它為系統(tǒng)開發(fā)者提供了極為便利的工作平臺,一是提供了簡便的、可視化的方法來組織和處理表、數(shù)據(jù)庫、表單、報表、查詢和其他一切文件;二是在項目管理器中可以將應(yīng)用系統(tǒng)編譯成一個擴展名為.app的應(yīng)用文件或.exe的可執(zhí)行文件?!?.5.1創(chuàng)建項目
1.創(chuàng)建新項目
2.打開和關(guān)閉項目 3.各類文件選項卡 §1.5.2 使用項目管理器
1.創(chuàng)建文件 2.添加文件 3.修改文件 4.移去文件
5.其他按鈕:“瀏覽”按鈕、“關(guān)閉”和“打開”按鈕、“預(yù)覽”按鈕、“運行”按鈕、“連編”按鈕
§1.5.3 定制項目管理器
1.移動、縮放和折疊 2.拆分項目管理器 3.停放項目管理器
§1.6 向?qū)?、設(shè)計器、生成器簡介
VF提供真正的面向?qū)ο蟮某绦蛟O(shè)計工具,使用它的各種向?qū)А⒃O(shè)計器和生成器可以更加簡便、快速、靈活地進行應(yīng)用程序開發(fā)?!?.6.1 Visual FoxPro的向?qū)?/p>
1.啟動向?qū)?2.使用向?qū)?/p>
3.修改用向?qū)?chuàng)建的項 §1.6.2Visual FoxPro的設(shè)計器
1.各種設(shè)計器:表設(shè)計器、數(shù)據(jù)庫設(shè)計器、報表設(shè)計器、查詢設(shè)計器、視圖設(shè)計器、表單設(shè)計器、菜單設(shè)計器、數(shù)據(jù)環(huán)境設(shè)計器、連接設(shè)計器
2.打開Visual FoxPro設(shè)計器
§1.6.3Visual FoxPro的生成器
各種生成器:表單生成器、表格生成器、編輯框生成器、列表框生成器、文本框生成器、組合框生成器、命令按鈕組生成器、選項按鈕組生成器 1.啟動“表單生成器”
2.對表單中的控件使用相應(yīng)的生成器 3.使用自動格式生成器來設(shè)置控制格式 4.使用參照完整性生成器
本章小結(jié):
本章首先介紹了數(shù)據(jù)庫系統(tǒng)的有關(guān)概念、數(shù)據(jù)庫管理系統(tǒng)的功能,然后介紹了VF6.0的初步知識,包括其用戶界面、工具欄的使用和系統(tǒng)配置。通過本章的學(xué)習(xí)希望對數(shù)據(jù)庫的相關(guān)知識有所了解,同時也對VF6.0有初步的認識,為后面的進一步學(xué)習(xí)打下基礎(chǔ)。
本章作業(yè):
1.?dāng)?shù)據(jù)庫管理員的職責(zé)包括哪些方面? 2.簡述數(shù)據(jù)庫系統(tǒng)的特點。3.簡述關(guān)系的特點。
4.數(shù)據(jù)庫有哪些設(shè)計原則。5.簡述數(shù)據(jù)庫的設(shè)計步驟。6.創(chuàng)建項目的方法有哪些?
教學(xué)后記:
第2章 VF程序設(shè)計基礎(chǔ)
本章重點與學(xué)習(xí)目標(biāo):
? 掌握VF常用數(shù)據(jù)類型
? 字符型、數(shù)值型、浮點型、雙精度、整型等
? 掌握VF常量、變量的定義與使用方法及運算符和表達式
? 常量類型、變量類型及使用
? VF運算符及優(yōu)先級、VF各種表達式
? 了解VF程序設(shè)計基本知識及基本程序結(jié)構(gòu)
? 程序文件的建立與編輯和程序的調(diào)用方法
? 程序的三種結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
? 掌握VF的過程與函數(shù)的定義及運用方法
? 子過程與過程的定義及操作 ? 自定義函數(shù)的運用
? 掌握變量的作用域與參數(shù)的傳遞
? VF變量的作用域 ? VF參數(shù)的傳遞
教學(xué)器材:
多媒體教學(xué)
本章課時:7學(xué)時
§2.1 常量與變量
VF主要數(shù)據(jù)類型有:字符型、數(shù)值型、貨幣型、日期型、日期時間型、邏輯型、備注型、通用型?!?.1.1 常量
常量是指在所有的操作過程中保持不變的數(shù)。
VF主要有:數(shù)值型常量、貨幣型常量、字符型常量、日期型常量、日期時間型常量和邏輯型常量?!?.1.2 變量
變量是能夠隨時更改的。每個變量有一個變量名。
命名規(guī)則:變量名以字母,漢字和下劃線開頭,后接字母、數(shù)字、漢字和下劃線構(gòu)成。
VF變量分為字段變量和內(nèi)存變量
數(shù)組:與內(nèi)存變量不同,數(shù)組在使用之前一般要DIMENSION或DECLARE命令顯式創(chuàng)建,并且規(guī)定數(shù)組是一維數(shù)組還是二維數(shù)組,數(shù)組名和數(shù)組大小。
數(shù)組創(chuàng)建數(shù)組的格式:
DIMENSION <數(shù)組名>(<下標(biāo)上限1> [,<下標(biāo)上限2>])[,?] DECLARE <數(shù)組名>(<下標(biāo)上限1> [,<下標(biāo)上限2>])[,?] §2.1.3 內(nèi)存變量常用命令
1.內(nèi)存變量的賦值
格式1 :STORE <表達式>TO<內(nèi)存變量名表> 格式2:<內(nèi)存變量名>=<表達式>
2.表達式的顯示
格式1 :?[<表達式表>] 格式2:??[<表達式表>] 3.顯示內(nèi)存變量
格式1: LIST MEMORY[LIKE<通配符>][TO PRINTER|TO FILE<文件名>] 2: DISPLAY MEMORY[LIKE<通配符>][TO PRINTER|TO FILE<文件名>] 4.清除內(nèi)存變量
格式1 :CLEAR MEMORY 格式2:RELEASE<內(nèi)存變量名表> 格式3 :RELEASE ALL [EXTENDED] 格式4:RELEASE ALL [LIKE<通配符>| EXCEPT<通配符>] 5.表與數(shù)組之間的數(shù)據(jù)傳遞
將表的當(dāng)前記錄復(fù)制到數(shù)組 格式1 :SCATTER [ FIELDS<字段名表>][ MEMO ] TO <數(shù)組名> [ BLANK ] 格式2:SCATTER [FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>] [ MEMO ] TO<數(shù)組名> [ BLANK ] §2.2 表達式
表達式是由常量、變量和函數(shù)通過特定的運算符連接起來的式子。§2.2.1 數(shù)值、字符與日期時間表達式
數(shù)值表達式又叫做算術(shù)表達式,是最容易理解的一種表達式。數(shù)值型數(shù)據(jù)可以是數(shù)值型常量或者變量。
運算符包括:()、**或^、*、/、%、+、-§2.2.2 關(guān)系表達式
稱為簡單邏輯表達式,它由關(guān)系運算符將兩個運算對象連接起來形成。運算符包括:<、<=、>、>=、=、==、<>或#或!=、$ §2.2.3 邏輯表達式
由邏輯運算符將邏輯型數(shù)據(jù)連接形成的,其運算符結(jié)果仍然是邏輯數(shù)據(jù)。運算符包括:.NOT.或!(邏輯非)、.AND.(邏輯與)和.OR.(邏輯或)?!?.2.4 運算符優(yōu)先級
表達式中出現(xiàn)了多種不同類型的運算符時,其運算符優(yōu)先級如下:算術(shù)運算符>字符運算符和日期時間運算符>關(guān)系運算符>邏輯運算??梢杂美ㄌ柛淖儍?yōu)先順序,強令表達式的某些部分優(yōu)先運行。括號內(nèi)的運算總是優(yōu)先于括號外的運算。對于多重括號,總是由內(nèi)到外。§2.3 常用函數(shù)
§2.3.1 數(shù)值函數(shù)
常用數(shù)值函數(shù)有:ABS()函數(shù)、SIGN()函數(shù)、SQRT()函數(shù)、PI()函數(shù)、INT()函數(shù)、CEILING()函數(shù)、FLOOR()函數(shù)、ROUND()函數(shù)、MOD()函數(shù)、MAX()函數(shù) §2.3.2 字符函數(shù)
常用字符函數(shù)有:LEN()函數(shù)、LOWER()函數(shù)、UPPER()函數(shù)、SPACE()函數(shù)、TRIM()函數(shù)、LTRIM()函數(shù)、ALLTRIM()函數(shù)、LEFT()函數(shù)、RIGHT()函數(shù)、SUBSTR()函數(shù)、OCCURS()函數(shù)、AT()函數(shù)、ATC()函數(shù)、STUFF()函數(shù)、CHRTRAN()函數(shù)、LIKE()函數(shù) §2.3.3 日期和時間函數(shù)
常用日期和時間函數(shù)有:DATE()函數(shù)、TIME()函數(shù)、DATETIME()函數(shù)、YEAR()函數(shù)、MONTH()函數(shù)、DAY()函數(shù)、HOUR()函數(shù)、MINUTE()函數(shù)、SEC()函數(shù) §2.3.4 數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
常用數(shù)據(jù)類型轉(zhuǎn)換函數(shù)有:STR()函數(shù)、VAL()函數(shù)、CTOD()函數(shù)、CTOT()函數(shù)、DTOC()函數(shù)、TTOC()函數(shù)、宏替換函數(shù) §2.3.5 測試函數(shù)
常用測試函數(shù)有:BETWEEN()函數(shù)、ISNULL()函數(shù)、EMPTY()函數(shù)、VARTYPE()函數(shù)、EOF()函數(shù)、BOF()函數(shù)、RECNO()函數(shù)、RECCOUNT()函數(shù)、IIF()函數(shù)、DELETED()函數(shù) §2.4 程序與程序文件 §2.4.1 程序的概念
定義:程序是能夠完成一定任務(wù)的命令的有序集合。這組命令被存放在稱為程序文件或命令文件的文本文件中。
程序中經(jīng)常插入注釋,以提高程序的可讀性。注釋為非執(zhí)行代碼,不會影響程序的功能。
注釋方式:NOTE<注釋內(nèi)容>或*<注釋內(nèi)容>,以NOTE或*開頭的代碼行為注釋行,一般用于對下面一段命令的說明。
&&<注釋內(nèi)容>,命令行后可添加注釋,對所在行命令的說明。
§2.4.2 程序文件的建立與執(zhí)行
1.程序文件的建立
2.打開、修改程序文件 3.執(zhí)行程序文件
§2.4.3 簡單的輸入/輸出/命令
1.INPUT命令: INPUT [<字符表達式>] TO <內(nèi)存變量> 2.ACCEPT命令:ACCEPT [<字符表達式>] TO <內(nèi)存變量> 3.WAIT命令:WAIT [<字符表達式>] [TO <內(nèi)存變量>] [WINDOW [AT <行>,<列>]][NOWAIT] [CLEAR | NOCLEAR] [TIMEOUT <數(shù)值表達式>] §2.5 程序的基本結(jié)構(gòu) §2.5.1 選擇結(jié)構(gòu)
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 循環(huán)結(jié)構(gòu)
1.DO WHILE-ENDDO語句
DO WHILE <條件> <命令序列> [LOOP] [EXIT] ENDDO 2.FOR語句
FOR <循環(huán)變量>=<初值> to <終值> [step<步長>] <循環(huán)體> [EXIT] [LOOP] ENDFOR|NEXT 3.SCAN-ENDSCAN語句
SCAN [<范圍>] [FOR <條件1>] [WHILE<條件2>] <循環(huán)體> [LOOP] [EXIT] ENDSCAN §2.6 多模塊程序設(shè)計
模塊是一個相對獨立的程序段,它可以被其他模塊所調(diào)用,也可以去調(diào)用其他的模塊。通常,把被其他模塊調(diào)用的模塊稱為子程序,把調(diào)用其他模塊而沒有被其他模塊調(diào)用的模塊稱為主程序。§2.6.1 模塊的定義和調(diào)用
1.模塊的定義:模塊可以是命令文件,也可以是過程。
語法格式:
PROCEDURE | FUNCTION<過程名> <命令序列> [RETURN[<表達式>]] [ENDPROC︱
格式1: SET PROCEDURE TO 功能:關(guān)閉所有打開的過程文件
格式2:RELEASE PROCEDURE <過程文件1>[,<過程文件2>,?] 2.模塊調(diào)用
格式1:DO <文件名>︱<過程名> 格式2:<文件名>︱<過程名>()
§2.6.2 參數(shù)傳遞
1.PARAMETERS和LPARMETERS語句傳遞參數(shù)
PARMETERS<形參變量1>[,<形參變量2>,?] LPARMETERS <形參變量1>[,<形參變量2>,?] 2.調(diào)用模塊程序
格式1:DO <文件名>︱<過程名>WITH<實參1>[,<實參2>,?] 格式2:DO <文件名>︱<過程名>(<實參1>[,<實參量2>,?])
§2.6.3 變量的作用域
1.變量的作用域:指變量在什么范圍內(nèi)是有效的或者能夠被訪問的。
內(nèi)存變量分類:公共變量、私有變量、局部變量 2.變量的隱藏
開發(fā)應(yīng)用程序時,主程序與子程序不一定是由同一個人來設(shè)計的,子程序中用到的變量實際上在主程序中已經(jīng)建立,子程序的運行會無意間改變主程序中變量的取值。為了解決這個問題,可以采用在子程序中使用PRIVATE命令隱藏主程序中可能存在的變量,使得這些變量在子程序中暫時無效。
格式:PRIVATE <內(nèi)存變量表> PRIVATE ALL[LIKE<通配符>|EXCEPT<通配符>] 本章小結(jié):
本章主開始先介紹了語言的一些基本成分,包括常量、變量、函數(shù)和表達式,同時也介紹了一些相關(guān)的命令,在后半部分主要介紹了程序設(shè)計的基本內(nèi)容,包括程序的概念、程序的基本結(jié)構(gòu)、多模塊程序設(shè)計等。通過本章的學(xué)習(xí)要求同學(xué)們對程序設(shè)計有初步的了解,并且能編寫小的算法程序來進行特定的數(shù)據(jù)處理。本章作業(yè):
上機練習(xí)課后習(xí)題三
教學(xué)后記:
第3章 VF數(shù)據(jù)庫及操作
本章重點與學(xué)習(xí)目標(biāo): ? 了解VF項目管理器 ? 熟悉VF數(shù)據(jù)庫
? 數(shù)據(jù)庫的創(chuàng)建方法 ? 數(shù)據(jù)庫的應(yīng)用 ? 數(shù)據(jù)庫的修改 ? 數(shù)據(jù)庫的刪除
? 掌握VF數(shù)據(jù)庫表的相關(guān)操作
? 數(shù)據(jù)庫表、自由表的創(chuàng)建 ? 表結(jié)構(gòu)的修改
? 數(shù)據(jù)庫表的關(guān)閉與打開 ? 數(shù)據(jù)庫表的基本操作
? 掌握數(shù)據(jù)庫表索引
? 索引的類型 ? 索引的建立
? 了解數(shù)據(jù)完整性相關(guān)概念 教學(xué)器材:
多媒體教學(xué)
教學(xué)課時:4學(xué)時
§3.1 Visual FoxPro數(shù)據(jù)庫及其建立 §3.1.1 基本概念
數(shù)據(jù)庫:數(shù)據(jù)庫是一個邏輯上的概念和手段,通過一組系統(tǒng)文件將相互關(guān)聯(lián)的數(shù)據(jù)庫表及其相關(guān)的數(shù)據(jù)庫對象統(tǒng)一組織和管理?!?.1.2 建立數(shù)據(jù)庫
常用方法:(1)使用項目管理器中建立數(shù)據(jù)庫
(2)使用“新建”對話框建立數(shù)據(jù)庫(3)使用命令方式建立數(shù)據(jù)庫
格式:CREATE DATABASE[Databasename|?] §3.1.3 使用數(shù)據(jù)庫
常用方法:(1)在“項目管理器”中打開數(shù)據(jù)庫
(2)通過“打開”對話框打開數(shù)據(jù)庫(3)使用命令方式打開數(shù)據(jù)庫 格式:OPEN DATABASE §3.1.4 修改數(shù)據(jù)庫
常用方式:(1)從項目管理器中打開數(shù)據(jù)庫設(shè)計器
(2)用“打開”對話框打開數(shù)據(jù)庫設(shè)計器
§3.1.5 刪除數(shù)據(jù)庫
常用方法:(1)使用項目管理器刪除數(shù)據(jù)庫
(2)使用命令方式刪除數(shù)據(jù)庫 格式:DELETE DATABASE DatabaseName|? [DELETETABLES] [RECYCLE] §3.2 建立數(shù)據(jù)庫表
§3.2.1 在數(shù)據(jù)庫中建立表
方法:(1)使用項目管理器建立數(shù)據(jù)庫表
(2)使用“新建”或CREATE命令建立數(shù)據(jù)庫表
§3.2.2 修改表結(jié)構(gòu)
方法:(1)在“項目管理器”中修改表結(jié)構(gòu)
(2)在“數(shù)據(jù)庫設(shè)計器”中修改表結(jié)構(gòu)(3)使用命令修改表結(jié)構(gòu)
如果當(dāng)前不在數(shù)據(jù)庫設(shè)計器中,則首先要用USE命令打開要修改的表,然后使用命令方式MODIFY STRUCTURE打開表設(shè)計器。
§3.3 表的基本操作
§3.3.1 使用瀏覽器操作表
方法:(1)在項目管理器中將數(shù)據(jù)庫展開至表,并且選擇要操作的表,然后單擊“瀏覽”命令按鈕即可。(2)在數(shù)據(jù)庫設(shè)計器中選擇要操作的表,然后從“數(shù)據(jù)庫”菜單中
選擇“瀏覽”,或者對要操作的表單擊鼠標(biāo)右鍵,然后從快捷菜單中選擇“瀏覽”。(3)在命令窗口中,用USE命令打開要操作的表,然后輸入BROWSE 命令來瀏覽表。
§3.3.2 增加記錄的命令
APPEND命令: APPEND命令是在表的尾部增加一個或多個新記錄。
格式:APPEND或APPEND BLANK INSERT命令: INSERT命令可以在表的任意位置插入新的記錄。
格式:INSERT [BEFORE][BLANK] §3.3.3 刪除記錄的命令
邏輯刪除: DELETE [FOR<邏輯表達式>] 恢復(fù)記錄的命令: RECALL [FOR<邏輯表達式>] 物理刪除有刪除標(biāo)記的記錄: PACK 物理刪除表中的全部記錄: ZAP §3.3.4 修改記錄的命令
EDIT或CHANGE命令交互修改:這兩個命令均用于交互式地對當(dāng)前表記錄進行編輯、修改,操作界面類似于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索引是指由指針構(gòu)成的文件,這些指針邏輯上按照索引關(guān)鍵字的值進行排序。
分類:主索引、候選索、唯一索引、普通索引 §3.4.2 在設(shè)計器中建立索引
1.單項索引
2.復(fù)合字段索引:在多個字段上的索引稱做復(fù)合字段索引。
3.索引文件的種類:非結(jié)構(gòu)單索引文件、非結(jié)構(gòu)復(fù)合索引文件、結(jié)構(gòu)復(fù)合索引文件
§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 數(shù)據(jù)完整性
§3.5.1 實體完整性與主關(guān)鍵字
實體完整性是保證表中記錄唯一的特性,在VFP中利用主關(guān)鍵字和候選索引字來保證表中記錄的惟一性,即實體惟一性?!?.5.2 域完整性與約束規(guī)則
域完整性:通過限定字段的取值類型和取值范圍來保證域完整性,還可以進一步通過域約束規(guī)則來保證域完整性。約束規(guī)則也稱作字段有效性規(guī)則,用于檢驗輸入數(shù)據(jù)的正確性。
§3.5.3 參照完整性與表之間的聯(lián)系
建立參照完整性:(1)建立表之間的“永久聯(lián)系”。
(2)設(shè)置參照完整性約束。
§3.6 自由表
§3.6.1 數(shù)據(jù)庫表與自由表
創(chuàng)建自由表:(1)使用項目管理器創(chuàng)建自由表
(2)利用菜單方式創(chuàng)建自由表
(3)利用命令窗口的create命令創(chuàng)建自由表
§3.6.2 將自由表添加到數(shù)據(jù)庫
方法:(1)使用項目管理器添加自由表
(2)使用數(shù)據(jù)庫設(shè)計器添加自由表(3)利用窗口命令添加自由表 §3.6.3 從數(shù)據(jù)庫中移出表
方法:(1)使用項目管理器移出表
(2)使用數(shù)據(jù)庫設(shè)計器移出表(3)利用命令窗口方式移去表
§3.7 多個表的同時使用
§3.7.1 多個工作區(qū)的概念
多工作區(qū): VF中在一個工作區(qū)中可以使用一個表,如果在同一時刻需要打開多個表,則只需要在不同的工作區(qū)中打開不同的表。系統(tǒng)默認的總是在第1個工作區(qū)中工作,如果沒有指定工作區(qū),實際是都是在第1個工作區(qū)打開表和操作表。
利用命令窗口選擇工作區(qū): SELECT nWorkAreca | cTabeleAlias §3.7.2 使用不同工作區(qū)的表
Visual FoxPro也允許利用IN 命令在一個工作區(qū)內(nèi)使用另一個工作區(qū)的表。即命令: In nWorkAreca | cTabeleAlias §3.7.3 表之間的聯(lián)系
建立臨時關(guān)聯(lián): SET RELATION TO eExpression1 INTO nWorkAreca | cTabeleAlias
§3.8 排序
排序是將記錄按需要的順序重新排列,產(chǎn)生一個新的數(shù)據(jù)庫文件,實現(xiàn)從物理上對數(shù)據(jù)庫的重新排列。
物理排序: SORT TO TableName ON FieldName1[/A | /D] [/C] [, FieldName2 [/A | /D] [/C] ?] [ASCENDING | DESCENDING] [FOR lExpression1] [ FIELDS FieldNamelist ] 本章小結(jié)
本章主要介紹了VF數(shù)據(jù)庫相關(guān)概念與操作,數(shù)據(jù)庫表的創(chuàng)建與基本操作,表索引的創(chuàng)建。通過本章的學(xué)習(xí)要求掌握數(shù)據(jù)庫的基本操作,表的建立與結(jié)構(gòu)的設(shè)置,索引的建立方法,了解數(shù)據(jù)的完整約束。
本章作業(yè):
上機聯(lián)系課后習(xí)題三
教學(xué)后記:
第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 本章重點與學(xué)習(xí)目標(biāo): ? SQL語言概述
? 了解SQL語言的相關(guān)知識 ? 掌握SELECT語句的使用方法
? 查詢功能
? 掌握SELECT語句的使用方法
? 了解使用謂詞和量詞的復(fù)雜查詢語句
? 操作和定義功能
? 掌握插入、更新和刪除等操作語句
? 掌握表的定義、刪除和結(jié)構(gòu)修改等定義語句 ? 掌握視圖的定義方法
教學(xué)器材:
多媒體教學(xué)
教學(xué)課時:8學(xué)時
§4.1 SQL概述
SQL定義:SQL(Structured Query Language)是一種非過程化的語言,也是結(jié)構(gòu)化查詢語言的縮寫,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。
§4.2 查詢功能
SQL的核心是查詢,SQL的查詢命令也稱SELECT命令,它提供了簡單而又豐富的SELECT數(shù)據(jù)查詢語句。語法格式:
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短語構(gòu)成無條件查詢或由SELECT、FROM和WHERE短語構(gòu)成條件查詢。
舉例:課本例4.1~4.5 §4.2.2 簡單的連接查詢
定義:簡單聯(lián)接查詢也是一類基于多個表的查詢,與嵌套查詢的區(qū)別是要查詢的結(jié)果可以出自多個表中,而嵌套查詢的結(jié)果是基于一個表中。舉例:課本例4.6與例4.7 §4.2.3 嵌套查詢
定義:嵌套查詢基于多個關(guān)系的查詢,查詢的結(jié)果是來自一個表,而查詢的條件卻涉及到多個表。
舉例:課本例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 簡單的計算查詢
字段函數(shù):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 別名與自連接查詢
格式:<關(guān)系名><別名> 舉例:課本例4.25 §4.2.10 內(nèi)外層互相關(guān)嵌套查詢
前面討論的都是外層查詢依賴于內(nèi)層查詢的結(jié)果,實際上,有時也需要內(nèi)、外層互相關(guān)的查詢,這是內(nèi)層查詢的條件需要外層查詢提供值,而外層查詢的條件需要內(nèi)層查詢的結(jié)果。舉例:課本例4.26 §4.2.11 使用量詞和謂詞的查詢
格式說明:<表達式> <比較運算符> [ ANY | ALL |SOME ](子查詢)和[NOT] EXISTS(子查詢)舉例:課本例4.27~4.30 §4.2.12 超連接查詢
分類:左聯(lián)接、右聯(lián)接、完全聯(lián)接 命令格式:SELECT??FROM Table INNER | LEFT | RIGHT | FULL JOIN Table ON JoinCondition WHERE?? 舉例:課本例4.31~4.34 §4.2.13 集合的并運算
定義:并運算是將兩個SELECT語句的查詢結(jié)果合并成一個查詢結(jié)果。運算符:UNION §4.2.14 VF SQL SELECT的幾個特殊選項
1.顯示部分結(jié)果
2.將查詢結(jié)果放到數(shù)組中 3.將查詢結(jié)果放到臨時文件中 4.將查詢結(jié)果存放到永久表中 5.將查詢結(jié)果存放到文本文件中 6.將查詢結(jié)果直接輸出到打印機 舉例:課本例4.35、4.36 §4.3 操作功能
§4.3.1 插入數(shù)據(jù)
格式一:INSERT INTO dbf_name[(fname1[,fname2,?])] VALUES(eExpression1[,eExpession2,?])格式二:INSERT INTO dbf_name from ARRAY ArrayName | from memvar §4.3.2 更新數(shù)據(jù)
格式:UPDATE TableName
set Column_Name1=eExpession1 [,Column_Name2=eExpession2?] where condition §4.3.3 刪除數(shù)據(jù)
格式: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
直接從數(shù)據(jù)庫刪除表對應(yīng)的文件。如果是數(shù)據(jù)庫中的表并且相應(yīng)的數(shù)據(jù)庫是當(dāng)前數(shù)據(jù)庫,則從數(shù)據(jù)庫中刪除了表,否則雖然從磁盤上刪除了表文件,但是在數(shù)據(jù)庫中的信息卻沒有刪除,此后會出現(xiàn)錯誤提示?!?.4.3 表結(jié)構(gòu)的修改
用三種命令格式,格式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
本章小結(jié):
本章比較全面地介紹了關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,重點介紹了SQL語言的查詢語句。通過本章的學(xué)習(xí),要求掌握SQL查詢語句,并對其數(shù)據(jù)操作和定義有一定的掌握。本章作業(yè):
上機練習(xí)課后習(xí)題三
教學(xué)后記:
第5章 查詢與視圖
本章重點與學(xué)習(xí)目標(biāo): ? 熟悉查詢設(shè)計器
? 查詢設(shè)計器的各個選項 ? 運用查詢設(shè)計器創(chuàng)建查詢
? 掌握VF視圖的相關(guān)知識
? 視圖的相關(guān)概念
? 視圖設(shè)計器的運用方法
? 視圖的創(chuàng)建及數(shù)據(jù)更新方法
教學(xué)器材:
多媒體教學(xué)
教學(xué)課時:2學(xué)時
§5.1查詢
§5.1.1查詢的概念
定義:查詢是指向一個數(shù)據(jù)庫發(fā)出的檢索信息的請求,它使用一些條件提取特定的記錄。實質(zhì)上就是一個預(yù)先定義好的SOL SELECT語句,以擴展名為qpr的文本文件保存在磁盤上的?!?.1.2查詢設(shè)計器
1.打開查詢設(shè)計器建立查詢 2.利用查詢向?qū)Ы⒉樵?§5.1.3建立查詢
例5.1 建立一個含有倉庫號、職工號、城市和工資信息的查詢
例5.2 在以上基礎(chǔ)上為查詢增加查詢計算表達式,計算出年工資。例5.3 為查詢設(shè)計排序,先按倉庫號升序排列,再按工資降序排列。例5.4 利用分組功能統(tǒng)計各倉庫年工資額的合計。§5.1.4查詢設(shè)計器的局限性
1.當(dāng)建立查詢并存盤后將產(chǎn)生一個擴展名為qpr的文本文件。
2.如果熟悉SOL SELECT,則可以直接用各種文本編輯器,通過自己寫的SOL SELECT語句建立查詢,最后把它保存查詢設(shè)計器的局限性為擴展名為qpr的文件。
3.查詢設(shè)計器只能建立一些比較規(guī)則的查詢,而復(fù)雜的查詢(嵌套查詢)就不行了。
§5.1.5使用查詢
1.查詢的運行
2.設(shè)計查詢的輸出形式 §5.2視圖
§5.2.1視圖的概念
視圖:視圖是一種基于表或其他視圖而定制的虛擬表,因此,視圖兼有“查詢”和“表”的特點。
分類:本地視圖、遠程視圖: §5.2.2建立視圖
建立視圖的方法:
1.使用CREATE VIEW命令打開視圖設(shè)計器建立視圖; 2.選擇菜單“文件→新建”建立視圖; 3.在“項目管理器”中建立視圖; 4.直接用SQL命令建立視圖?!?.2.3遠程視圖與連接
1.定義數(shù)據(jù)源和連接:可以在VFP內(nèi)部定義數(shù)據(jù)源和連接。
2.建立連接:使用項目管理器建立連接、使用菜單方式建立連接、使用CRETE CONNECTION 命令 3.建立遠程視圖
? 連接建立好之后就可以建立遠程視圖了。
? 建立遠程視圖和建立本地視圖的方法基本上是一樣的,只是在打開視圖設(shè)計器時有所不同。
? 建立遠程視圖時,一般要根據(jù)網(wǎng)絡(luò)上其它計算機或其它數(shù)據(jù)庫中的表建立視圖,所以需要首先選擇“連接”或“數(shù)據(jù)源”,然后再進入界面建立遠程視圖。
§5.2.4視圖與數(shù)據(jù)更新
1.指定可更新的表 2.指定可更新的字段 3.檢查更新合法性 4.使用更新方式 §5.2.5使用視圖
1.視圖操作 2.使用視圖
本章小結(jié):
本章主要介紹了Visual FoxPro檢索和操作數(shù)據(jù)庫的兩個基本工具或手段:查詢和視圖,它們都是根據(jù)基本表定義的,定義方式也類似,通過本章的學(xué)習(xí)要求掌握查詢和視圖的建立與使用方法。
本章作業(yè):
上機練習(xí)課后習(xí)題三
教學(xué)后記:
第三篇:計算機二級《MySQL數(shù)據(jù)庫程序設(shè)計》知識點總結(jié)
MySQL知識點總結(jié)
.數(shù)據(jù)操作:檢索、排序、過濾、分組、匯總、計算、聯(lián)接、子查詢與組合查詢.表操作:表的創(chuàng)建、修改、刪除和重命名、表數(shù)據(jù)的插入、更新和刪除.索引(含主、外鍵)、視圖
.難度編程:存儲過程與存儲函數(shù)、觸發(fā)器與事件、PHP.數(shù)據(jù)庫管理:事務(wù)處理、用戶與權(quán)限、備份與還原、數(shù)據(jù)庫維護
1.檢索數(shù)據(jù):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.過濾數(shù)據(jù):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次序優(yōu)于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)算術(shù)運算
Select prod_name,prod_price,prod_num,prod_price*prod_num as prod_money from products;4.使用數(shù)據(jù)處理函數(shù):文本處理函數(shù)、日期和時間處理函數(shù)、數(shù)值處理函數(shù)。5.匯總數(shù)據(jù):聚集函數(shù) SUM()AVG()COUNT()MAX()MIN()Select avg(distinct prod_price)from products;Select avg(prod_price)均價,max(prod_price)最高價 from products;6.分組數(shù)據(jù):group by? 創(chuàng)建分組、過濾分組、分組排序
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且產(chǎn)品數(shù)量大于2的產(chǎn)品數(shù)量,并按prod_id排序,注意分組語句中對象要前后一致,如下劃線部分。7.使用子查詢:進行過濾select?where?in(select?where?in(select?))、作為計算字段使用子查詢。8.聯(lián)接:join?on?(1)普通聯(lián)接
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’;可同時聯(lián)接多個表且可同時用于數(shù)據(jù)過濾,這種類型的聯(lián)接一般為內(nèi)部聯(lián)接。
(2)自聯(lián)接:一個表自己與自己聯(lián)接,注意判斷好各字段與前后兩個表的關(guān)系。(3)自然聯(lián)接:基本上簡歷的內(nèi)部聯(lián)接都是自然聯(lián)接。
(4)外部聯(lián)接:在關(guān)系表中沒有關(guān)聯(lián)的信息的行也能顯示出來的聯(lián)接,根據(jù)表在join字句的左邊還是右邊可分為左聯(lián)接與右聯(lián)接。(5)帶聚集函數(shù)的聯(lián)接
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;找出客戶對應(yīng)的訂單數(shù)。
9.組合查詢:連接多個(至少兩個)查詢語句,滿足其中一個查詢語句條件的結(jié)果都會顯示出來 union(不重復(fù)顯示)/union all(可重復(fù)顯示即全部顯示)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;注意每個查詢必須包含相同的列、表達式或者聚集函數(shù),列的數(shù)據(jù)類型必須兼容,排序語句只能放在最后面,該排序語句對組合查詢語句中的所有select語句都適用。10.全文本搜索:只支持引擎為MyISAM的表,不支持引擎為InnoDB的表,可對搜索結(jié)果進行智能排序后輸出,具有較高等級的行先返回。
Match(全文本搜索字段)against(’全文本搜索內(nèi)容’[with query expansion])其中下劃線部分為拓展語句,使用該語句,除了可以返回符合所設(shè)置的“全文本搜索內(nèi)容”的數(shù)據(jù)結(jié)果,還可返回與“全文本搜索內(nèi)容”有較高相似度的數(shù)據(jù)結(jié)果。(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.插入數(shù)據(jù):insert into?{values|select}?
Insert into products(prod_id,prod_name,prod_price)values(1,’豆?jié){’,2),(3,’雞蛋’,1);可同時插入多行數(shù)據(jù)。
Insert into products(prod_id,prod_name,prod_price)select vend_id,vend_name, vend_price from vendors where vend_id<=10;12.更新數(shù)據(jù):update [ignore]?set?,一般情況下,若更新的數(shù)據(jù)中有部分?jǐn)?shù)據(jù)出錯,則全部數(shù)據(jù)返回到原來的數(shù)據(jù),而ignore的作用在于即使更新的數(shù)據(jù)中出現(xiàn)錯誤,只對出現(xiàn)錯誤的數(shù)據(jù)返回到原來數(shù)據(jù),而未出現(xiàn)錯誤的數(shù)據(jù)返回更新后的結(jié)果實現(xiàn)更新。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.刪除數(shù)據(jù):delete from? Delete from products where prod_id between 10 an 50;14.表的相關(guān)操作
(1)創(chuàng)建表:對表結(jié)構(gòu)進行設(shè)置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;每個字段名后需要設(shè)置數(shù)據(jù)類型,default為指定默認值,只支持常量不支持函數(shù),且只在插入數(shù)據(jù)時起作用而在更新數(shù)據(jù)時不起作用,InnoDB是一個可靠的事務(wù)處理引擎,但不支持全文本搜索。
(2)更新表:對表結(jié)構(gòu)進行修改 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.索引的相關(guān)操作
(1)創(chuàng)建索引:常用于數(shù)據(jù)的快速檢索,MySQL中,常用索引在物理可分為:BTREE、HASH索引兩類;在具體用途上可分為:INDEX、UNIQUE、PRIMARY KEY、FOREIGN KEY、FULL TEXT、SPATIAL等。
1使用create index 語句創(chuàng)建索引,對已存在的表創(chuàng)建索引 ○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 語句創(chuàng)建索引,創(chuàng)建表的同時創(chuàng)建索引 ○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語句創(chuàng)建索引,修改表的同時添加索引 ○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.視圖的相關(guān)操作
視圖:虛擬的表,視圖本身不包含表中的列和數(shù)據(jù),它包含只是一個SQL查詢,常用于 檢索數(shù)據(jù)。*視圖的作用與規(guī)則。(1)創(chuàng)建視圖: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];--下劃線部分表示今后對該視圖數(shù)據(jù)的修改都必須符合prod_id<=10(2)查看視圖(用法同表): select * from view_name;(3)刪除視圖:drop view view_name;17.完整性:實體完整性(主鍵與候選鍵)、參照完整性(主鍵與外鍵)、用戶定義的完整性(非空約束與check約束)。
18.創(chuàng)建主鍵約束: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));作為表的主鍵約束,且復(fù)合主鍵職能用這種形式創(chuàng)建 Alter table products add primary key(prod_id);備注:實體完整性通過主鍵約束與候選鍵約束來實現(xiàn),候選鍵約束的創(chuàng)建類似主鍵約束的創(chuàng)建,實質(zhì)上同索引。
19.設(shè)置表外鍵:create table語句或alter table語句,外鍵中列的數(shù)目和數(shù)據(jù)類型必須與被參照表的主鍵中列的數(shù)目和對應(yīng)數(shù)據(jù)類型一致。
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,輸出對應(yīng)訂單總金額的存儲過程->Delimiter //--改變分割符為//->create procedure ordertotal(in o_id int,out o_total decimal(10,2))過程名字輸入?yún)?shù)及類型輸出參數(shù)及類型->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;->//--執(zhí)行存儲過程:當(dāng)item_id=200005時,得出對應(yīng)訂單總金額->delimiter;--將分割符改回分號->call ordertotal(200005,@total);--由于不存在輸出參數(shù),故定義一個輸出變量,變量必須用@開頭->select @total;返回結(jié)果為149.87 備注:書本第十一章后的編程題,使用update語句,兩個參數(shù)類型都需要為in。--顯示存儲過程->Show create procedure ordertotal;--刪除存儲過程
->Drop procedure ordertotal;21.存儲函數(shù)
存儲函數(shù)與存儲過程的區(qū)別:.存儲函數(shù)不能擁有輸出參數(shù);.存儲函數(shù)可直接調(diào)用,且不需使用call語句,而存儲過程的調(diào)用必須使用call語句;.存儲函數(shù)中必須包含一條return語句,而這條特殊的SQL語句不允許包含于存儲過程。--建立存儲函數(shù):根據(jù)給定的cust_id返回客戶所在的州名(縮寫),若庫中無給定的cust_id,則返回“不存在該客戶”。->delimiter //->create function fn_search(c_id int)->returns varchar(50)--定義返回的數(shù)據(jù)類型,與函數(shù)部分中的數(shù)據(jù)類型需統(tǒng)一,如函數(shù)中的“不存在該客戶”為6個字符,如果這里設(shè)置為char(5),則無法輸出該結(jié)果->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;->//--執(zhí)行存儲函數(shù)
->select fn_search(10001);--刪除存儲函數(shù)
->drop function fn_search;--刪除前要確定該函數(shù)無依賴關(guān)系,即不存在其他存儲過程或存儲函數(shù)調(diào)用過該存儲函數(shù)。
22.觸發(fā)器:MySQL響應(yīng)insert、delete、update語句時自動執(zhí)行的一條MySQL語句,創(chuàng)建觸發(fā)器時需要給出的4條信息:唯一的觸發(fā)器名、觸發(fā)器相關(guān)的表、觸發(fā)器應(yīng)該響應(yīng)的活動(insert delete、update)、觸發(fā)器何時執(zhí)行(處理前或處理后)。
(1)insert觸發(fā)器:當(dāng)對表插入數(shù)據(jù)時起作用,含有一個虛擬表New,可訪問增加的行,只能用after--建立一個insert觸發(fā)器,用于記錄insert語句操作時的系統(tǒng)時間和插入的order_num->delimiter //->create trigger trg_order_insert after insert on orders for each row 觸發(fā)器 觸發(fā)器名 執(zhí)行時間 相關(guān)表->begin->insert into order_log(o_date,order_num)values(now(),new.order_num);--order_log是事先建立好的表,用于記錄insert語句操作時的系統(tǒng)時間和插入的order_num->end;->//--執(zhí)行insert觸發(fā)器->delimiter;->insert into orders(order_date,cust_id)values(’2010-9-15’,10001);--由于order_num是自動遞增的,故在這里不作為插入對象(2)delete觸發(fā)器:當(dāng)對表刪除數(shù)據(jù)時起作用,含有一個虛擬表Old,可訪問被刪除的行,只能用after,創(chuàng)建方法與insert類似,區(qū)別在于delete和old--建立一個delete觸發(fā)器,用于記錄delete語句操作時的系統(tǒng)時間和刪除的order_num->delimiter //->create trigger trg_order_delete after delete on orders for each row 觸發(fā)器 觸發(fā)器名 執(zhí)行時間 相關(guān)表->begin->insert into order_log(o_date,order_num)values(now(),old.order_num);--order_log是事先建立好的表,用于記錄delete語句操作時的系統(tǒng)時間和刪除的order_num->end;->//--執(zhí)行delete觸發(fā)器->delimiter;->delete from orders where order_num=20010;(3)update觸發(fā)器:當(dāng)對表修改數(shù)據(jù)時起作用,同時含有new和old兩個虛擬表。結(jié)合New可訪問更新行的記錄;結(jié)合old可訪問更新前行的記錄,可用after,也可用before。1用after ○--建立一個update觸發(fā)器,用于記錄update語句操作時的系統(tǒng)時間和更新數(shù)據(jù)的order_num->delimiter //->create trigger trg_order_update after update on orders for each row 觸發(fā)器 觸發(fā)器名 執(zhí)行時間 相關(guān)表->begin->insert into order_log(o_date,order_num)values(now(),old.order_num);->end;->//--執(zhí)行update觸發(fā)器->delimiter;->update orders set order_date=’2015-9-18’ where cust_id=10001;2用before ○--建立一個update觸發(fā)器,如果更新后的prod_price大于原來的1.2倍,則用原來的1.2倍作為當(dāng)前價格->delimiter //->create trigger trg_order_update before update on orders for each row 觸發(fā)器 觸發(fā)器名 執(zhí)行時間 相關(guān)表->begin->if new.prod_price>old.prod_price*1.2 then->set new.prod_price=old.prod_price*1.2;->end if;->end;->//(4)刪除觸發(fā)器:drop trigger trg_name;23.事件:臨時觸發(fā)器,要使用事件調(diào)度器,必須開啟“event_scheduler”.查看:show variables like ’event_scheduler’;.開啟:set global event_scheduler=1;(1)創(chuàng)建事件
CREATE EVENT EVENT_NAME ON SCHEDULE schedule DO event_body;其中schedule的語法格式為
AT timestamp [+INTERVAL interval]?|every interval--指定事件執(zhí)行的時間,可以為某時刻點即timestamp,或某時刻點開始的interval時間后,或者為每隔interval時間執(zhí)行一次
[starts timestamp [+INTERVAL interval]]--設(shè)置事件開始執(zhí)行的時間 [ends timestamp [+INTERVAL interval]]--設(shè)置事件終止執(zhí)行的時間
--建立一個事件,用于每個月向customers表中插入一條數(shù)據(jù)“l(fā)iyang、廣州”,該事件從下個月開始并于2015-12-31結(jié)束->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)修改事件,用于修改時間的狀態(tài):alter event event_name{enable|disable};(3)刪除事件:drop event event_name;24.管理實務(wù)處理:start transaction?
實務(wù)處理的術(shù)語:
(1)實務(wù)(transaction):一組SQL語句;(2)回退(rollback):撤銷指定SQL語句的過程;(3)提交(commit):指定未存儲的SQL語句結(jié)果寫入到數(shù)據(jù)庫表里,提交后無法回退;(4)保留點(savepoint):實務(wù)處理中設(shè)置的臨時占位符。
25.安全管理(用戶創(chuàng)建修改與刪除以及用戶權(quán)限的查看設(shè)置與撤銷)(1)創(chuàng)建用戶賬號:create user ben identified by ’ben’;(2)修改用戶賬號:update mysql.user set user=’new_ben’ where user=’ben’;--從mysql數(shù)據(jù)庫中的用戶表user進行修改(3)查看訪問權(quán)限:show grants for new_ben;(4)設(shè)置訪問權(quán)限: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;--可針對{整個服務(wù)器|整個數(shù)據(jù)庫|數(shù)據(jù)庫中某個表|數(shù)據(jù)庫中某個表的某些字段},對用戶同時設(shè)置全部或一種或多種權(quán)限
(5)撤銷訪問權(quán)限:revoke?from?,用法與grant?to?類似(6)更改口令(密碼)
Set password for new_ben=password(’new_ben’);(7)刪除用戶:drop user new_ben;26.數(shù)據(jù)庫備份與還原.使用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.備份數(shù)據(jù):
Select * from mysql.products into outfile ’d:products.txt’ [Fields terminated by ’,’ optionally enclosed by ’”’
lines terminated by ’nr’;--定義字段間的分割符、字符型數(shù)據(jù)的存放形式、行與行之間的分割符.恢復(fù)數(shù)據(jù)
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的選項表及更多幫助信息).備份整個數(shù)據(jù)庫服務(wù)器、或整個數(shù)據(jù)庫或數(shù)據(jù)庫中某個表
Mysqldump –u root –proot –P 3306 –h localhost {all-databases|mysql_test [products]}>d:data.sql.恢復(fù)數(shù)據(jù)
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;對數(shù)據(jù)庫中的表進行校驗,保證數(shù)據(jù)的一致性 (4)optimize table tbl_name;利用表中未使用的空間并整理數(shù)據(jù)文件碎片,保證數(shù)據(jù)讀取效率 (5)repair table tbl_name;修復(fù)一個或多個可能被損害的MyISAM表 28.二進制日志文件的使用:mysqlbinlog 29.使用PHP進行MySQL數(shù)據(jù)庫編程 編程步驟: .首先建立與MySQL數(shù)據(jù)庫服務(wù)器的連接;.然后選擇要對其進行操作的數(shù)據(jù)庫; .再執(zhí)行相應(yīng)的數(shù)據(jù)庫操作,包括對數(shù)據(jù)的添加、刪除、修改和查詢等;.最后關(guān)閉與MySQL數(shù)據(jù)庫服務(wù)器的連接。(1)數(shù)據(jù)庫服務(wù)器連接、選擇數(shù)據(jù)庫 .使用mysql_connect()建立非持久連接 Php $con=mysql_connect(“l(fā)ocalhost:3306”,“root”,“123456”);if(!$con){ echo “數(shù)據(jù)庫服務(wù)器連接失??! .使用mysql_pconnect()建立持久連接 ”;echo “用戶名:root .使用mysql_select_db(databases[,connection])選擇數(shù)據(jù)庫 ”;die();} mysql_select_db(“mysql_test”,$con);if(mysql_errno()){ echo “數(shù)據(jù)庫選擇失??! /*向數(shù)據(jù)庫mysql_test中的表customers添加一個名為“李中華”的客戶的全部信息*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數(shù)據(jù)庫選擇失??! $sql=“insert into customers(’cust_id’,’cust_name’,’cust_sex’)”;$sql=$sql.“values(null,’李中華’,’M’)”;if(mysql_query($sql,$con))echo “客戶信息添加成功! .數(shù)據(jù)的更新 /*將數(shù)據(jù)庫mysql_test的表customers中的一個名為“李中華”的客戶的地址修改為“廣州市”*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數(shù)據(jù)庫選擇失??! .數(shù)據(jù)的刪除 /*將數(shù)據(jù)庫mysql_test的表customers中一個名為“李中華”的客戶信息刪除*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數(shù)據(jù)庫選擇失??! (3)數(shù)據(jù)庫的查詢 .使用mysql_fetch_array(data[,array_type])讀取結(jié)果集中的記錄 /*在數(shù)據(jù)庫mysql_test的表customers中查詢cust_id為916的客戶的姓名*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數(shù)據(jù)庫選擇失??! .使用mysql_num_rows(data)讀取結(jié)果集中的記錄數(shù) /*在數(shù)據(jù)庫mysql_test的表customers中查詢女性客戶的人數(shù)*/ ”);Mysql_select_db(“mysql_test”,$con)or die(“數(shù)據(jù)庫選擇失敗! 淺談Visual FoxPro數(shù)據(jù)庫程序設(shè)計教學(xué) 重慶市工藝美術(shù)學(xué)校 劉 杰 [關(guān)鍵詞] 案例教學(xué) 多媒體課件教學(xué) 探究式教學(xué) 互動式教學(xué) 問題驅(qū)動法 [摘要] VISUAL FOXPRO程序設(shè)計語言作為中職學(xué)生入學(xué)后的首門數(shù)據(jù)庫語言課程,但目前采用的還是傳統(tǒng)的以教師為主體的課堂講授方式,教學(xué)質(zhì)量及教學(xué)效果不是很理想。本文從教學(xué)方法、上機實驗、考試考核幾個方面對VISUAL FOXPRO語言的教學(xué)進行了探究,力求找到好的方法來提高本課程的教學(xué)質(zhì)量。 一、引言 《VISUAL FOXPRO數(shù)據(jù)庫程序設(shè)計語言》是中職計算機專業(yè)中一門重要的專業(yè)課程,而且它作為中職升學(xué)高職的一門高考課程,非常重要。它作為學(xué)生入學(xué)后第一次系統(tǒng)地學(xué)習(xí)與高級程序設(shè)計語言和程序設(shè)計有關(guān)的內(nèi)容的一門新課程,加之教科書內(nèi)容抽象化,牽涉到的概念比較復(fù)雜,規(guī)則較多,使用靈活,容易出錯,在實際的教學(xué)中反映出很多問題,再加上授課一般以VISUAL FOXPRO數(shù)據(jù)庫操作為主,VISUAL FOXPRO的操作界面很不直觀,使學(xué)生不容易理解。因此,盡管VISUAL FOXPRO數(shù)據(jù)庫語言有實用價值,但生澀的教學(xué)內(nèi)容,不易引起學(xué)生的學(xué)習(xí)興趣,如果不講究教學(xué)方法,則難以達到課程的預(yù)期目標(biāo)。因此,為了提高教學(xué)質(zhì)量,使學(xué)生從枯燥乏味中走出來,教師必須利用現(xiàn)有資源重新整合教學(xué)內(nèi)容,改進單 一、乏味的教學(xué)方法,力求顯現(xiàn)在學(xué)生面前的知識有趣而生活化,以提高學(xué)生的學(xué)習(xí)興趣及學(xué)以致用的能力。以下幾點是對VISUAL FOXPRO數(shù)據(jù)庫語言程序設(shè)計教學(xué)的探索: 二、采用案例教學(xué)法,培養(yǎng)學(xué)生的興趣和積極性 VISUAL FOXPRO程序設(shè)計是應(yīng)用性很強的一門課程它既有理論又有實踐,既講方法又講動手能力。一般來說,教材中前幾章都是先介紹VISUAL FOXPRO程序設(shè)計語言的一些概念和基礎(chǔ)知識,然后才介紹程序的建立和運行。這些概念和基礎(chǔ)知識,既枯燥又比較抽象難懂。在教學(xué)中,我們打破課本原有的順序組織課堂教學(xué)的方式的邏輯結(jié)構(gòu)體系,改用從案例入手,通過給學(xué)生演示、讓學(xué)生模仿,在實際應(yīng)用中去探究和領(lǐng)悟這些概念,并適時地加以歸納總結(jié)和概念的延伸,讓學(xué)生在輕松愉快的氣氛中學(xué)習(xí)新知識。 案例教學(xué)法打破了以教材為中心的傳統(tǒng)教學(xué)模式,不按教材的順序授課,而是以精選出的程序設(shè)計的案例為中心,把學(xué)習(xí)的重點放在具體案例的講述上,把要學(xué)習(xí)的語法和概念融 1/4 入到具體案例中來講解。整個教學(xué)過程中強調(diào)在應(yīng)用中學(xué)習(xí),從而避免了枯燥的理論說教,不僅能增進學(xué)生的學(xué)習(xí)興趣,而且對提高學(xué)生綜合分析和解決實際問題的能力也大有幫助。那么該如何培養(yǎng)學(xué)生對VISUAL FOXPRO語言課程的興趣呢?案例教學(xué)法是培養(yǎng)學(xué)生學(xué)習(xí)興趣的有效途徑之一。 三、加強多媒體教學(xué)方式的使用 多媒體教學(xué)作為一種新型的現(xiàn)代教育技術(shù)有很多優(yōu)點:它集授課、習(xí)題、演示等功能為一體,具有生動、形象、直觀的特點。教師在教學(xué)過程中應(yīng)利用各類計算機軟件,根據(jù)所教學(xué)生的特點,制作出高水平的VISUAL FOXPRO語言程序設(shè)計多媒體課件。 如采用以PowerPoint幻燈片或Authorware來制作的多媒體課件展現(xiàn)知識點并輔以Flash動畫演示程序的動態(tài)執(zhí)行過程的方式,使學(xué)生對所學(xué)知識的理性認識和感性認識有機的結(jié)合起來,有助于學(xué)生更好地理解和掌握所學(xué)內(nèi)容,激發(fā)學(xué)生學(xué)習(xí)的主動性。但是也不能過于依賴課件,教師如果自始至終坐在講臺前,始終以課件授課,難以達到好的教學(xué)效果。教師必須在使用課件的同時,穿插使用黑板板書,將重要知識的演繹過程強調(diào)出來。同時將課堂教學(xué)和網(wǎng)絡(luò)教學(xué)相結(jié)合,制作適合自學(xué)的網(wǎng)絡(luò)版課件,發(fā)布到課程建設(shè)網(wǎng)絡(luò)平臺或校園網(wǎng)上。該課件應(yīng)層次結(jié)構(gòu)清楚,較之課堂用教學(xué)課件內(nèi)容更加全面、詳細,使用學(xué)生能夠自由選擇章節(jié)進行下載學(xué)習(xí)。 多媒體課件主要包括課程內(nèi)容、算法演示、在線測試、在線討論以及資源中心五部分功能。多媒體課件可以提供交互式環(huán)境供學(xué)生學(xué)習(xí),并自動根據(jù)操作過程進行實時評價。將多媒體課件和教師課堂講授有機地結(jié)合起來,能形成最佳教學(xué)任務(wù)的綜合性手段與教學(xué)方案。 四、把握課堂教學(xué)方法,提高課堂教學(xué)質(zhì)量 在課堂上教師的著眼點應(yīng)放在引導(dǎo)學(xué)生走向知識,而不是帶著知識走向?qū)W生,在預(yù)設(shè)的問題情境中不要急于將結(jié)論告訴學(xué)生,應(yīng)讓學(xué)生經(jīng)歷知識形成過程,提高問題解決的能力。VISUAL FOXPRO程序設(shè)計語言的知識體系是一個循序漸進的過程,先后的知識點相關(guān)性很大,語句簡潔、緊湊,語法限制不太嚴(yán)格,程序設(shè)計自由度大。在系統(tǒng)的教學(xué)過程中,大部分學(xué)生的語法掌握得還是比較好的,但是當(dāng)涉及到稍為復(fù)雜的實際編程問題時,可能還是顯得困難,他們面對一個問題,往往心中只有一些模糊的想法,而無法寫出具體的程序。這是目前VISUAL FOXPRO語言教學(xué)中普遍存在的問題。針對這種情況,我們可以從以下幾個方面來解決: 第一、淡化語法、突出算法講解。注重介紹有關(guān)算法概念,即突出程序設(shè)計而不是語法。 2/4 在掌握了基本而常用的語法之后,可以根據(jù)學(xué)習(xí)的進度和程序設(shè)計的需要學(xué)習(xí)相關(guān)語法。學(xué)習(xí)新的程序設(shè)計語言的最佳途徑是編寫程序,不是知道的語法越多,程序編得越好,而是自己動手編程越多,編程水平才越有可能得到提高。突出算法,進而帶動基本語法的學(xué)習(xí),可以更加合理地分配學(xué)習(xí)時間。 第二、加強程序閱讀能力的培養(yǎng)。學(xué)生閱讀程序的過程也是為程序設(shè)計打基礎(chǔ)的過程。教學(xué)中教師通過例題講解,使學(xué)生逐步理解和掌握語句的格式、功能等,同時也是在為學(xué)生學(xué)習(xí)程序設(shè)計作鋪墊,教師應(yīng)有意識地在講解過程中向?qū)W生滲透程序設(shè)計的思想和方法,引導(dǎo)學(xué)生從模仿開始,逐步過渡到獨立進行程序設(shè)計。 第三、轉(zhuǎn)變學(xué)習(xí)方式,提高學(xué)生學(xué)習(xí)興趣。轉(zhuǎn)變學(xué)習(xí)方式,實際上是改變一種習(xí)慣,即由過去的傳授式學(xué)習(xí)變?yōu)樽灾?、合作、探究式學(xué)習(xí)。為了達到這個目的,就要求教師在講授知識的時候根據(jù)教學(xué)內(nèi)容和學(xué)生的實際情況采用多種教學(xué)方式進行教學(xué),將教師的“主體”性逐漸削弱,向“主導(dǎo)”過渡,創(chuàng)設(shè)和諧的學(xué)習(xí)氛圍。 五、加強實驗環(huán)節(jié)的教學(xué)設(shè)計,輔助理論教學(xué) VISUAL FOXPRO語言程序設(shè)計是一門實踐性很強的課程,上機也是整個教學(xué)的重要組成部分,因此必須抓好實驗教學(xué)環(huán)節(jié)。在上機作業(yè)的布置中,既要有基本的較簡單的題目,又要有一些具有挑戰(zhàn)性的新穎有趣的題目,把它們分作必做題和選做題,這樣既可以使每一個學(xué)生都能達到滿足,又充分地調(diào)動了他們的積極性和創(chuàng)造性,以及對VISUAL FOXPRO語言學(xué)習(xí)的興趣。 第一、在實驗教學(xué)大綱的指導(dǎo)下,根據(jù)所學(xué)知識點選擇有代表性的、綜合的問題讓學(xué)生進行編程、調(diào)試。在實驗開始前要讓學(xué)生對實驗作充分的準(zhǔn)備,預(yù)習(xí)實驗內(nèi)容,明白實驗原理和實驗?zāi)康?。實驗前?yīng)該將實驗所涉及的知識點的重點和難點告知學(xué)生。在實驗過程中針對不同的學(xué)生有側(cè)重點的加以指導(dǎo),在指導(dǎo)的過程中要注意鍛煉學(xué)生獨立思考問題的能力,啟發(fā)學(xué)生的想象力。實驗完畢后,每個學(xué)生都應(yīng)對實驗用到的知識點進行回顧,總結(jié)實驗過程中遇到的問題和問題的解決方法。 第二、注重培養(yǎng)學(xué)生調(diào)試程序的能力。對于簡單問題,直接編寫出正確的代碼是完全可能的,但是大多數(shù)問題的解決方案往往都是比較復(fù)雜的,而且代碼需要不斷修改完善,因此調(diào)試程序的能力是至關(guān)重要的。 第三、培養(yǎng)學(xué)生動手能力和獨立思考能力。實驗時,重點讓學(xué)生自己動手,學(xué)生有問題,盡量給予提示,啟發(fā)學(xué)生自己思考解決問題。指導(dǎo)學(xué)生要針對學(xué)習(xí)任務(wù),依據(jù)學(xué)習(xí)規(guī)則,詳細設(shè)計實習(xí)步驟,充分發(fā)揮學(xué)生的主觀能動性,鼓勵學(xué)生主動對學(xué)習(xí)的程序、函數(shù)、工具及 3/4 方法進行有效操作,從而提高學(xué)習(xí)質(zhì)量和效率。 六、合理安排考試考核,注重學(xué)生知識的全方位掌握 VISUAL FOXPRO語言程序設(shè)計課程的考核應(yīng)分為閉卷理論考試和上機考試,重點考核學(xué)生的程序閱讀能力和編寫能力。閉卷考試主要考查學(xué)生的基本知識、閱讀程序和編程能力??荚囶}型可包括:概念選擇、讀程序?qū)懡Y(jié)果、程序代碼填空、程序改錯、編寫程序題等。在考題內(nèi)容上注意嚴(yán)格按照教學(xué)大綱的要求覆蓋各知識點,各知識點的定位重點在基本概念而不是語法細節(jié)。 上機考試主要讓學(xué)生在規(guī)定的時間內(nèi)完成給定的上機題目,重點測試考生調(diào)試程序、程序改錯、編寫程序等綜合能力,偏重實際應(yīng)用性強的題型,編程題靈活多樣,或編完整的一個程序,或補充程序的部分函數(shù),重在考核典型算法的應(yīng)用。平時成績也要在總成績中占一定的比例,這樣有利于學(xué)生對平時作業(yè)的重視。 七、結(jié)束語 VISUAL FOXPRO語言程序設(shè)計課程的教學(xué)涉及到諸多方面的因素,需要我們不斷地探索新的教學(xué)方法和教學(xué)模式,激發(fā)學(xué)生學(xué)習(xí)該課程的興趣,使學(xué)生不但掌握高級編程語言的知識、編程技術(shù)和基本算法,更重要的是掌握程序設(shè)計的思想和方法,具備利用計算機求解實際問題的基本能力,只有這樣才能達到我們教學(xué)的真正目的。 參考文獻: [1] 張小莉,李盛瑜,代秀娟 編,VISUAL FOXPRO語言程序設(shè)計,科學(xué)出版社有限責(zé)任公司 [2]張小毅,數(shù)據(jù)庫基礎(chǔ)及應(yīng)用——VISUAL FOXPRO操作基礎(chǔ)及應(yīng)用,重慶大學(xué)出版社 [3] 盧湘鴻,Visual FoxPro 6.0數(shù)據(jù)庫與程序設(shè)計(第3版),電子工業(yè)出版社 4/4 程序設(shè)計教學(xué)工作總結(jié) 在一學(xué)期的教學(xué)工作中,本人能堅持黨的教育方針,認真學(xué)習(xí)國家的各種法律法規(guī),嚴(yán)格要求自己,努力培養(yǎng)自己的職業(yè)道德修養(yǎng)與正確的行為規(guī)范,在實際的工作崗位上盡職盡責(zé),自始至終以認真、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,勤懇、堅持不懈的精神從事教學(xué)工作。 為了上好這門課,我按照規(guī)范教學(xué)規(guī)范管理嚴(yán)格要求自己,深入研究教學(xué)大綱,認真鉆研教材,精心設(shè)計教法,認真?zhèn)鋵懡贪福x典型試題,強化訓(xùn)練,力爭在有限的時間,使每一堂課的教學(xué)優(yōu)質(zhì)高效。重視實踐性教學(xué),耐心進行輔導(dǎo),認真批改和及時評講作業(yè)。廣泛涉獵各種知識,形成比較完整的知識結(jié)構(gòu),嚴(yán)格要求學(xué)生,尊重學(xué)生,發(fā)揚教學(xué)民主,使學(xué)生學(xué)有所得,不斷提高,從而不斷提高自己的教學(xué)水平和思想覺悟,并順利完成教育教學(xué)任務(wù)。 在教學(xué)中,我采用案例教學(xué)法,將抽象的程序設(shè)計知識,以一個個實用案例的形式呈現(xiàn)給學(xué)生,符合學(xué)生 認知規(guī)律。學(xué)生課堂紀(jì)律較好,部分學(xué)生參與度較高;學(xué)生積極就練習(xí)過程中問題提問,學(xué)習(xí)積極性較高,課堂氣氛活躍。本門課程達到教學(xué)目標(biāo),教學(xué)效果良好。 在過去的教學(xué)工作中,自己雖然取得了一些成績,也積累了一些教學(xué)經(jīng)驗,但在理論與實踐相結(jié)合的教學(xué)方法中還有待進一步提高。今后,我要更加努力地提高教學(xué)質(zhì)量,成為真正讓學(xué)生滿意的教師。
”;die();} echo “數(shù)據(jù)庫服務(wù)器連接成功!
”;?> //將connect.php部署在已開啟的WAMP平臺環(huán)境中,并在瀏覽器地址中輸入“http://localhost/connect.php”
”;echo “使用函數(shù)mysql_pconnect()永久連接數(shù)據(jù)庫。
”;?>
”;die();} echo “數(shù)據(jù)庫選擇成功!
” ?>(2)數(shù)據(jù)的添加、更新和刪除操作,mysql_query(SQL語句[,connection]),insert、update、delete語句可置于函數(shù)mysql_query()中從而實現(xiàn)數(shù)據(jù)的添加、更新和刪除操作.數(shù)據(jù)的添加
”);Mysql_query(“set names ’gbk’”);//設(shè)置中文字符集
”;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(“客戶信息刪除失?。?br>”);?>
”);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);//如果結(jié)果為空,則為0行 echo “所要查詢的女性客戶人數(shù)為:”.$num.“位
”;} else echo “查詢失敗!
”;?>第四篇:淺談Visual FoxPro數(shù)據(jù)庫程序設(shè)計教學(xué)(劉杰)
第五篇:程序設(shè)計教學(xué)總結(jié)