張繼德
【摘要】SQL語言是數(shù)據(jù)庫原理、數(shù)據(jù)庫應用等課程的核心內(nèi)容,也是這些課程的重點及難點,本文結(jié)合SQL語言在實際工程中的應用,從教學內(nèi)容取舍、教學過程等方面,提出了一些應對策略。
【關鍵詞】數(shù)據(jù)庫應用SQL語言教學教學內(nèi)容
【基金項目】河北聯(lián)合大學教改資助項目,項目編號Z1108-08。
【中圖分類號】G64 【文獻標識碼】A 【文章編號】2095-3089(2014)06-0144-01
SQL(Structured Query Language)語言作為數(shù)據(jù)庫的標準操作語言,在基于數(shù)據(jù)庫的應用系統(tǒng)開發(fā)中應用十分廣泛,SQL語言也是數(shù)據(jù)庫應用、數(shù)據(jù)庫原理、多種開發(fā)工具類課程以及畢業(yè)設計等實踐環(huán)節(jié)均會涉及到的內(nèi)容,并且是這些課程的重點及難點,學生能否掌握及熟練使用SQL語言,是能否進行數(shù)據(jù)庫應用系統(tǒng)開發(fā)的基礎和關鍵。盡管SQL語言具有高度結(jié)構化的特點,基本的SQL語句語法也并不復雜,通過教師的講解絕大多數(shù)學生都能夠理解,但是要弄懂全部的語法結(jié)構并將SQL語句靈活應用于實際項目,卻讓很多學生感到力不從心。本文針對SQL語言教學過程中遇到的一些實際問題,提出了解決方法和應對策略。
一、語法過于龐雜,令學生望而卻步。
多數(shù)教材考慮到語法的完整性,會羅列出SQL語句的全部語法,使得看上去相當龐雜,學生很難搞清楚所有的語法構成成分,從而增加了學生的畏難情緒。
比如SQL語句中最常用的SELECT語句的語法如下:
[WITH
SELECT[ ALL | DISTINCT ]
[ TOP expression [ PERCENT ] [ WITH TIES ] ]
[ INTO new_table ]
[ FROM table_source ]
[ WHERE search_condition ]
[ GROUP BY group_by_expression]
[ HAVING search_condition]
[ ORDER BY order_expression [ ASC | DESC ] ]
{*
| { table_name | view_name | table_alias }.*
|{column_name | [ ] expression | $IDENTITY|$ROWGUID} [ [ AS ] column_alias ]
| udt_column_name [ { . | :: } { { property_name | field_name } | method_name(argument [,...n] ) } ]
| column_alias = expression } [ ,…n ]
面對如此龐雜的語法,很多同學會望而卻步。
筆者針對這個問題,提出如下的解決方法:
1.摒棄完整語法,通過簡單的例子引入最簡單的語法,培養(yǎng)成就感。
興趣是最好的老師,而成就感能有效的提高學生的學習興趣。所以在學習SQL語言的過程中,應該摒棄復雜的SQL語法,讓學生很快并經(jīng)常性的體驗到成就感,樹立起學生對學好SQL語言的信心。
例如通過查詢學生基本信息的示例“SELECT 學號,姓名 FROM 學生表”入手,總結(jié)出最簡單的SELECT語句語法為:
SELECT 列名1,列名2,…, 列名n FROM表名
然后通過逐步加深應用的需求來逐漸增加語法成分。而極少用到的語法成分,則可不講解。完整的語法結(jié)構可以最后給出,并且只講語法符號的含義,而不講語法的含義,感興趣的學生自己閱讀相關參考手冊了解具體含義,教師負責答疑。
2.能用中文表示的語法成分盡量用中文表示。
多數(shù)教材考慮到語法的規(guī)范性,或者是為了與MSDN保持一致,SQL語句采用全英文語法,使得部分英文不太好的學生產(chǎn)生抵觸情緒。通過筆者實踐,除了關鍵詞外,盡量使用中文形式的語法,會更容易被學生接受。
二、學生不知道如何應用SQL語句解決實際問題。
通過教師講解,多數(shù)學生都能掌握基本SQL語句的編寫,但是多數(shù)同學不能將所學內(nèi)容靈活應用于實際項目。比如學生能夠理解函數(shù)、自連接等內(nèi)容,但是給出實際問題時卻不知道如何解決。針對這種問題,筆者結(jié)合多年的教學及工程經(jīng)歷,精心收集、設計了一些數(shù)據(jù)庫應用的案例,比如超市的進銷存系統(tǒng)、公司的財務管理系統(tǒng)、學校的學生成績管理系統(tǒng)、網(wǎng)站的后臺管理等,讓學生將所學內(nèi)容與工程實際緊密結(jié)合起來,著手處理和解決實際應用問題。
如:在進銷存系統(tǒng)中,銷售單表(產(chǎn)品編碼, 產(chǎn)品名稱, 銷售單號, 數(shù)量,單價,金額),有類似表1的統(tǒng)計要求。
表1 銷售情況統(tǒng)計表
產(chǎn)品編碼:0001 產(chǎn)品名稱:聯(lián)想筆記本電腦
解1 使用內(nèi)連接
select t1.*,(select sum(金額) from銷售單表where 產(chǎn)品編碼=t1.產(chǎn)品編碼 and 銷售單號<=t1.銷售單號)
from 銷售單表t1 where 產(chǎn)品編碼=‘0001
解2 使用標量函數(shù)
create function uf_sum(@產(chǎn)品編碼 char(20),@銷售單號 char(20))
returns decimal(12,2)
as
begin
declare @sum decimal(12,2)
select @sum=sum(金額) from 銷售情況統(tǒng)計表 where 產(chǎn)品編碼=@產(chǎn)品編碼 and 銷售單號<=@銷售單號
return @sum
end
select t1.*,dbo.uf_sum(產(chǎn)品編碼,銷售單號)
from 銷售情況統(tǒng)計表 t1 where 產(chǎn)品編碼=‘0001
三、教師講得多,學生練得少。
1.多年來受多種因素的制約,課程評價基本上沿襲以理論考核為主,以閉卷為主。然而,在實際工程中強調(diào)的卻是團隊合作、強調(diào)充分利用互聯(lián)網(wǎng)信息等現(xiàn)代化手段,因此課程考核方式應采取開放式考核、實際項目考核,加大上機考核的比重,實踐性較強的知識點盡量放在上機操作上進行考核,重點測試學生的實踐技能,把任務分解給學生,在上機時獨立完成。
2.加大上機的比重,上機課時不少于三分之一,甚至可以達到50%。
針對上述問題提出的解決方案,經(jīng)過教學實踐檢驗,提高了學生解決實踐問題的能力,收到了較好的教學效果。