1.やさしい
UNION ALL は UNION とどう違いますか?
- AUNION ALL は重複する行を取り除く
- BUNION ALL は 1 つのテーブルにしか使えない
- CUNION ALL は重複する行を残す
- DUNION ALL は結果を並べ替える
2.やさしい
WHERE country IN ('NL', 'BE', 'DE') は何をしますか?
- Acountry がリスト内のいずれかの値に等しい行を残す
- Bリストの順に行を並べ替える
- Ccountry の値が 3 つのコードすべてを同時に含む行を残す
- Dcountry がリストにない行を残す
3.やさしい
給与が高い順から低い順に結果を並べ替えるにはどうしますか?
- ASORT salary DOWN
- BORDER BY salary ASC
- CORDER BY salary DESC
- DGROUP BY salary DESC
4.ふつう
SQL におけるビュー(view)とは次のうちどれですか?
- Aディスク上のテーブルのコピー
- B仮想テーブルのように振る舞う保存されたクエリ
- Cテーブルを閲覧するためのデータベースクライアントの画面
- Dインデックスの一種
5.ふつう
学生は多くの科目を履修でき、科目には多くの学生がいます。これはテーブルでどのようにモデル化しますか?
- Astudents テーブルに courses を指す外部キー列 course_id を置いて
- B学生と科目を 1 つのテーブルにまとめて
- C1 つの列に科目 id のリストを保存して
- D学生と科目の両方への外部キーを持つ中間テーブルで
6.ふつう
customers テーブルの異なる都市の数を返すクエリはどれですか?
- ASELECT COUNT(DISTINCT city) FROM customers
- BSELECT COUNT(city) FROM customers GROUP BY city
- CSELECT DISTINCT COUNT(city) FROM customers
- DSELECT SUM(DISTINCT city) FROM customers
7.むずかしい
テーブルに 100 万行あり、ブール型の列 is_active はそのうち 95% で TRUE です。WHERE is_active = TRUE について、オプティマイザが is_active のインデックスを無視することがあるのはなぜですか?
- Aオプティマイザは WHERE 句でインデックスを決して使わないから
- Bインデックスでは TRUE が NULL として扱われるから
- Cほとんどの行が一致するので、多数のインデックス検索より全表スキャンのほうが安いから
- Dブール型の列にはインデックスを作れないから
8.むずかしい
2 つのトランザクションがどちらも stock = 10 を読み、それぞれ 1 を引いて結果を書き込んだため、8 ではなく 9 になりました。これはどの異常ですか?
- A更新の喪失(ロストアップデート)
- B削除時異常
- Cダーティリード
- Dファントムリード
解答
- 1. C · UNION ALL は重複する行を残す
- 2. A · country がリスト内のいずれかの値に等しい行を残す
- 3. C · ORDER BY salary DESC
- 4. B · 仮想テーブルのように振る舞う保存されたクエリ
- 5. D · 学生と科目の両方への外部キーを持つ中間テーブルで
- 6. A · SELECT COUNT(DISTINCT city) FROM customers
- 7. C · ほとんどの行が一致するので、多数のインデックス検索より全表スキャンのほうが安いから
- 8. A · 更新の喪失(ロストアップデート)
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。