1.やさしい
WHERE price BETWEEN 10 AND 20 はどの行を選びますか?
- Aprice が 10 から 20 まで(10 と 20 を含む)の行
- Bprice が 10 から 20 の範囲外の行
- Cprice が 10 または 20 に等しい行だけ
- Dprice が 10 より大きく 20 より小さい行(10 と 20 は除く)
2.やさしい
代理キー(サロゲートキー)とは何ですか?
- A別のテーブルを参照するキー
- B自動採番の id のように、業務上の意味を持たない人工的な識別子
- Cメールアドレスのような実世界のデータから作ったキー
- Dビューでだけ使われるキー
3.やさしい
CHECK 制約は何をしますか?
- A値が条件を満たさない行を拒否する
- Bテーブルの行数を数える
- Cユーザーのパスワードを検証する
- Dクエリを実行する前に、テーブルが存在するかどうかを確認する
4.ふつう
テーブルにクラスタ化インデックスが 1 つしか持てないのはなぜですか?
- Aクラスタ化インデックスはメモリを使いすぎるから
- B行は物理的に 1 つの順序でしか格納できないから
- Cクラスタ化インデックスは主キーにしか作れないから
- DSQL 標準が、1 つのテーブルに 2 つ以上のインデックスを持つことを禁止しているから
5.ふつう
customers テーブルの異なる都市の数を返すクエリはどれですか?
- ASELECT COUNT(city) FROM customers GROUP BY city
- BSELECT COUNT(DISTINCT city) FROM customers
- CSELECT DISTINCT COUNT(city) FROM customers
- DSELECT SUM(DISTINCT city) FROM customers
6.ふつう
SELECT name, CASE WHEN grade >= 5.5 THEN 'pass' ELSE 'fail' END FROM results は何を返しますか?
- A成績に応じて 'pass' か 'fail' のラベルが付いた各名前
- B合格した学生だけ
- C合格した学生と不合格の学生の人数
- DSELECT では CASE が使えないためエラー
7.むずかしい
二相ロック(2PL)が保証するのは次のうちどれですか?
- A競合直列化可能なスケジュール
- Bロックが不要であること
- Cデッドロックが決して発生しないこと
- Dトランザクションが決して待たないこと
8.むずかしい
多版型同時実行制御(MVCC)では、読み取り側はどのようにして書き込み側をブロックせずに済みますか?
- A読み取り側は常にすべての書き込み側のコミットを待つ
- B読み取り側がいる間は書き込みが許されない
- C読み取り側はコミット済みの行バージョンの一貫したスナップショットを見て、書き込み側は新しいバージョンを作る
- D読み取り側は未コミットのデータを直接読む
解答
- 1. A · price が 10 から 20 まで(10 と 20 を含む)の行
- 2. B · 自動採番の id のように、業務上の意味を持たない人工的な識別子
- 3. A · 値が条件を満たさない行を拒否する
- 4. B · 行は物理的に 1 つの順序でしか格納できないから
- 5. B · SELECT COUNT(DISTINCT city) FROM customers
- 6. A · 成績に応じて 'pass' か 'fail' のラベルが付いた各名前
- 7. A · 競合直列化可能なスケジュール
- 8. C · 読み取り側はコミット済みの行バージョンの一貫したスナップショットを見て、書き込み側は新しいバージョンを作る
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。