【カテゴリー別】Access VBA スタンダード 模擬問題 SQL応用 Access VBA スタンダード 模擬問題 模擬問題 2026.07.122026.07.18 こちらはカテゴリー別の模擬問題です。 合計41問がシステムに登録した順番どおりに1問1答形式で出題されます。 タイマー機能はありません。 なお本カテゴリーの問題は、テーブル名やフィールド名(例:[Table 1]、[Type]、など)にスペースや予約語が含まれる場合において、原則としてカッコ [ ] で囲んで表記しております。 準備が整い次第、ボタンを押して試験を開始してください。 1. SQL(Structured Query Language)に関する説明として、最も適切なものを以下の選択肢より1つ解答しなさい。 画面のボタンやフォームのレイアウトを設計するための言語である。 データベースのデータを操作(抽出・追加・更新・削除など)するための言語である。 Excelのワークシート関数を記述するための言語である。 VBAのプロシージャの実行順序を制御するための専用言語である。 None 2. 次のコードは、[Table Product3]から、IDに「100」という文字を含むレコードを抽出して表示するものである。以下の空欄に入る適切な語句を解答しなさい。Sub Exam1() Dim N As String N = "SELECT * FROM [Table Product3] WHERE ID '*100*';" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1"MsgBox "完了"End Sub 3. 次のコードは、[Table Product3]から、IDが「T1」から始まる 1文字から任意数のレコードを抽出するものである。空欄に入るワイルドカードとして適切なものを、以下の選択肢より1つ解答しなさい。Sub Exam1() Dim N As String N = "SELECT * FROM [Table Product3] WHERE ID Like 'T1【 ① 】;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub [ ] *(アスタリスク) # ? None 4. 次のコードは、[Table Product3]から、IDのT100に続く5文字目が「1」または「5」であるレコードを抽出するものである。空欄に入る語句として最も適切ものはどれか。以下の選択肢より1つ解答しなさい。Sub Exam1() Dim N As String N = "SELECT * FROM [Table Product3] WHERE ID Like 'T100【 ① 】;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1"MsgBox "完了"End Sub (15) #15 {15} [15] None 5. 次のコードは、[Table Product3]から、IDのT100に続く5文字目が「1」から「5」の範囲にあるレコードを抽出するものである。以下の空欄に入る適切な語句を解答しなさい。Sub Exam1() Dim N As String N = "SELECT * FROM [Table Product3] WHERE ID Like 'T100';" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub 6. Like演算子の範囲指定した「[文字-文字]」に関する説明として最も適切ものはどれか。以下の選択肢より1つ解答しなさい。 範囲の両端の文字は検索結果に含まれない。 範囲指定では数字は使えず、英字のみ指定できる。 範囲は必ず昇順で指定する必要があり、降順(例:[9-1]、[z-a])では正しく検索できない。 範囲は昇順・降順のどちらで書いても同じ結果になる。 None 7. Accessのクエリモード(ANSI-89とANSI-92)に関する説明として、 最も適切ものはどれか。以下の選択肢より1つ解答しなさい。 クエリモードはSQL文の実行速度を指定する設定である。 Accessには「ANSI-89」と「ANSI-92」の2つのクエリモードがあり、使用するモードによってワイルドカード文字が異なる。 Accessのクエリモードは1種類のみで、ワイルドカードは常に同じである。 ANSI-89とANSI-92は、ワイルドカードではなく並べ替えの方向を決めるモードである。 None 8. ANSI-89とANSI-92の使い分けに関する説明として最も適切ものはどれか。以下の選択肢より1つ解答しなさい。以下の選択肢より1つ解答しなさい。 ANSI-89はADO専用、ANSI-92はDAO専用である。 どちらのモードもSQL Server専用で、通常のAccessでは使用しない。 ANSI-89は数値の検索専用、ANSI-92は文字列の検索専用である。 ANSI-89は通常のデータベースやDAOオブジェクトを使用してのアクセス時、ANSI-92はSQL Server接続やADOオブジェクトを使用してのアクセス時に使用される。 None 9. ANSI-92モードにおいて、ANSI-89の「*」(任意数の文字)に相当するワイルドカードとして最も適切ものはどれか。以下の選択肢より1つ解答しなさい。 _ [^リスト] ? % None 10. ANSI-92モードにおいて、ANSI-89の「?」(任意の1文字)に相当するワイルドカードとして適切な語句を解答しなさい。 11. ANSI-92モードにおいて、ANSI-89のリスト「[!15]」(リスト以外の1文字)に相当する記述を「15」使用して以下の空欄に解答しなさい。 12. 次のコードは、テーブル[Table Sports1]を「Type」ごとにグループ化し、各グループの「Price」の合計を求めるものである。以下の空欄に入る適切なコードを解答しなさい。Sub Exam1() Dim N As String N = "SELECT [Type], Sum(Price) FROM [Table Sports1] [Type];" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub 13. GROUP BY句に複数のフィールドを指定した場合のグループ化の動作として最も適切ものはどれか。以下の選択肢より1つ解答しなさい。 指定した順番に関係なく、常に主キーの順でグループ化される。 右側に書いたフィールドから優先してグループ化される。 左側に書いたフィールドから優先してグループ化される。 複数フィールドはGROUP BYに指定できない。 None 14. SQLの集計関数(グループごとの集計に使う関数)として正しい組み合わせを1つ解答しなさい。以下の選択肢より1つ解答しなさい。 LEFT・RIGHT・MID・TRIM FORMAT・STR・VAL・CSTR IIF・SWITCH・CHOOSE COUNT・SUM・AVG・MAX・MIN None 15. 次のコードは、[Table Sports1]の「Price」フィールドに値が入っているレコードの件数を求めて表示するものである。以下の空欄に入る適切な語句を解答しなさい。Sub Exam1() Dim N As String Dim rst As Object N = "SELECT (Price) FROM [Table Sports1];" Set rst = CurrentDb.OpenRecordset(N) MsgBox rst.Fields(0).Value MsgBox "完了"End Sub 16. 次のコードを実行したときの結果として最も適切ものはどれか。以下の選択肢より1つ解答しなさい。Sub Exam1() Dim N As String Dim rst As Object N = "SELECT COUNT(*) FROM [Table Sports2];" Set rst = CurrentDb.OpenRecordset(N) MsgBox rst.Fields(0).Value MsgBox "完了"End Sub 常に0が表示される。 すべてのフィールドに値があるレコードだけの件数が表示される。 Null値を含むためエラーになり、件数は表示されない。 いずれかのフィールドがNull値のレコードも含めた、全レコードの件数が表示される。 None 17. 次のコードは、[Table Sports1]の「Price」の平均値を求めて表示するものである。以下の空欄に入る適切な語句を解答しなさい。 Sub Exam1() Dim N As String Dim rst As Object N = "SELECT (Price) FROM [Table Sports1];" Set rst = CurrentDb.OpenRecordset(N) MsgBox rst.Fields(0).ValueMsgBox "完了"End Sub 18. SELECT句で集計関数などに句で別名を指定しなかった場合、結果のフィールドには「 1001」既定の名前(先頭の例は 1001)が自動的に割り当てられる。以上の空欄にはいる適切な語句を解答しなさい。 19. 次のコードは、「Type」の種類ごとに「Price」を合計し、合計が3000以上のグループだけを抽出するものである。以下の空欄に入る適切な語句を解答しなさい。Sub Exam1() Dim N As String N = "SELECT [Type], SUM(Price) FROM [Table Sports1] GROUP BY [Type] SUM(Price) >= 3000;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub 20. 集計クエリにおけるWHERE句とHAVING句の違いとして、最も適切なものを1つ解答しなさい。 HAVINGはグループ化する前のレコードを絞り込むために使う。 WHEREは集計関数を条件に使えるが、HAVINGは使えない。 WHEREとHAVINGはまったく同じ働きで、どちらを使っても結果は変わらない。 WHEREはグループ化する前の個々のレコードを絞り込み、HAVINGはグループ化した後のグループを絞り込む。 None 21. 次のコードは、Table1とTable7を、data1が一致するレコードだけ結合して取り出すものである。空欄に入るコードや語句を解答しなさい。Sub Exam1() Dim N As String N = "SELECT Table1.data1, Table1.data2, Table7.data5 FROM Table1 Table7 Table1.data1= Table7.data1;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub 22. テーブルを内部結合するときの「結合フィールド」に関する説明として最も適切ものはどれか。以下の選択肢より1つ解答しなさい。 フィールド名は同じでなくてもよいが、データ型や種類は一致している必要がある。 データ型が違っていても、名前さえ同じなら結合できる。 結合には必ず主キー同士を使わなければならない。 結合フィールドは、2つのテーブルでまったく同じ名前でなければならない。 None 23. 外部結合(LEFT JOINやRIGHT JOIN)を使う目的 として最も適切ものはどれか。以下の選択肢より1つ解答しなさい。 一致するレコードだけでなく、片方のテーブルにあって相手に一致しないレコードも含めて取り出すため。 両方のテーブルに一致するレコードだけを取り出すため。 結合せずに1つのテーブルだけを取り出すため。 レコードを昇順・降順に並べ替えるため。 None 24. 次のコードは、Table1を基準として、Table5と一致しないレコードも含めて左外部結合して取り出すものである。以下の空欄に入る適切なコードを解答しなさい。Sub Exam1() Dim N As String N = "SELECT Table1.ID, Table1.data1,Table5.data7 FROM Table1 Table5 ON Table1.ID = Table5.ID;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub 25. 次のコードは、 Table2を基準に Table1と一致しないレコードも含めて右側外部結合して取り出すものである。以下の空欄に入る適切なコードを解答しなさい。Sub Exam1() Dim N As String N = "SELECT Table2.ID,Table1.data2,Table2.data5 FROM Table1 Table2 ON Table1.ID = Table2.ID;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub 26. 外部結合で、基準にしたテーブルにはあるが相手のテーブルに一致するレコードがない場合、相手側のフィールドの値はどうなるか。最も適切なものを1つ解答しなさい。以下の選択肢より1つ解答しなさい。 エラーになり結果が表示されない。 相手側のフィールドには0が入る。 相手側のフィールドにはNull値が入る。 そのレコード自体が結果から除外される。 None 27. 次のコードは、Table1を左外部結合し、Table8に一致するレコードが無い指定フィールドのレコードだけを抽出するものである。以下の空欄に入る適切なコードを解答しなさい。Sub Exam1() Dim N As String N = "SELECT Table8.data1 FROM Table8 LEFT JOIN Table1 ON Table8.data1 = Table1.data1 WHERE Table1.data1 ;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub 28. 次のコードは、Table1とTable7から指定フィールドの重複は除いて1つの結果にまとめて取り出すものである以下の空欄に入る適切な語句を解答しなさい。Sub Exam1() Dim N As String N = "SELECT data1 FROM Table1 SELECT data1 FROM Table7;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了" End Sub 29. 次のコードは、2つテーブルを重複も除外せず結合するものである。 以下の空欄に入る適切なコードを解答しなさい。 Sub Exam1() Dim N As String N = "SELECT * FROM Table1 SELECT * FROM Table2;" CurrentDb.QueryDefs("Query1").SQL = N DoCmd.OpenQuery "Query1" MsgBox "完了"End Sub 30. 次のコードは、Table1に「data10」という短いテキスト型のフィールドを追加するものである。 以下の空欄に入る適切なコードを解答しなさい。 Sub Exam1() Dim N As String DoCmd.SetWarnings False N = " Table1 data10 TEXT(50);" DoCmd.RunSQL N DoCmd.SetWarnings True MsgBox "完了"End Sub 31. 次のコードは、テーブルの既存フィールド「data1」の定義を、最大100文字のテキスト型に変更するものである。 以下の空欄に入る適切なコードを解答しなさい。 Sub Exam1() Dim N As String DoCmd.SetWarnings False N = "ALTER TABLE Table1 data1 TEXT(100);" DoCmd.RunSQL N DoCmd.SetWarnings True MsgBox "完了"End Sub 32. 次のコードは、Table2から「data7」フィールドを削除するものである。 空欄に入る適切なコードを解答しなさい。 Sub Exam1() Dim N As String DoCmd.SetWarnings False N = "ALTER TABLE Table2 data7;" DoCmd.RunSQL N DoCmd.SetWarnings True MsgBox "完了"End Sub 33. 次のコードは、VBAからSQL(アクションクエリ)を実行して、テーブルに整数型のフィールド「data11」を追加するものである。空欄に入る適切な語句解答しなさい。空欄に入る語句を解答しなさい。Sub Exam1() Dim N As String N = "ALTER TABLE Table1 ADD COLUMN data11 INTEGER;" Docmd. N MsgBox "完了"End Sub 34. インデックスの役割に関する説明として、最も適切なものを1つ解答しなさい。以下の選択肢より1つ解答しなさい。 値の重複を避け、検索や並べ替えを高速化するための索引のことである。 インデックスはデータのバックアップを自動作成する機能である。 インデックスを付けると、検索も更新も常に無条件で速くなる。 インデックスはフィールドの値を暗号化して保存する機能である。 None 35. 次のコードは、既存テーブルの指定フィールドにインデックス「idx」を作成するものである。以下の空欄に入る適切なコードを解答しなさい。Sub Exam1() Dim N As String N = " idx ON Table1 (data1);" DoCmd.RunSQL N MsgBox "完了"End Sub 36. 次のコードは、テーブルに作成済みのインデックス「idx」を削除するものである。以下の空欄に入る適切なコードを解答しなさい。Sub Exam1() Dim N As String N = " idx ON Table1 ;" DoCmd.RunSQL N MsgBox "完了"End Sub 37. SQLの高速化の基本的な考え方として、最も適切なものを1つ解答しなさい。以下の選択肢より1つ解答しなさい。 SELECT * を使ってすべてのフィールドを取得すれば必ず高速になる。 「無駄な処理を行わないこと」と「より高速な方法を選択すること」の2つが基本方針である。 とにかくインデックスをできるだけ多くのフィールドに設定することだけが高速化の方法である。 テーブルを正規化せず1つにまとめれば必ず高速になる。 None 38. SELECT句の書き方による高速化の説明として、最も適切なものを1つ解答しなさい。以下の選択肢より1つ解答しなさい。 SELECT句には必ずすべてのフィールドを書かなければならない。 常に SELECT * を使う方が、フィールドを指定するより高速である。 取得するフィールド数は処理速度にまったく影響しない。 SELECT * を避け、必要なフィールドだけを明示的に指定することで、使わないデータを取得する無駄を省き高速化できる。 None 39. 高速化の観点から、UNIONとUNION ALLを使い分ける際の説明として、最も適切なものを以下の選択肢より1つ解答しなさい。 重複レコードを除外する必要がない場合は、重複チェックを行わないUNION ALLの方がUNIONより高速である。 UNIONとUNION ALLは処理速度がまったく同じである。 重複を除外する必要がない場合でも、常にUNIONを使う方が高速である。 UNION ALLは重複を除外するため、UNIONより常に遅い。 None 40. インデックスやデータベースの正規化を効果的に活用した高速化の説明として、適切なもの以下の選択肢より2つ解答しなさい。 適切な正規化、主キーの適切な設定、不要なインデックスの削除などを組み合わせて行う。 正規化をやめてすべてのデータを1つの巨大なテーブルにまとめる。 検索や並べ替えの条件、集計関数の引数に使うフィールドにインデックスを設定すると高速化が図れる。 インデックスは多ければ多いほど、更新も含めてすべての処理が速くなる。 41. データベース全体の高速化のための複合的な最適化手法として、最も適切なものを1つ解答しなさい。以下の選択肢より1つ解答しなさい。 高速化のためにできる限り多くの重複データを保持する。 正規化をやめてすべてのデータを1つの巨大なテーブルにまとめる。 適切な正規化、主キーの適切な設定、不要なインデックスの削除などを組み合わせて行う。 主キーは設定せず、すべてのフィールドにインデックスを付ける。 None Time's up