1.やさしい
CROSS JOIN は何を返しますか?
- A共通のキー列で一致する行だけ
- B最初のテーブルの行だけ
- C2 つのテーブルの行のあらゆる組み合わせ
- D一致しない行だけ
2.やさしい
クエリで GROUP BY は何をしますか?
- ANULL 値を含む行を削除する
- B2 つのテーブルを共通の列で結合する
- C同じ値を持つ行をグループにまとめ、集約がグループごとに計算されるようにする
- D結果の行をアルファベット順に並べ替える
3.やさしい
UNION ALL は UNION とどう違いますか?
- AUNION ALL は重複する行を残す
- BUNION ALL は結果を並べ替える
- CUNION ALL は重複する行を取り除く
- DUNION ALL は 1 つのテーブルにしか使えない
4.ふつう
GRANT SELECT ON employees TO alice は何をしますか?
- Aユーザー alice が employees テーブルを読めるようにする
- Bemployees テーブルを alice にコピーする
- Calice が employees テーブルの行を更新および削除できるようにする
- Dalice をデータベースの所有者にする
5.ふつう
外部キーが ON DELETE CASCADE で宣言されています。親の行を削除すると何が起こりますか?
- A削除は常に拒否される
- B親の行がアーカイブテーブルにコピーされる
- C子の行の外部キーが自動的に NULL に設定される
- Dそれを参照する子の行が自動的に削除される
6.ふつう
テーブルにクラスタ化インデックスが 1 つしか持てないのはなぜですか?
- Aクラスタ化インデックスは主キーにしか作れないから
- Bクラスタ化インデックスはメモリを使いすぎるから
- C行は物理的に 1 つの順序でしか格納できないから
- DSQL 標準が、1 つのテーブルに 2 つ以上のインデックスを持つことを禁止しているから
7.むずかしい
テーブルに 100 万行あり、ブール型の列 is_active はそのうち 95% で TRUE です。WHERE is_active = TRUE について、オプティマイザが is_active のインデックスを無視することがあるのはなぜですか?
- Aブール型の列にはインデックスを作れないから
- Bオプティマイザは WHERE 句でインデックスを決して使わないから
- Cほとんどの行が一致するので、多数のインデックス検索より全表スキャンのほうが安いから
- Dインデックスでは TRUE が NULL として扱われるから
8.むずかしい
2 つのトランザクションがどちらも stock = 10 を読み、それぞれ 1 を引いて結果を書き込んだため、8 ではなく 9 になりました。これはどの異常ですか?
- A更新の喪失(ロストアップデート)
- Bファントムリード
- Cダーティリード
- D削除時異常
解答
- 1. C · 2 つのテーブルの行のあらゆる組み合わせ
- 2. C · 同じ値を持つ行をグループにまとめ、集約がグループごとに計算されるようにする
- 3. A · UNION ALL は重複する行を残す
- 4. A · ユーザー alice が employees テーブルを読めるようにする
- 5. D · それを参照する子の行が自動的に削除される
- 6. C · 行は物理的に 1 つの順序でしか格納できないから
- 7. C · ほとんどの行が一致するので、多数のインデックス検索より全表スキャンのほうが安いから
- 8. A · 更新の喪失(ロストアップデート)
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。