1.やさしい
WHERE price BETWEEN 10 AND 20 はどの行を選びますか?
- Aprice が 10 または 20 に等しい行だけ
- Bprice が 10 より大きく 20 より小さい行(10 と 20 は除く)
- Cprice が 10 から 20 の範囲外の行
- Dprice が 10 から 20 まで(10 と 20 を含む)の行
2.やさしい
CHECK 制約は何をしますか?
- Aユーザーのパスワードを検証する
- Bクエリを実行する前に、テーブルが存在するかどうかを確認する
- Cテーブルの行数を数える
- D値が条件を満たさない行を拒否する
3.やさしい
候補キーとは何ですか?
- A外部キーになるのを待っている列
- B2 つのテーブルの行を結びつけるために共有される列の組
- C各行を一意に識別する最小の列の組
- DNULL 値を含むあらゆる列
4.ふつう
テーブルにクラスタ化インデックスが 1 つしか持てないのはなぜですか?
- Aクラスタ化インデックスはメモリを使いすぎるから
- B行は物理的に 1 つの順序でしか格納できないから
- Cクラスタ化インデックスは主キーにしか作れないから
- DSQL 標準が、1 つのテーブルに 2 つ以上のインデックスを持つことを禁止しているから
5.ふつう
並行するトランザクションが互いの未完了の変更を見ないことを意味する ACID 特性はどれですか?
- A独立性(Isolation)
- B可用性(Availability)
- C原子性(Atomicity)
- D永続性(Durability)
6.ふつう
列にインデックスを作成するのはなぜですか?
- Aディスク容量を節約するため
- Bその列に対する検索や結合を高速化するため
- CNULL 値を防ぐため
- Dそれらの列に対する挿入と更新を高速化するため
7.むずかしい
SELECT dept, name, COUNT(*) FROM emp GROUP BY dept が標準 SQL で無効なのはなぜですか?
- ACOUNT(*) は GROUP BY と一緒に使えないから
- Bdept は集約関数の中に入れなければならないから
- CGROUP BY にはテーブルのすべての列を並べなければならないから
- Dname はグループ化も集約もされておらず、グループごとに 1 つの値を持たないから
8.むずかしい
EXPLAIN(PostgreSQL では EXPLAIN ANALYZE)はクエリについて何を示しますか?
- A関係代数の記法だけによるクエリの書き換え
- Bクエリを実行したユーザーの一覧
- Cスキャンや結合方法など、オプティマイザが選んだ実行計画
- Dクエリ中の各 SQL キーワードの意味
解答
- 1. D · price が 10 から 20 まで(10 と 20 を含む)の行
- 2. D · 値が条件を満たさない行を拒否する
- 3. C · 各行を一意に識別する最小の列の組
- 4. B · 行は物理的に 1 つの順序でしか格納できないから
- 5. A · 独立性(Isolation)
- 6. B · その列に対する検索や結合を高速化するため
- 7. D · name はグループ化も集約もされておらず、グループごとに 1 つの値を持たないから
- 8. C · スキャンや結合方法など、オプティマイザが選んだ実行計画
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。