摘 要:本文以Access 2003為平臺,以“圖書管理”數(shù)據(jù)庫為例,通過實例介紹了參數(shù)查詢和SQL查詢的創(chuàng)建過程及應(yīng)注意的事項,對學(xué)習(xí)Access 2003的有一定參考和借鑒的作用。
關(guān)鍵詞:數(shù)據(jù)庫;Access;查詢;參數(shù)查詢;SQL查詢
中圖分類號:TP311.138-4
隨著計算機技術(shù)的發(fā)展,數(shù)據(jù)庫技術(shù)在現(xiàn)代社會中的應(yīng)用越來越廣泛。比如大到企事業(yè)單位,小到個體商戶,都在使用數(shù)據(jù)庫系統(tǒng),有效的管理數(shù)據(jù)信息,其已成為各行業(yè)的重要工具。因而有越來越多的人學(xué)習(xí)和開發(fā)數(shù)據(jù)庫系統(tǒng)。本文將以Access數(shù)據(jù)庫為例,介紹其中的查詢對象的使用。
1 查詢的概念
查詢是對數(shù)據(jù)庫中的數(shù)據(jù)進行查找并對數(shù)據(jù)進行分析、計算、更新及其他加工處理[1]。數(shù)據(jù)庫中保存的查詢,只是一個結(jié)構(gòu),不占用物理空間,只有在運行時,才根據(jù)結(jié)構(gòu)從相應(yīng)的數(shù)據(jù)源中提取數(shù)據(jù)。當查詢關(guān)閉,運行結(jié)果就會消失,再次運行該查詢,重新提取數(shù)據(jù)源中的數(shù)據(jù),顯示在表視圖中[2]。因此,當對應(yīng)表中的數(shù)據(jù)發(fā)生變化時,查詢也會進行相應(yīng)的更新。
下面在Access 2003環(huán)境下以“圖書管理”數(shù)據(jù)庫(如圖1)為例分別探討參數(shù)查詢和SQL查詢的創(chuàng)建及注意事項。
圖1 圖書管理系統(tǒng)關(guān)系圖
2 參數(shù)查詢
參數(shù)查詢是在查詢運行時,先輸入?yún)?shù),再根據(jù)參數(shù)進行查詢。根據(jù)設(shè)定參數(shù)的個數(shù)不同,可分為單參數(shù)和多參數(shù)查詢。
2.1 參數(shù)查詢的特點
參數(shù)查詢是一種動態(tài)、智能化的查詢,可以在每次運行查詢時,根據(jù)用戶輸入不同的參數(shù)(或條件),進行查詢,因此每次運行查詢得到的結(jié)果就不同[3]。而其他查詢,比如選擇查詢的條件是在創(chuàng)建查詢時已設(shè)定好,只能查詢固定信息,比如查詢條件設(shè)定為書名是“C語言程序設(shè)計”,每次運行查詢,只能固定的輸出這本圖書的相關(guān)信息,如果想要查詢其他圖書信息,則必須重新創(chuàng)建一個查詢,或回到查詢設(shè)計器中修改已有的查詢條件。
2.2 參數(shù)查詢的創(chuàng)建
單參數(shù)查詢和多參數(shù)查詢的創(chuàng)建方式是相同的。只是查詢參數(shù)的個數(shù)有所區(qū)別而已,創(chuàng)建過程是相同的。過程如下:
例:利用圖書作者的“姓名”查詢出其編寫的圖書“名稱”,“價格”,“出版社”。
題目分析:數(shù)據(jù)源是“圖書表”,參數(shù)是“圖書表”中“作者”,最終顯示的是“書名”、“價格”和“出版社”。
通過查詢設(shè)計器完成如圖2所示。
圖2 參數(shù)查詢示意圖
參數(shù)查詢中參數(shù)的設(shè)定有兩種途徑。
(1)在“查詢設(shè)計器”中相應(yīng)的字段下的條件中,用中括號把參數(shù)名稱括起來(如圖2所示)。
(2)在“查詢設(shè)計器”中,選擇相應(yīng)的結(jié)果列后,選擇【參數(shù)】菜單(如圖3所示)。在打開的“查詢參數(shù)”界面中(如圖4所示),設(shè)定參數(shù)名稱[請輸入作者姓名]以及數(shù)據(jù)類型。其參數(shù)名稱用中括號括起來,數(shù)據(jù)類型必須和數(shù)據(jù)源中涉及到字段的數(shù)據(jù)類型相同。最后將參數(shù)名稱[請輸入作者姓名]填入“查詢設(shè)計器”中相應(yīng)的“作者”字段的“條件”中。
圖3 參數(shù)菜單
2.3 參數(shù)查詢的注意事項
(1)參數(shù)的數(shù)據(jù)類型必須和數(shù)據(jù)源中涉及到的數(shù)據(jù)表中的數(shù)據(jù)類型一致。
(2)參數(shù)名稱必須用中括號(英文狀態(tài)下)括起來。
(3)在用第二種方法創(chuàng)建參數(shù)查詢時,一定要注意在“查詢參數(shù)”界面(如圖4)中輸入的“參數(shù)名稱”必須和在“查詢設(shè)計器”中相應(yīng)字段條件下輸入的“參數(shù)名稱”一字不差。
圖4 參數(shù)設(shè)定
3 SQL查詢
SQL(Structured Query Language)語言是一種被關(guān)系數(shù)據(jù)庫產(chǎn)品廣泛使用的標準結(jié)構(gòu)化查詢語言。可以對數(shù)據(jù)庫進行多種操作,例如定義、查詢等,其中數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作,其功能是指根據(jù)用戶的需要以一種可讀的方式從數(shù)據(jù)庫中提取所需數(shù)據(jù),由SQL的數(shù)據(jù)操縱語言的SELECT語句實現(xiàn)[4]。
3.1 SQL語句的通用格式[5]
SELECT[ALL︱DISTINCT][<目標列表達式>[,…n]]
FROM<表名或視圖名>[,<表名或視圖名>[…n]]
[WHERE<條件表達式>]
[GROUP BY <列名l>[HAVING <條件表達式>]]
[ORDER BY <列名2>[ASC︱DESC]];
3.2 SQL語句的功能
使用SQL語句可以從指定的基本表或視圖中,選擇滿足條件的數(shù)據(jù),并對其進行分組、統(tǒng)計、排序和投影,形成查詢結(jié)果集,供用戶查閱。下面簡單介紹多表查詢、嵌套查詢和函數(shù)查詢。
3.3 SQL查詢的注意事項
(1)多表查詢
多表查詢是查詢結(jié)果涉及到多張數(shù)據(jù)表,在創(chuàng)建的時候要注意必須按照一定的條件將這些表連接在一起,以便為用戶提供所需的信息。如果在Where語句中,既有連接又有查詢條件,一定要先寫連接條件后寫查詢條件。
(2)嵌套查詢
嵌套查詢是指在一個外層查詢中包含有另一個內(nèi)層查詢。其中外層查詢稱為主查詢,內(nèi)層查詢稱為子查詢。允許多層嵌套,由內(nèi)而外地進行分析,子查詢的結(jié)果作為主查詢的查詢條件[6]。在創(chuàng)建嵌套查詢時要靈活的運用IN、比較符、ANY或ALL和EXISTS操作符在嵌套查詢中的使用。
(3)函數(shù)查詢
函數(shù)查詢也稱為聚合查詢或統(tǒng)計查詢。用戶在使用數(shù)據(jù)庫時,經(jīng)常對數(shù)據(jù)表中的某些列的數(shù)據(jù)進行統(tǒng)計和分析,比如求出課程成績的平均值、最大值、最小值等。
在創(chuàng)建函數(shù)查詢時要注意各個函數(shù)的使用,比如(1)COUNT(*)函數(shù)將準確地返回表中的總行數(shù),而僅當COUNT()函數(shù)的參數(shù)列沒有NULL值時,才返回表中正確的行計數(shù),所以僅當受NOT NULL限制的列作為參數(shù)時,才可使用COUNT()函數(shù)代替COUNT(*)函數(shù)。(2)WHERE子句和HAVING子句的區(qū)別:如果指定了GROUP BY子句,那么HAVING子句D的條件將作用于GROUP BY子句創(chuàng)建的組;如果指定WHERE子句,而沒有指定GROUP BY子句,那么HAVING子句定義的條件將作用于WHERE子句篩選出來的數(shù)據(jù),并把輸出看作是一個組;如果既沒有指定GROUP BY子句也沒有指定WHERE子句,那么HAVING子句的條件將作用于FROM子句輸出的數(shù)據(jù),并把這個輸出看作是一個組[7]。
4 小結(jié)
本文通過實例,以及個人經(jīng)驗小結(jié),探討了Access數(shù)據(jù)庫中參數(shù)查詢和SQL查詢的創(chuàng)建并對參數(shù)查詢和SQL查詢中應(yīng)該注意的事項進行了分析和小結(jié),把其中容易混淆的知識點進行了講解與分析,對于學(xué)習(xí)參數(shù)查詢和SQL查詢能起到一定的幫助和借鑒的作用。
參考文獻:
[1]楊建偉,蘇瑞娟,劉懷亮.數(shù)據(jù)庫原理與應(yīng)用教程[M].北京:冶金工業(yè)出版社.
[2]萬敏.Access數(shù)據(jù)庫中操作查詢探析[J].電腦知識與技術(shù),2012(11).
[3]徐秀花.Access 2010數(shù)據(jù)庫應(yīng)用技術(shù)教程[M].北京:清華大學(xué)出版社.
[4]張巍.數(shù)據(jù)庫原理與應(yīng)用(Access)[M].北京:清華大學(xué)出版社.
[5]薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].北京:高等教育出版社.
[6]http://wenku.baidu.com/link?url=Sq9FjtbnPgb2QB_UWlowgF1G8zTMHqsi0dNX64Bh6C8m3w5t9pvED3k1YTKGiPOfzWEEAbUKIjsbTGKrX3TAh0tO9kpjHezDcN6e_vUWmhi.
[7]http://blog.sina.com.cn/s/blog_4ef69b3d0100a174.html.
作者簡介:戚娜(1981-),女,陜西西安市戶縣人,本科,講師,研究方向:計算機科學(xué)與技術(shù)。
作者單位:陜西工業(yè)職業(yè)技術(shù)學(xué)院,陜西咸陽 712000
基金項目:陜西工業(yè)職業(yè)技術(shù)學(xué)院教研項目“高職程序設(shè)計類課程實訓(xùn)環(huán)節(jié)的研究與實踐——以C語言為例”,(JY12-05)。