2015年計算機二級考試《VFP》鞏固習題及解析(3)
1[單選題] 在Visual FoxPro中可以建立表的命令是( )。
A.CREATE
B.CREATE DATABASE
C.CREATE QUERY
D.CREATE FORM
參考答案:A
參考解析:用命令方式建立數據庫表的是在命令窗口利用OPEN DATA命令先打開數據庫,然后利用CREATE命令打開表設計器進行數據表設計。
2[簡答題]
(1)在考生文件夾下,有一個數據庫“school”,其中有數據庫表“student”、“score”和“course”。在表單向導中選取“一對多表單向導”創建一個表單。要求:從父表“student”中選取字段“學號”和“姓名”,從子表“score”中選取字段“課程編號”和“成績”,表單樣式選用“浮雕式”,按鈕類型使用“圖片按鈕”,按“學號”升序排序,表單標題為“學生成績瀏覽”,最后將表單存放在考生文件夾中,表單文件名為 “bd2”。
(2)在考生文件夾中有一數據庫“school”,其中有數據庫表“student”、“score”和“course”。建立“成績大于等于75分”、按“學號”升序排序的本地視圖“view2”,該視圖按順序包含字段“學號”、“姓名”、“成績”和“課程名稱”。
參考解析:
【考點指引】本大題第1小題考查一對多表單向導的使用,重點是多表之間字段的聯系;第2小題考查視圖的創建,重點是多表之間字段的聯系。
(1)【操作步驟】
①選擇【文件】→【打開】命令,在“打開”對話框的“文件類型”下拉列表框中選擇“數據庫”,選擇“school.dbc”,單擊“確定”按鈕,打開數據庫設計器。
②選擇【文件】→【新建】命令,選擇“表單”,單擊“向導”按鈕,在彈出的“向導選取”窗口中選擇“→對多表單向導”,單擊“確定”按鈕。
③在“→對多表單向導”對話框的“數據庫和表”列表框中選擇“student”表做父表,將“可用字段”下的“學號”和“姓名”字段添加到“選定字段”列表框中,單擊“下一步”按鈕。
④在“一對多表單向導”對話框的“數據庫和表”列表框中選擇“score”表做子表,將“可用字段”下的“課程編號”和“成績”字段添加到“選定字段”列表框中,單擊“下一步”按鈕。
⑤系統自動選擇兩個表的“學號”字段作為關聯字段,單擊“下一步”按鈕,在“樣式”列表框中選擇“浮雕式”,“按鈕類型”選擇“圖片按鈕”,單擊“下一步”按鈕。
⑥在“可用的字段或索引標識”列表框中選擇“學號”添加到“選定字段”列表框中,選擇“升序”,單擊“下一步”按鈕。
⑦輸入表單標題為“學生成績瀏覽”,單擊“完成”按鈕,輸入表單名稱“bd2”并保存退出。
(2)【操作步驟】
①選擇【文件】→【新建】命令,選擇“視圖”,單擊“新建文件”按鈕打開“添加表或視圖”對話框,選擇“表單”選項,選擇數據庫“school”,將表“score”、“student”和“course”分別“添加”到視圖設計器中,系統會自動選擇關聯字段“學號”為表“score”和“student”建立內部聯系,選擇關聯字段“課程編號”為表“score”和“course”建立內部聯系,單擊“確定”按鈕關閉“連接條件”對話框,再關閉“添加表或視圖”對話框。
②在視圖設計器中單擊“字段”選項卡,將“可用字段”列表框中的“student.學號”、“student.姓名”、“score.成績”和“course.課程名稱”等字段添加到右邊的“選定字段”列表框中。
③在視圖設計器中單擊“篩選”選項卡,在“字段名”下拉列表框中選擇“score.成績”字段,在“條件”下拉列表框中選擇“>=”,在“實例”編輯框中輸入“75”。
④在視圖設計器中單擊“排序依據”選項卡,在“排序依據”選項卡的“字段名”下拉列表框中選擇“student.學號”字段,單擊“添加”按鈕,將“student.學號”字段添加到右邊的“排序條件”列表框中,在“排序條件”中選擇“升序”單選項。
⑤在視圖設計器中單擊“連接”選項卡,在第一行的“邏輯”下拉列表框中選擇“AND”。
⑥在視圖設計器中單擊“關閉”按鈕,將視圖以“view2”文件名保存在考生文件夾下。
3[簡答題]對“公司”數據庫中的表“職員信息”和“部門”,建立文件名為“bd3”的表單,標題為“公司管理”,表單上有一個表格控件和3個命令按鈕,標題分別為“按部門查看”、“人數統計”和“關閉”。
當表單運行時:
(1)單擊“按部門查看”按鈕,以“部門編號”排序查詢職員信息表中的記錄,結果在表格控件中顯示。
(2)單擊“人數統計”按鈕,查詢職員信息表中各部門的人數,結果中含“部門編號”和“人數”等字段,結果在表格控件中顯示。
(3)單擊“關閉”按鈕,關閉表單。
參考解析:
【考點指引】本大題主要考查表單的建立,重點是命令按鈕事件代碼的編寫和表格控件數據源的設置。
【操作步驟】
①選擇【文件】→【新建】命令,選擇“表單”,單擊“新建文件”按鈕打開表單設計器,將Caption屬性值修改為“公司管理”,單擊表單控件工具欄上的“命令按鈕”控件圖標,為表單添加3個命令按鈕Command1、Command2和Command3,單擊表單控件工具欄上的“表格”控件圖標,再添加一個表格控件。
②分別選擇3個命令按鈕,在按鈕屬性窗口命令按鈕Command1的Caption屬性值修改為“按部門查看”,Command2的Caption屬性值修改為“人數統計”,Command3的Caption屬性值修改為“關閉”,如圖20–1所示。雙擊“關閉”命令按鈕,在Click事件中輸入代碼:ThisForm.Release,用來關閉表單。
③選擇表格控件“Grid1”,在表格控件屬性窗口“RecordSource”屬性值修改為“〝〞”,將“RecordSourceType”屬性值修改為“1”。
④雙擊“按部門查看”命令按鈕,在Click事件中輸入代碼:
SELECT*INTO CURSOR tmp FROM職員信息0R–DER BY部門編號
ThisForm.Grid1.RecordSourceType=1
ThisForm.Grid1.RecordSource=〝tmp〞
ThisForm.Grid1.Refresh
⑤雙擊“人數統計”命令按鈕,在Click事件中輸入代碼:
SELECT部門編號,C0UNT(*)AS人數INTO CURSOR tmp FROM職員信息
ThisForm.Grid1.RecordSourceType=1
ThisForm.Grid1.RecordSource=〝tmp〞
ThisForm.Grid1.Refresh
⑥選擇【表單】→【執行表單】命令,系統首先要求保存該表單文件,在彈出的“另存為”對話框中輸入表單文件名“bd3”,保存在考生文件夾下,然后運行表單。
4[單選題] 有以下兩個表:
讀者(借書證號C,姓名C。單位C,性別L。職稱C。聯系電話C.·
借閱(借書證號C,總編號C,借書日期D.
查詢沒有借閱任何圖書的讀者信息,不正確的SQL語句是
A.SELECT*FROM讀者WHERE借書證號<>ANY(SELECT借書證號FROM借閱.B.SELECT*FROM讀者WHERE借書證號.<>ALL(SELECT借書證號FROM借閱.C.SELECT*FROM讀者WHERE借書證號NOTIN(SELECT借書證號FROM借閱.D.SELECT*FROM讀者WHERENOTEXISTS(SELECT借書證號FROM借閱;
WHERE借書證號=讀者.借書證號
參考答案:A
參考解析:‘.<>”為常用的特殊運算符,表示“不等于”,NOTIN表示“不在一組值的范圍內”,EXISTS是謂詞,EX-ISTS或NOTEXISTS是用來檢查在子查詢中是否有結果返回,即存在元組或不存在元組。本題查詢沒有任何借閱記錄的圖書信息,選項B、C、D均可進行查詢,但是沒有“any”這一說法,因此本題選A。
5[單選題] 在SQL SELECT查詢中,為了使查詢結果排序必須使用短語( ).
A.ASCB.DESCC.GROUPBYD.ORDERBY
參考解析:0RDER BY是對最終的查詢結果進行排序,用ORDER BY短語可將查詢結果按升序(ASC)或降序(DESC)排列。GROUP BY短語用于對查詢結果進行分組。
6[單選題] 有以下表:
讀者(借書證號C,姓名C,單位C,性別L,職稱C,聯系電話C.
參考解析:BETWEEN…AND…表示“在……和……之間”‘其中包含等于,即大于等于AND前面的數。“!”和“not”表示“不等于”,題干要求查詢單價小于16或大于20的圖書信息, A、B、C選項均為正確的SQL語句,因此本題選D。
7[單選題]程序流程圖中帶有箭頭的線段表示的是( )。
A.圖元關系B.數據流C.控制流D.調用關系
參考答案:C
參考解析:在數據流圖中,用標有名字的箭頭表示數據流。在程序流程圖中,用標有名字的箭頭表示控制流。所以選擇C)。
8[單選題]下列程序段執行后,內存變量sl的值是
sl=”奧運會游泳比賽”
sl=stuff(sl,7,4,”田徑”.7s1
A.奧運會游泳比賽
B.奧運會田徑比賽
C.奧運會田徑
D.奧運會游泳
參考答案:B
參考解析:STUFF(<字符表達式1>,<起始位置>,<長度>,<字符表達式2>.為子串替換函數,用<字符表達式2>值替換<字符表達式1>中由<起始位置>和<長度>指定的一個子串。替換和被替換的字符個數不一定相等。如果<長度>值是0,<字符表達式2>則插在由<起始位置>指定的字符前面。如果<字符表達式2>值是空串,那么<字符表達式1>中由<起始位置>和<長度>指定的子串被刪去。本題正確答案為B。
9[單選題] 查詢訂購單的數量和所有訂購單金額合計的正確命令是( )。
A.SELECT COUNT(DISTINCT訂單號),SUM(數量*單價)FROM產品JOIN訂購單名細ON產品.產品號=訂購單名細.產品號
B.SELECT COUNT(訂單號),SUM(數量*單價)FROM產品JOIN訂購單名細ON產品.產品號=訂購單名細.產品號
C.SELECT COUNT(DISTINCT訂單號),SUM(數量*單價)FROM產品,訂購單名細0N產品.產品號=訂購單名細.產品號
D.SELECT COUNT(訂單號),SUM(數量*單價)FROM產品,訂購單名細0N產品.產品號=訂購單名細.產品號
參考答案:A
參考解析:SQL的核心是查詢。SQL的查詢命令也稱作SELECT命令,它的基本形式由SELECT-FROM-WHERE查詢塊組成,多個查詢塊可以嵌套執行。超連接查詢有四種連接方式,其基本格式如下:SELECT…FROM左表IN-NER I LEFT l RIGHT I FULL JOIN右表0N連接條件WTIERE其他條件。本題DISTINCT用于去掉重復值,COUNT(DIS.TINCT訂單號)表示訂購單的數量,SUM(數量*單價)為訂購單金額,A)選項格式正確。
10[簡答題]首先將“order_d”表全部內容復制到“order_d2”表,然后對“order_d2”表編寫完成如下功能的程序:
(1)把訂單中“商品編號”相同的訂單合并為一張訂單,新的“訂單編號”取最小的“訂單編號”,“單價”取加權平均單價(即“商品編號”相同的訂單總金額/總數量),“數量”取合計。
(2)結果先按新的“訂單編號”升序排序,再按“商品編號”升序排序。
(3)最終記錄的處理結果保存在“order_d3”表中。
(4)最后將程序保存為“cx1.prg”,并執行該程序。
參考解析:
【考點指引】本大題主要考查SQL SELECT代碼的編寫,重點是分組命令GROUP BY、求最小值MIN函數和求和函數SUM的使用。
【操作步驟】
①在命令窗口中輸入命令:MODI COMM cx1(回車執行),打開程序文件編輯窗口,在程序文件編輯窗口中輸入以下程序代碼:
SELECT*INTO TABLE order_d2 FROM order_d
SELECT MIN(訂單編號)AS新訂單號,商品編號,SUM(數量*單價)/SUM(數量)AS單價,SUM(數量)AS數量INTO TABLE order_d3 FROM order_d2 GROUP BY商品編號0RDER BY新訂單號,商品編號
關閉程序文件編輯窗口并保存程序文件。
②在命令窗口中輸入命令:DO cx1(回車執行),執行程序文件。