劉 容
摘要:在“Visual FoxPro程序設計”課程中,SQL語言的教學既是一個重點又是一個難點。作者經過多年的教學實踐,探索出了一個通過使用查詢設計器和SQL語言進行可視化對比教學的方法,使學生既學會了查詢設計器的使用,更重要的是很直觀、很容易地掌握了SQL語言中各種參數的正確使用。本文對這一方法進行了論述,并通過一個實例進行了說明。
關鍵詞:SQL語言;可視化;對比教學方法
中圖分類號:G642 文獻標識碼:B
1引言
在數據庫技術飛速發展的今天,Visual FoxPro作為優秀的小型數據庫管理系統,因其具有操作界面友好、功能強大、語言精煉、簡單易學、便于實現應用系統的快速開發等特點,仍然受到眾多用戶的青睞。由于Visual FoxPro自身的特點和作為各類計算機等級考試的一個方向,在很多高等院校,都將“Visual FoxPro程序設計”作為非計算機專業綜合學習數據庫技術和高級程序設計語言的一門課程。
“Visual FoxPro程序設計”課程中的一個重要的內容是數據的查詢,通過執行SQL語句、運行查詢文件、運行視圖文件三種方式都可以對數據進行查詢。而其中SQL的兩種使用方法:交互式查詢和宿主式查詢,既適合于非計算機專業人員又適合于軟件開發人員學習,使SQL查詢得到廣泛的應用。在“Visual FoxPro程序設計”課程中,SQL語言的教學既是一個重點又是一個難點。其難點主要在于:非計算機專業的學生從開始接觸到計算機操作時,主要使用的是圖形界面的操作方式,對于使用命令的操作方式非常生疏,學習起來非常困難。而SQL語言主要是由命令及參數組成,掌握不好命令及參數的使用就不能正確執行查詢、得到結果。特別是SQL語言中的數據查詢,雖然只有一條SELECT語句,但是該語句卻實現了數據庫的核心操作,是用途最廣泛的一條語句,具有靈活的使用方法和豐富的功能。熟練地掌握這條命令的使用不僅能在Visual FoxPro中以交互式方式和程序方式方便地進行各種數據查詢,而且為進一步學習使用其他數據庫管理系統的知識和操作打下一個良好的基礎。
2VF中三種查詢方式
從“Visual FoxPro程序設計”課程的教學實踐中可以感受到,學生對可視化的操作環境和操作方法比較容易接受。而Visual FoxPro中提供了眾多的設計器都是一種可視化工具,利用它們可以快捷地創建和修改應用系統中的各種組件,包括數據庫、數據表、查詢、表單和報表等。在Visual FoxPro,創建查詢使用三種方法:查詢向導、查詢設計器和SQL的SELECT語句,不管是使用查詢向導還是使用查詢設計器創建查詢,其最終都是要生成一條SQL的SELECT語句,查詢向導和查詢設計器在本質上是SQL的SELECT語句的可視化設計方法。在SQL語言中,數據的查詢是通過下列一條語句實現的:
SELECT [ALL/DISTINCT];
[TOP <表達式> [PERCENT]][<別名>.]<列表達式>[AS <欄名>];
[,[<別名.>]<列表達式>[AS <欄名>]…];
FROM [<數據庫名!>]<表名>[,[<數據庫名!>]<表名>…];
[INNER/LEFT/RIGHT/FULL JOIN [<數據庫名!>]<表名> [ON <聯接條件>…]];
[[INTO <新表名>]/[TO FILE <文件名>/TO PRINTER/TO SCREEN]];
[WHERE <聯接條件>[AND <聯接條件>…];
[AND/OR<篩選條件>[AND/OR<篩選條件>…]]];
[GROUP BY <列名>[,<列名>…]][HAVING <篩選條件>];
[ORDER BY <列名>[ASC/DESC][,<列名>[ASC/DESC]…]]
在這條SELECT語句中,有很多參數,使用這些參數,可以確定參加查詢的數據表及其聯接的條件;獲取相關的字段和字段的表達式;篩選出滿足條件的記錄;對記錄進行分組和排序等操作。而在查詢設計器中是通過添加數據
表,設置字段、聯接、篩選、排序依據、分組依據、雜項選項卡中的內容來實現的,其中每一個選項卡實際上都對應了SELECT語句中的一個或幾個參數的功能。見表1。

3對比教學方法實例
由于在查詢設計器中提供了查看SQL語句的功能,通過上述查詢設計器中的選項與SELECT語句及參數的對比,加上學生對查詢設計器比較容易掌握這一特點,這就為我們提供了一個可視化的SQL語言對比教學方法。本文將以一個實例(參考文獻[2])來說明這種教學方法的應用。

