正文 關於計算機等級考試(2 / 2)

2.2SQL查詢

SQL語句中的查詢語句是VFP上機考試重要知識點,貫穿上機考試的三大題型,SQL查詢的標準語句格式是:SELE….FROM….WHERE…可以簡單地分解為三個部分:查什麼數據、從哪兒查數據、查的條件是什麼。如果需要分組則使用GROUP BY語句,如果需要排序則使用ORDER BY語句,如果查詢去向是表則使用INTO TABLE 語句,如果需要運算還要使用相關的函數。

2.3下麵我們來看一個詳細的實例

題目要求:在考生文件夾下完成如下簡單應用:

使用SQL語句完成下麵的操作:根據“國家”和“獲獎牌情況”兩個表統計每個國家獲得的金牌數(“名次”為1表示獲得一塊金牌),結果包括“國家名稱”和“金牌數”兩個字段,並且先按“金牌數”降序排列,若“金牌數”相同再按“國家名稱”降充排列,然後將結果存儲到表TEMP中。

根據題意,我們先來分析一下:這是一道兩表連接查詢,查什麼數據,從哪查數據,查的條件是什麼,是否需要分組、排序,是否有查詢去向等。通過給定題目,我們知道查詢結果是“國家名稱”和“金牌數”兩個字段;查詢的數據源是“國家”和“獲獎牌情況”;由於名次為1的表示獲得金牌,也就是說名次不是1的記錄我們都不需要,這就查詢條件WHERE需要控製的;最終統計的是每個國家獲得金牌數,所以首先應該進行分組操作,分組字段應該是能區分每個國家的字段,這裏可以選擇“國家名稱”字段,然後選擇分組5大函數中的計數函數COUNT()來解決獲得的金牌數;查詢結果先按“金牌數”降序排列,若“金牌數”相同再按“國家名稱”降充排列,使用ORDER BY語句來排序;最後查詢結果存儲到表,可以加上INTO TABLE語句。

通過以上分析,我們可以給出正確的SQL查詢語句:

SELE 國家名稱,COUNT(*) AS 金牌數;

FROM 國家,獲獎牌情況;

WHERE 國家.國家代碼=獲獎牌情況.國家代碼.AND.名次=1;

GROUP BY 國家名稱;

ORDER BY 金牌數 DESC,國家名稱 DESC;

INTO TABLE TEMP

需要注意的幾點如下:

1、多表連接需要在WHERE條件中公共字段相連,即國家.國家代碼=獲獎牌情況.國家代碼。2、名次字段要分清是字符型還是數值型,如果字符型字段的值需要加上定界符。3、在沒有空值的情況下,COUNT(*)等同於COUNT(國家名稱)。4、ORDER BY後麵不能加函數,也就是說ORDER BY COUNT(*)這是錯誤的。5、降序排序需要加上DESC。

3、結語

總之,要想在二級考試上機操作中過關,關鍵是要結合所學理論知識靈活運用於上機操作中,平時多上機操作,養成記筆記的好習慣,總結方法、經驗和技巧。