劉 容
摘要:在“Visual FoxPro程序設(shè)計”課程中,SQL語言的教學(xué)既是一個重點又是一個難點。作者經(jīng)過多年的教學(xué)實踐,探索出了一個通過使用查詢設(shè)計器和SQL語言進(jìn)行可視化對比教學(xué)的方法,使學(xué)生既學(xué)會了查詢設(shè)計器的使用,更重要的是很直觀、很容易地掌握了SQL語言中各種參數(shù)的正確使用。本文對這一方法進(jìn)行了論述,并通過一個實例進(jìn)行了說明。
關(guān)鍵詞:SQL語言;可視化;對比教學(xué)方法
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B
1引言
在數(shù)據(jù)庫技術(shù)飛速發(fā)展的今天,Visual FoxPro作為優(yōu)秀的小型數(shù)據(jù)庫管理系統(tǒng),因其具有操作界面友好、功能強大、語言精煉、簡單易學(xué)、便于實現(xiàn)應(yīng)用系統(tǒng)的快速開發(fā)等特點,仍然受到眾多用戶的青睞。由于Visual FoxPro自身的特點和作為各類計算機等級考試的一個方向,在很多高等院校,都將“Visual FoxPro程序設(shè)計”作為非計算機專業(yè)綜合學(xué)習(xí)數(shù)據(jù)庫技術(shù)和高級程序設(shè)計語言的一門課程。
“Visual FoxPro程序設(shè)計”課程中的一個重要的內(nèi)容是數(shù)據(jù)的查詢,通過執(zhí)行SQL語句、運行查詢文件、運行視圖文件三種方式都可以對數(shù)據(jù)進(jìn)行查詢。而其中SQL的兩種使用方法:交互式查詢和宿主式查詢,既適合于非計算機專業(yè)人員又適合于軟件開發(fā)人員學(xué)習(xí),使SQL查詢得到廣泛的應(yīng)用。在“Visual FoxPro程序設(shè)計”課程中,SQL語言的教學(xué)既是一個重點又是一個難點。其難點主要在于:非計算機專業(yè)的學(xué)生從開始接觸到計算機操作時,主要使用的是圖形界面的操作方式,對于使用命令的操作方式非常生疏,學(xué)習(xí)起來非常困難。而SQL語言主要是由命令及參數(shù)組成,掌握不好命令及參數(shù)的使用就不能正確執(zhí)行查詢、得到結(jié)果。特別是SQL語言中的數(shù)據(jù)查詢,雖然只有一條SELECT語句,但是該語句卻實現(xiàn)了數(shù)據(jù)庫的核心操作,是用途最廣泛的一條語句,具有靈活的使用方法和豐富的功能。熟練地掌握這條命令的使用不僅能在Visual FoxPro中以交互式方式和程序方式方便地進(jìn)行各種數(shù)據(jù)查詢,而且為進(jìn)一步學(xué)習(xí)使用其他數(shù)據(jù)庫管理系統(tǒng)的知識和操作打下一個良好的基礎(chǔ)。
2VF中三種查詢方式
從“Visual FoxPro程序設(shè)計”課程的教學(xué)實踐中可以感受到,學(xué)生對可視化的操作環(huán)境和操作方法比較容易接受。而Visual FoxPro中提供了眾多的設(shè)計器都是一種可視化工具,利用它們可以快捷地創(chuàng)建和修改應(yīng)用系統(tǒng)中的各種組件,包括數(shù)據(jù)庫、數(shù)據(jù)表、查詢、表單和報表等。在Visual FoxPro,創(chuàng)建查詢使用三種方法:查詢向?qū)А⒉樵冊O(shè)計器和SQL的SELECT語句,不管是使用查詢向?qū)н€是使用查詢設(shè)計器創(chuàng)建查詢,其最終都是要生成一條SQL的SELECT語句,查詢向?qū)Ш筒樵冊O(shè)計器在本質(zhì)上是SQL的SELECT語句的可視化設(shè)計方法。在SQL語言中,數(shù)據(jù)的查詢是通過下列一條語句實現(xiàn)的:
SELECT [ALL/DISTINCT];
[TOP <表達(dá)式> [PERCENT]][<別名>.]<列表達(dá)式>[AS <欄名>];
[,[<別名.>]<列表達(dá)式>[AS <欄名>]…];
FROM [<數(shù)據(jù)庫名!>]<表名>[,[<數(shù)據(jù)庫名!>]<表名>…];
[INNER/LEFT/RIGHT/FULL JOIN [<數(shù)據(jù)庫名!>]<表名> [ON <聯(lián)接條件>…]];
[[INTO <新表名>]/[TO FILE <文件名>/TO PRINTER/TO SCREEN]];
[WHERE <聯(lián)接條件>[AND <聯(lián)接條件>…];
[AND/OR<篩選條件>[AND/OR<篩選條件>…]]];
[GROUP BY <列名>[,<列名>…]][HAVING <篩選條件>];
[ORDER BY <列名>[ASC/DESC][,<列名>[ASC/DESC]…]]
在這條SELECT語句中,有很多參數(shù),使用這些參數(shù),可以確定參加查詢的數(shù)據(jù)表及其聯(lián)接的條件;獲取相關(guān)的字段和字段的表達(dá)式;篩選出滿足條件的記錄;對記錄進(jìn)行分組和排序等操作。而在查詢設(shè)計器中是通過添加數(shù)據(jù)
表,設(shè)置字段、聯(lián)接、篩選、排序依據(jù)、分組依據(jù)、雜項選項卡中的內(nèi)容來實現(xiàn)的,其中每一個選項卡實際上都對應(yīng)了SELECT語句中的一個或幾個參數(shù)的功能。見表1。
3對比教學(xué)方法實例
由于在查詢設(shè)計器中提供了查看SQL語句的功能,通過上述查詢設(shè)計器中的選項與SELECT語句及參數(shù)的對比,加上學(xué)生對查詢設(shè)計器比較容易掌握這一特點,這就為我們提供了一個可視化的SQL語言對比教學(xué)方法。本文將以一個實例(參考文獻(xiàn)[2])來說明這種教學(xué)方法的應(yīng)用。
在實例中用到兩個數(shù)據(jù)表:學(xué)生登記表(學(xué)號,姓名,性別,出生日期,入??偡?、學(xué)生成績表(學(xué)號,課程編號,成績),要求建立一個包含有“姓名、年齡、平均分、總分”的男生成績查詢,要求查詢結(jié)果中只包含平均分在75分以上的學(xué)生,并按總分降序排列,輸出前3名學(xué)生成績查詢結(jié)果。這是一個比較復(fù)雜的查詢,幾乎涵蓋了SELECT 命令的所有參數(shù),具有比較典型的代表性,其SQL命令如下:
SELECT TOP 3 學(xué)生登記表.姓名;
YEAR(DATE())-YEAR(學(xué)生登記表.出生日期)AS年齡;
AVG(學(xué)生登記表.成績)AS 平均分, SUM(學(xué)生登記表.成績)AS 總分;
FROM 學(xué)生登記表, 學(xué)生成績表 WHERE 學(xué)生登記表.學(xué)號=學(xué)生成績表.學(xué)號 AND 學(xué)生登記表.性別=”男”;
GROUP BY 學(xué)生登記表.學(xué)號 HAVING 平均分>=75;
ORDER BY 總分 DESC
如果使用查詢設(shè)計器,要通過一系列步驟來實現(xiàn)查詢。首先要加入兩個表,并確定兩表的聯(lián)接條件,通過表達(dá)式生成新的字段:年齡、平均分和總分;篩選出性別為男記錄;以學(xué)號進(jìn)行分組,提取平均分在75分以上的記錄,再按總分進(jìn)行降序排列,最后取出前3條記錄。使用查詢設(shè)計器來完成上述查詢,雖然操作步驟較多,但是相對于SQL命令來說,比較直觀,學(xué)生理解更容易。本文介紹的對比教學(xué)方法的要點是:在查詢設(shè)計器中的每一步操作后,通過使用主窗口的查詢菜單中的“查看SQL”命令或在查詢設(shè)計器中使用快捷菜單中的“查看SQL”命令,可查看到系統(tǒng)生成的相應(yīng)的SQL命令,隨著查詢設(shè)計器的分步操作的進(jìn)行,可使學(xué)生觀察到一個完整的SELECT語句的實現(xiàn)過程。本實例的教學(xué)過程如下:
第一步,打開查詢設(shè)計器,加入學(xué)生登記表和學(xué)生成績表,在“聯(lián)接”選項卡中,確認(rèn)其兩表的聯(lián)接條件。第二步,在“字段”選項卡中選取“姓名”字段,再通過“函數(shù)和表達(dá)式”生成器生成“年齡”、“平均分”和“總分”字段。前二步的操作結(jié)果見圖1。在圖1中,選取菜單“查詢/查看SQL”,可見到上述操作已生成對應(yīng)的SQL語句,如圖2。在圖2中,前3行是選取和生成的四個字段,后2行是兩表的聯(lián)接及聯(lián)接條件。其聯(lián)接條件也可寫成:
FROM學(xué)生登記表,學(xué)生成績表 WHERE 學(xué)生登記表.學(xué)號=學(xué)生成績表.學(xué)號
第三步,在“篩選”選項卡中,生成如圖3所示的篩選條件。同時在SQL語句窗口中可以看到增加了一個參數(shù)選項,見圖4中第6行。第四步,在“分組依據(jù)” 選項卡中,選取分組字段,并生成如圖5所示的分組后要滿足的條件。這時,相應(yīng)的在SQL語句窗口,又增加了一個參數(shù)選項,見圖6中第7行和第8行。
第五步,在“排序依據(jù)”選項卡中,確定如圖7所示的“排序條件”和“排序選項”。在SQL語句又增加了一個參數(shù)選項,見圖8中第9行。其中的4表示第4個字段,
既“總分”字段,該參數(shù)也可寫為:ORDER BY 總分 DESC最后,在“雜項”選項卡中,確定滿足上述條件的前3條記錄,如圖9所示。在SQL語句窗口中,可以看見,在第一行中,又添加了一個參數(shù)TOP3。至此,一個完整的SQL語句已經(jīng)生成,見圖10。通過運行,可以得到正確的查詢結(jié)果。
4結(jié)束語
本文實例中的查詢,幾乎涉及到SQL查詢語句的所有參數(shù),如果直接采用SQL語言進(jìn)行教學(xué),學(xué)生接受起來很困難,而用查詢設(shè)計器這種可視化的方式進(jìn)行對比教學(xué),雖然步驟比較多,但學(xué)生接受起來相對容易。通過使用查詢設(shè)計器和SQL語言進(jìn)行可視化的對比教學(xué)方式,使學(xué)生既學(xué)會了查詢設(shè)計器的使用,更重要的是很直觀、很容易地掌握了SQL語言中各種參數(shù)的正確使用,作者經(jīng)過多次的教學(xué)實踐,取得了良好的教學(xué)效果。
參考文獻(xiàn):
[1] 杜小丹,劉容. Visual FoxPro程序設(shè)計教程[M]. 北京:高等教育出版社,2007.
[2] 劉容,杜小丹. Visual FoxPro程序設(shè)計上機實驗及習(xí)題集[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