在實例中用到兩個數據表:學生登記表(學號,姓名,性別,出生日期,入校總分)、學生成績表(學號,課程編號,成績),要求建立一個包含有“姓名、年齡、平均分、總分”的男生成績查詢,要求查詢結果中只包含平均分在75分以上的學生,并按總分降序排列,輸出前3名學生成績查詢結果。這是一個比較復雜的查詢,幾乎涵蓋了SELECT 命令的所有參數,具有比較典型的代表性,其SQL命令如下:
SELECT TOP 3 學生登記表.姓名;
YEAR(DATE())-YEAR(學生登記表.出生日期)AS年齡;
AVG(學生登記表.成績)AS 平均分, SUM(學生登記表.成績)AS 總分;
FROM 學生登記表, 學生成績表 WHERE 學生登記表.學號=學生成績表.學號 AND 學生登記表.性別=”男”;
GROUP BY 學生登記表.學號 HAVING 平均分>=75;
ORDER BY 總分 DESC
如果使用查詢設計器,要通過一系列步驟來實現查詢。首先要加入兩個表,并確定兩表的聯接條件,通過表達式生成新的字段:年齡、平均分和總分;篩選出性別為男記錄;以學號進行分組,提取平均分在75分以上的記錄,再按總分進行降序排列,最后取出前3條記錄。使用查詢設計器來完成上述查詢,雖然操作步驟較多,但是相對于SQL命令來說,比較直觀,學生理解更容易。本文介紹的對比教學方法的要點是:在查詢設計器中的每一步操作后,通過使用主窗口的查詢菜單中的“查看SQL”命令或在查詢設計器中使用快捷菜單中的“查看SQL”命令,可查看到系統生成的相應的SQL命令,隨著查詢設計器的分步操作的進行,可使學生觀察到一個完整的SELECT語句的實現過程。本實例的教學過程如下:

第一步,打開查詢設計器,加入學生登記表和學生成績表,在“聯接”選項卡中,確認其兩表的聯接條件。第二步,在“字段”選項卡中選取“姓名”字段,再通過“函數和表達式”生成器生成“年齡”、“平均分”和“總分”字段。前二步的操作結果見圖1。在圖1中,選取菜單“查詢/查看SQL”,可見到上述操作已生成對應的SQL語句,如圖2。在圖2中,前3行是選取和生成的四個字段,后2行是兩表的聯接及聯接條件。其聯接條件也可寫成:
FROM學生登記表,學生成績表 WHERE 學生登記表.學號=學生成績表.學號


第三步,在“篩選”選項卡中,生成如圖3所示的篩選條件。同時在SQL語句窗口中可以看到增加了一個參數選項,見圖4中第6行。第四步,在“分組依據” 選項卡中,選取分組字段,并生成如圖5所示的分組后要滿足的條件。這時,相應的在SQL語句窗口,又增加了一個參數選項,見圖6中第7行和第8行。

第五步,在“排序依據”選項卡中,確定如圖7所示的“排序條件”和“排序選項”。在SQL語句又增加了一個參數選項,見圖8中第9行。其中的4表示第4個字段,

既“總分”字段,該參數也可寫為:ORDER BY 總分 DESC最后,在“雜項”選項卡中,確定滿足上述條件的前3條記錄,如圖9所示。在SQL語句窗口中,可以看見,在第一行中,又添加了一個參數TOP3。至此,一個完整的SQL語句已經生成,見圖10。通過運行,可以得到正確的查詢結果。

4結束語
本文實例中的查詢,幾乎涉及到SQL查詢語句的所有參數,如果直接采用SQL語言進行教學,學生接受起來很困難,而用查詢設計器這種可視化的方式進行對比教學,雖然步驟比較多,但學生接受起來相對容易。通過使用查詢設計器和SQL語言進行可視化的對比教學方式,使學生既學會了查詢設計器的使用,更重要的是很直觀、很容易地掌握了SQL語言中各種參數的正確使用,作者經過多次的教學實踐,取得了良好的教學效果。
參考文獻:
[1] 杜小丹,劉容. Visual FoxPro程序設計教程[M]. 北京:高等教育出版社,2007.
[2] 劉容,杜小丹. Visual FoxPro程序設計上機實驗及習題集[M]. 北京:高等教育出版社,2007.
An SQL Language Teaching Application of a Visual Comparison Method in VF Teaching
LIU Rong
(Chengdu university, Chengdu 610106, China)
Abstract: For Visual FoxPro, the teaching method of SQL is very important and hard project. The author of the paper, who after many years practice in the area, developed a way by use of Visual SQL Cross and Interrogating Developer which will demonstrate SQL essential directly and easily. The paper give you a new view about this teaching method through a detail example.
Key words: SQL language; visual; cross teaching