孟杰
摘 要:在“Visual FoxPro程序設(shè)計(jì)”的課程教學(xué)中,SQL語言是重點(diǎn)同時(shí)又是難點(diǎn)。作者通過多年的教學(xué)實(shí)踐,探索出了一個(gè)通過使用可視化的查詢設(shè)計(jì)器和其同步生成SQL語句進(jìn)行對比的教學(xué)方法。該文對這一方法進(jìn)行了論述,并以一個(gè)實(shí)例進(jìn)行了說明。
關(guān)鍵詞:SQL 可視化 對比教學(xué)方法
中圖分類號:G633 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2014)03(a)-0159-01
Visual FoxPro(以下簡稱VFP)是可視化數(shù)據(jù)庫系統(tǒng)。它具有完備的工具、良好的界面、簡單的存取方式,良好的兼容性等特點(diǎn)。很多高校,都將其作為一門必修課程。
在學(xué)習(xí)VFP課程中,數(shù)據(jù)的查詢是一個(gè)非常重要的內(nèi)容。VFP對于數(shù)據(jù)的查詢有三種方式,即SQL語句、查詢文件、視圖文件。而在VFP程序設(shè)計(jì)課程的實(shí)際教學(xué)過程中SQL語言即是重點(diǎn)又是難點(diǎn)。說其重點(diǎn)是因?yàn)镾QL語句強(qiáng)大的查詢功能,靈活的使用方法和其跨平臺性等。但是對于非計(jì)算機(jī)專業(yè)的學(xué)生來說它又是難點(diǎn),因?yàn)閷W(xué)生對于一般的計(jì)算機(jī)課程,主要使用的都是可視化的操作方式,而不是命令行式的操作方式。因此對于SQL語言就會感覺陌生進(jìn)而就具有畏難和排斥情緒,導(dǎo)致學(xué)習(xí)起來就會很困難。
1 Visual FoxPro的查詢方式
在VFP課程的教學(xué)中作為老師我感覺到學(xué)生對于VFP中提供的可視化的設(shè)計(jì)器比較容易接受。利用它們學(xué)生可以快速地創(chuàng)建和修改各種組件,包括數(shù)據(jù)庫、數(shù)據(jù)表、查詢等。在VFP中創(chuàng)建查詢有三種方法:查詢向?qū)А⒉樵冊O(shè)計(jì)器和SELECT語句[1],但不論使用何種方式來創(chuàng)建查詢,其最終都會生成一條SELECT語句,查詢向?qū)Ш筒樵冊O(shè)計(jì)器本質(zhì)上是SELECT語句的可視化設(shè)計(jì)方法。
SQL查詢語句(簡略格式):
SELECT[字段名…][TOP<表達(dá)式>] FROM[<表名>…] [INNER JOIN <表名>ON<聯(lián)接條件>…];
[WHERE<聯(lián)接條件>…][GROUP BY<列名>…][HAVING<篩選條件>…];
[ORDER BY<字段名>…] [INTO TABLE<新表名>][2]
通過SELECT語句中的參數(shù)設(shè)置,可以從所要查詢的數(shù)據(jù)表中篩選出滿足條件的記錄。而在查詢設(shè)計(jì)器中則是通過添加數(shù)據(jù)表,選取字段、建立聯(lián)接、設(shè)置條件等操作來實(shí)現(xiàn)的,其中每一個(gè)選項(xiàng)卡實(shí)際上都對應(yīng)了SELECT語句中的一個(gè)或幾個(gè)參數(shù)。
2 對比教學(xué)方法實(shí)例
VFP系統(tǒng)中的提供了查看SQL語句的功能,根據(jù)學(xué)生對查詢設(shè)計(jì)器這種可視化操作比較容易掌握這一特點(diǎn),作者探索出了一個(gè)可視化的SQL語言和命令語句式的SQL語言的對比教學(xué)方法。本文將以一個(gè)實(shí)例子來說明這種教學(xué)方法的應(yīng)用。
在實(shí)例中用到數(shù)據(jù)庫jxgl.dbc中的三個(gè)表Student:學(xué)生信息表,courses:學(xué)生成績表,scores:課程代碼表。實(shí)例查詢201301班選課數(shù)量大于2門且平均成績不低于60分的前10名同學(xué)的學(xué)號、姓名、平均成績和選課門數(shù),查詢結(jié)果按平均成績降序排序并存儲到表xkb中。這是一個(gè)相對較復(fù)雜的查詢,幾乎涵蓋了SELECT命令的所有參數(shù),具有典型的代表性。
SQL語句如下:
SELECT TOP 10 Student.學(xué)號,姓名,AVG(Scores.成績) AS 平均成績,COUNT(*) AS 選課門數(shù);
FROM courses INNER JOIN scores INNER JOIN student;
ON Student.學(xué)號 = Scores.學(xué)號 ON Courses.科目代碼 = Scores.科目代碼;
WHERE Student.班級代碼 =“201301”;
GROUP BY Student.學(xué)號 HAVING 選課門數(shù) >= 3 AND 平均成績 >= 60 ORDER BY 3 DESC;
INTO TABLE xkb.dbf
如果使用查詢設(shè)計(jì)器,要通過一系列操作實(shí)現(xiàn)查詢。首先添加三個(gè)表,并確定各表的聯(lián)接條件,添加及生成所需字段,設(shè)置篩選、排序及分組條件最后提取出前10條記錄并輸出結(jié)果。雖然操作步驟較多,但是相對于命令行式的SQL語言來說比較直觀學(xué)生更容易理解。
該文講述的對比教學(xué)方法的要點(diǎn)是:在查詢設(shè)計(jì)器中的每一步操作后,通過窗口菜單“查詢→查看SQL”命令或查詢設(shè)計(jì)器快捷菜單中的“查看SQL”命令,可查看系統(tǒng)生成的相應(yīng)的SQL語句,隨著查詢設(shè)計(jì)器的操作的進(jìn)行,學(xué)生便能觀察到一個(gè)完整的SELECT語句的實(shí)現(xiàn)過程。
本實(shí)例的教學(xué)過程如下:
第一步,打開查詢設(shè)計(jì)器,依次加入表student、scores、cour ses,并確認(rèn)各表的聯(lián)接條件。然后點(diǎn)擊菜單“查詢→查看SQL”,就可查看上述操作對應(yīng)的SQL語句。
第二步,在“字段”選項(xiàng)卡中選取“姓名”字段和“學(xué)號”字段,再通過“函數(shù)和表達(dá)式”依次生成“平均成績”字段,語句為“AVG(成績)AS 平均成績”,“選課門數(shù)”字段,語句為“COUNT(*)AS 選課門數(shù))”。此時(shí)可查看對應(yīng)的SQL語句。
第三步,在”篩選”選項(xiàng)卡中,設(shè)定篩選條件。此時(shí)可看到新增的SQL語句“WHERE Student.班級代碼=“201301”。
第四步,在“分組依據(jù)”選項(xiàng)卡中,選取分組字段,并設(shè)置其滿足的條件。之后可查看到新增的SQL語句:“GROUP BY Student.學(xué)號 HAVING 選課門數(shù)>2 AND 平均成績>= 60”
第五步,在“排序依據(jù)”選項(xiàng)卡中,選取排序字段和設(shè)置排序選項(xiàng),此時(shí)可查看新增SQL語句“ORDER BY 3 DESC;”。其中的3表示第3個(gè)字段即“平均成績”,DESC表示降序。
第六步:在“雜項(xiàng)”選項(xiàng)卡中,設(shè)置輸出記錄數(shù)值10,此時(shí)可看到SQL語句第一行中又添加了一個(gè)參數(shù)“TOP 10”。
第七步:依次點(diǎn)擊菜單項(xiàng)“查詢→查詢?nèi)ハ颉痹诓樵內(nèi)ハ虼翱谥悬c(diǎn)擊“表”選項(xiàng)卡,在表名所在的文本框中輸入“xkb”再點(diǎn)擊“確定“按鈕。此時(shí)我們會看到在SQL查看窗口下面新增一行語句“INTO TABLE xkb.dbf”。
至此,一個(gè)完整的SQL語句已經(jīng)生成。通過執(zhí)行所創(chuàng)建的查詢或者SQL語句,我們可以得到相同的查詢結(jié)果。
3 結(jié)語
本實(shí)例中幾乎涵蓋了SELECT語句的所有參數(shù),如果采用命令行式的方式直接教學(xué),那會使學(xué)生接受起來非常困難。而采用查詢設(shè)計(jì)器這種可視化的方式進(jìn)行對比教學(xué),則學(xué)生接受起來卻要相對容易的多。作者經(jīng)過多次的教學(xué)實(shí)踐取得了良好的教學(xué)效果。
參考文獻(xiàn)
[1] 張小莉,敬西.VisualFoxPro程序設(shè)計(jì)實(shí)例教程[M].重慶:重慶大學(xué)出版社,2009.
[2] 王娟,祝群喜,盛娟.數(shù)據(jù)庫基礎(chǔ)及Visual FoxPro程序設(shè)計(jì)教程[M].沈陽:東北大學(xué)出版社,2012.endprint