1.やさしい
クエリの結果を並べ替えるキーワードはどれですか?
- AARRANGE
- BORDER BY
- CGROUP BY
- DSORT
2.やさしい
PostgreSQL と MySQL で、結果の最初の 10 行だけを返す句はどれですか?
- ATOP ROWS 10
- BLIMIT 10
- CMAX 10
- DFIRST 10 ONLY
3.やさしい
代理キー(サロゲートキー)とは何ですか?
- A別のテーブルを参照するキー
- Bビューでだけ使われるキー
- C自動採番の id のように、業務上の意味を持たない人工的な識別子
- Dメールアドレスのような実世界のデータから作ったキー
4.ふつう
SELECT name, CASE WHEN grade >= 5.5 THEN 'pass' ELSE 'fail' END FROM results は何を返しますか?
- A成績に応じて 'pass' か 'fail' のラベルが付いた各名前
- B合格した学生だけ
- CSELECT では CASE が使えないためエラー
- D合格した学生と不合格の学生の人数
5.ふつう
SELECT price * 2 AS double_price FROM t WHERE double_price > 10 が多くのデータベースで失敗するのはなぜですか?
- AWHERE はテキスト列しか比較できないから
- BWHERE は SELECT リストより先に評価されるので、別名がまだ存在しないから
- CSELECT リストでは算術演算が許されないから
- D別名にアンダースコアを含めてはいけないから
6.ふつう
関係代数で、選択演算子(σ)はどの SQL の句に対応しますか?
- AWHERE
- BGROUP BY
- CSELECT リスト
- DORDER BY
7.むずかしい
クエリ FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' が、注文のない顧客を思いがけず落としてしまいます。なぜですか?
- ALEFT JOIN は一致しない行を決して残さないから
- B結合には ON ではなく USING を使うべきだから
- Co に対する WHERE 条件が NULL で埋められた行を除外し、内部結合と同じになるから
- Dstatus が予約語だから
8.むずかしい
2 つのトランザクションがどちらも stock = 10 を読み、それぞれ 1 を引いて結果を書き込んだため、8 ではなく 9 になりました。これはどの異常ですか?
- A更新の喪失(ロストアップデート)
- B削除時異常
- Cダーティリード
- Dファントムリード
解答
- 1. B · ORDER BY
- 2. B · LIMIT 10
- 3. C · 自動採番の id のように、業務上の意味を持たない人工的な識別子
- 4. A · 成績に応じて 'pass' か 'fail' のラベルが付いた各名前
- 5. B · WHERE は SELECT リストより先に評価されるので、別名がまだ存在しないから
- 6. A · WHERE
- 7. C · o に対する WHERE 条件が NULL で埋められた行を除外し、内部結合と同じになるから
- 8. A · 更新の喪失(ロストアップデート)
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。