- Q1
ウィンドウ関数の基本構文として正しいものはどれですか?
ANSWER関数() OVER (PARTITION BY ... ORDER BY ...)クリックして解説を表示EXPLANATIONウィンドウ関数は
関数() OVER (PARTITION BY ... ORDER BY ...)の形式で使用します。OVER句がウィンドウ関数の特徴です。 - Q2
ROW_NUMBER()関数の役割として正しいものはどれですか?
ANSWERパーティション内の各行に一意の連番を割り当てるクリックして解説を表示EXPLANATIONROW_NUMBER()は、パーティション内の各行に一意の連続した番号を割り当てます。同じ値でも異なる番号が割り当てられます。
- Q3
次のSQLの結果として、同じdepartment内での給与順位はどのようになりますか?
SELECT name, department, salary, ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rank FROM employees;ANSWER部署ごとに給与の高い順で1から連番が振られるクリックして解説を表示EXPLANATIONPARTITION BY departmentにより部署ごとにグループ化され、ORDER BY salary DESCにより給与の高い順に1から連番が振られます。
- Q4
RANK()とROW_NUMBER()の違いとして正しいものはどれですか?
ANSWERRANK()は同値に同順位を付けてスキップ、ROW_NUMBER()は常に一意の連番クリックして解説を表示EXPLANATIONRANK()は同じ値に同じ順位を付け、次の順位をスキップします。ROW_NUMBER()は常に一意の連番を付けます。
- Q5
DENSE_RANK()とRANK()の違いとして正しいものはどれですか?
ANSWERDENSE_RANK()は順位をスキップしない、RANK()はスキップするクリックして解説を表示EXPLANATIONDENSE_RANK()は同じ値に同じ順位を付けますが、次の順位をスキップしません。RANK()は同値後に順位をスキップします。
- Q6
給与が1位、1位、3位となる関数と、1位、1位、2位となる関数の組み合わせはどれですか?
ANSWERRANK()とDENSE_RANK()クリックして解説を表示EXPLANATION同じ値が2つあった場合、RANK()は1,1,3(スキップあり)、DENSE_RANK()は1,1,2(スキップなし)となります。
- Q7
LAG()関数の役割として正しいものはどれですか?
ANSWER前の行の値にアクセスするクリックして解説を表示EXPLANATIONLAG()は、現在の行より前の行の値にアクセスします。時系列データの前回値との比較などに使用します。
- Q8
LEAD()関数の役割として正しいものはどれですか?
ANSWER次の行の値にアクセスするクリックして解説を表示EXPLANATIONLEAD()は、現在の行より後の行の値にアクセスします。次回の値との比較などに使用します。
- Q9
次のSQLで、前月の売上と比較するために使われている関数は何ですか?
SELECT month, sales, sales - LAG(sales, 1) OVER (ORDER BY month) AS diff_from_prev FROM monthly_sales;ANSWERLAG()クリックして解説を表示EXPLANATIONLAG(sales, 1)は1行前(前月)のsalesの値を返します。これを現在のsalesから引いて前月との差を計算しています。
- Q10
FIRST_VALUE()関数の役割として正しいものはどれですか?
ANSWER最初の行の値を返すクリックして解説を表示EXPLANATIONFIRST_VALUE()は、ウィンドウフレーム内の最初の行の値を返します。
- Q11
LAST_VALUE()関数の役割として正しいものはどれですか?
ANSWER最後の行の値を返すクリックして解説を表示EXPLANATIONLAST_VALUE()は、ウィンドウフレーム内の最後の行の値を返します。ただし、デフォルトのフレームでは期待通りに動作しない場合があります。
- Q12
NTH_VALUE()関数の役割として正しいものはどれですか?
ANSWER指定したn番目の行の値を返すクリックして解説を表示EXPLANATIONNTH_VALUE(column, n)は、ウィンドウフレーム内のn番目の行の値を返します。
- Q13
NTILE()関数の役割として正しいものはどれですか?
ANSWERデータをn個の均等なグループに分割するクリックして解説を表示EXPLANATIONNTILE(n)は、データをn個の均等なグループ(バケット)に分割し、各行がどのグループに属するかを1からnの番号で返します。
- Q14
次のSQLの結果として、従業員は何グループに分けられますか?
SELECT name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile FROM employees;ANSWER4グループクリックして解説を表示EXPLANATIONNTILE(4)により、給与の高い順に4つのグループ(四分位)に分けられます。各グループには1から4の番号が割り当てられます。
- Q15
ウィンドウフレームの ROWS BETWEEN の役割として正しいものはどれですか?
ANSWER計算に使用する行の範囲を指定するクリックして解説を表示EXPLANATIONROWS BETWEENは、ウィンドウ関数が計算に使用する行の範囲(フレーム)を物理的な行数で指定します。
- Q16
次のSQLの意味として正しいものはどれですか?
SELECT date, sales, AVG(sales) OVER ( ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW ) AS moving_avg FROM daily_sales;ANSWER当日と前2日間の3日間移動平均を計算クリックして解説を表示EXPLANATIONROWS BETWEEN 2 PRECEDING AND CURRENT ROWは、現在の行と2行前までの3行の平均を計算します。これは3日間の移動平均です。
- Q17
UNBOUNDED PRECEDINGの意味として正しいものはどれですか?
ANSWERパーティションの最初の行クリックして解説を表示EXPLANATIONUNBOUNDED PRECEDINGは、パーティションの最初の行を意味します。累計を計算する際などに使用します。
- Q18
次のSQLで計算されるrunning_totalは何を表しますか?
SELECT date, sales, SUM(sales) OVER ( ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS running_total FROM daily_sales;ANSWER最初から当日までの累計売上クリックして解説を表示EXPLANATIONUNBOUNDED PRECEDING(最初の行)からCURRENT ROW(現在の行)までのSUMを計算するため、累計売上になります。
- Q19
ROWS と RANGE の違いとして正しいものはどれですか?
ANSWERROWSは物理行数、RANGEは値の範囲でフレームを指定クリックして解説を表示EXPLANATIONROWSは物理的な行数でフレームを指定し、RANGEは値の範囲でフレームを指定します。同じ値の行の扱いが異なります。
- Q20
CTE(Common Table Expression、共通テーブル式)を定義するキーワードはどれですか?
ANSWERWITHクリックして解説を表示EXPLANATIONCTEはWITH句で定義します。
WITH cte_name AS (SELECT ...)の形式で、クエリ内で再利用可能な一時的な結果セットを作成します。
- Q21
CTEを使用するメリットとして正しいものはどれですか?
ANSWERクエリの可読性向上、再利用、再帰クエリの記述が可能クリックして解説を表示EXPLANATIONCTEを使用すると、複雑なクエリを読みやすく整理でき、同じサブクエリを複数回参照でき、再帰クエリも記述できます。
- Q22
次のSQLのCTEは何を表しますか?
WITH high_value_customers AS ( SELECT user_id, SUM(total) AS total_spent FROM orders GROUP BY user_id HAVING SUM(total) > 100000 ) SELECT u.name, h.total_spent FROM users u JOIN high_value_customers h ON u.id = h.user_id;ANSWER注文合計が10万円を超える顧客とその合計額クリックして解説を表示EXPLANATIONhigh_value_customersというCTEは、注文合計が10万円を超える顧客とその合計額を定義しています。これをメインクエリで参照しています。
- Q23
再帰CTE(Recursive CTE)の用途として正しいものはどれですか?
ANSWER階層データ(組織図、カテゴリツリーなど)の処理クリックして解説を表示EXPLANATION再帰CTEは、組織の階層構造、カテゴリのツリー、グラフの探索など、自己参照する階層データを扱う際に使用します。
- Q24
再帰CTEの基本構造として正しいものはどれですか?
ANSWERアンカーメンバー + UNION ALL + 再帰メンバークリックして解説を表示EXPLANATION再帰CTEは、アンカーメンバー(初期クエリ)、UNION ALL、再帰メンバー(自己参照クエリ)で構成されます。
- Q25
次のSQLは何を行いますか?
WITH RECURSIVE subordinates AS ( SELECT id, name, manager_id, 1 AS level FROM employees WHERE manager_id IS NULL UNION ALL SELECT e.id, e.name, e.manager_id, s.level + 1 FROM employees e JOIN subordinates s ON e.manager_id = s.id ) SELECT * FROM subordinates;ANSWER組織の階層構造を再帰的に取得クリックして解説を表示EXPLANATIONこの再帰CTEは、manager_idがNULLの従業員(トップ)から始めて、階層的にすべての部下を取得し、各従業員の階層レベルも計算します。
- Q26
トランザクションとは何ですか?
ANSWER複数のSQL文を1つの論理的な作業単位としてまとめる仕組みクリックして解説を表示EXPLANATIONトランザクションは、複数のSQL文を1つの論理的な作業単位としてまとめ、すべて成功するか、すべて失敗するか(原子性)を保証する仕組みです。
- Q27
ACID特性のAは何を表しますか?
ANSWERAtomicity(原子性)クリックして解説を表示EXPLANATIONAtomicity(原子性)は、トランザクション内のすべての操作が完了するか、まったく実行されないかのどちらかであることを保証します。
- Q28
ACID特性のCは何を表しますか?
ANSWERConsistency(一貫性)クリックして解説を表示EXPLANATIONConsistency(一貫性)は、トランザクションの前後でデータベースが整合性のある状態を維持することを保証します。
- Q29
ACID特性のIは何を表しますか?
ANSWERIsolation(分離性)クリックして解説を表示EXPLANATIONIsolation(分離性)は、同時実行されるトランザクションが互いに干渉しないことを保証します。
- Q30
ACID特性のDは何を表しますか?
ANSWERDurability(永続性)クリックして解説を表示EXPLANATIONDurability(永続性)は、コミットされたトランザクションの結果がシステム障害後も保持されることを保証します。
- Q31
トランザクションを開始するSQLコマンドはどれですか?
ANSWERBEGIN または START TRANSACTIONクリックして解説を表示EXPLANATIONBEGIN、BEGIN TRANSACTION、START TRANSACTIONなどでトランザクションを開始します。データベースにより構文が異なります。
- Q32
トランザクションを確定するSQLコマンドはどれですか?
ANSWERCOMMITクリックして解説を表示EXPLANATIONCOMMITは、トランザクション内のすべての変更を確定し、永続化します。
- Q33
トランザクションを取り消すSQLコマンドはどれですか?
ANSWERROLLBACKクリックして解説を表示EXPLANATIONROLLBACKは、トランザクション内のすべての変更を取り消し、開始前の状態に戻します。
- Q34
SAVEPOINTの役割として正しいものはどれですか?
ANSWERトランザクション内に部分的なロールバック点を設定するクリックして解説を表示EXPLANATIONSAVEPOINTは、トランザクション内に中間点を設定し、その点まで部分的にROLLBACKできるようにします。
- Q35
分離レベル(Isolation Level)の種類として正しくないものはどれですか?
ANSWERREAD ONLYクリックして解説を表示EXPLANATION標準の分離レベルはREAD UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLEの4つです。READ ONLYは分離レベルではありません。
- Q36
READ UNCOMMITTED分離レベルで発生する可能性がある問題はどれですか?
ANSWERダーティリード(未コミットデータの読み取り)クリックして解説を表示EXPLANATIONREAD UNCOMMITTEDでは、他のトランザクションがまだコミットしていないデータを読み取れるため、ダーティリードが発生する可能性があります。
- Q37
ダーティリード(Dirty Read)とは何ですか?
ANSWERまだコミットされていないデータを読み取ってしまう現象クリックして解説を表示EXPLANATIONダーティリードは、他のトランザクションがまだコミットしていない変更を読み取ってしまうことです。後でロールバックされる可能性のあるデータを読み取ってしまいます。
- Q38
ノンリピータブルリード(Non-Repeatable Read)とは何ですか?
ANSWER同じデータを再読み取りすると異なる値が返される現象クリックして解説を表示EXPLANATIONノンリピータブルリードは、同じトランザクション内で同じデータを2回読み取ったとき、他のトランザクションの更新により異なる値が返される現象です。
- Q39
ファントムリード(Phantom Read)とは何ですか?
ANSWER同じ条件で検索すると行数が変わる現象クリックして解説を表示EXPLANATIONファントムリードは、同じトランザクション内で同じ検索条件でクエリを実行したとき、他のトランザクションの挿入・削除により行数が変わる現象です。
- Q40
SERIALIZABLE分離レベルの特徴として正しいものはどれですか?
ANSWER最も厳格な分離レベルで、すべての異常現象を防ぐクリックして解説を表示EXPLANATIONSERIALIZABLEは最も厳格な分離レベルで、トランザクションを順次実行したかのように動作し、すべての異常現象を防ぎますが、パフォーマンスは低下します。
- Q41
楽観的ロック(Optimistic Locking)の特徴として正しいものはどれですか?
ANSWER競合が少ないと仮定し、更新時に競合を検出するクリックして解説を表示EXPLANATION楽観的ロックは、競合が少ないと仮定し、データ読み取り時にロックせず、更新時にバージョン番号などで競合を検出します。
- Q42
悲観的ロック(Pessimistic Locking)の特徴として正しいものはどれですか?
ANSWERデータ読み取り時からロックを取得して競合を防ぐクリックして解説を表示EXPLANATION悲観的ロックは、競合が発生すると仮定し、データ読み取り時からロックを取得して他のトランザクションからの変更を防ぎます。
- Q43
SELECT ... FOR UPDATE の役割として正しいものはどれですか?
ANSWER選択した行に排他ロックを取得するクリックして解説を表示EXPLANATIONSELECT ... FOR UPDATEは、選択した行に排他ロックを取得し、トランザクション終了まで他のトランザクションがその行を更新できないようにします。
- Q44
デッドロック(Deadlock)とは何ですか?
ANSWER2つ以上のトランザクションが互いのロック解放を待つ状態クリックして解説を表示EXPLANATIONデッドロックは、2つ以上のトランザクションが互いに相手が保持するロックの解放を待っている状態で、永久に進行できなくなる状況です。
- Q45
デッドロックを防ぐ方法として正しいものはどれですか?
ANSWERロックの取得順序を統一するクリックして解説を表示EXPLANATIONデッドロックを防ぐには、ロックの取得順序を統一する、トランザクションを短くする、適切な分離レベルを選択するなどの方法があります。
- Q46
共有ロック(Shared Lock)と排他ロック(Exclusive Lock)の違いとして正しいものはどれですか?
ANSWER共有ロックは複数取得可能で読み取り用、排他ロックは1つのみで更新用クリックして解説を表示EXPLANATION共有ロックは複数のトランザクションが同時に取得でき、読み取りを許可します。排他ロックは1つのトランザクションのみが取得でき、他の読み書きをブロックします。
- Q47
第一正規形(1NF)の条件として正しいものはどれですか?
ANSWERすべての列が原子的(単一の値)であることクリックして解説を表示EXPLANATION第一正規形は、すべての列が原子的(これ以上分割できない単一の値)であること、繰り返しグループがないことが条件です。
- Q48
次のテーブル設計が第一正規形に違反している理由は何ですか?
| id | name | phones | | 1 | 田中 | 090-xxx, 080-yyy |ANSWERphones列が複数の値を含んでいるためクリックして解説を表示EXPLANATIONphones列に複数の電話番号がカンマ区切りで格納されており、原子性(単一の値)に違反しています。
- Q49
第二正規形(2NF)の条件として正しいものはどれですか?
ANSWER1NFを満たし、部分関数従属がないことクリックして解説を表示EXPLANATION第二正規形は、1NFを満たし、かつ非キー属性が主キー全体に完全関数従属していること(部分関数従属がないこと)が条件です。
- Q50
部分関数従属とは何ですか?
ANSWER非キー属性が主キーの一部のみに依存している状態クリックして解説を表示EXPLANATION部分関数従属は、複合主キーの一部の列だけで非キー属性が決定できる状態です。例:(注文ID, 商品ID)が主キーで、注文IDだけで顧客名が決まる場合。
- Q51
第三正規形(3NF)の条件として正しいものはどれですか?
ANSWER2NFを満たし、推移的関数従属がないことクリックして解説を表示EXPLANATION第三正規形は、2NFを満たし、かつ推移的関数従属がないこと(非キー属性が他の非キー属性に依存しないこと)が条件です。
- Q52
推移的関数従属とは何ですか?
ANSWER非キー属性が別の非キー属性を介して主キーに依存する状態クリックして解説を表示EXPLANATION推移的関数従属は、A→B、B→Cのとき、A→Cが成り立つ状態です。例:社員ID→部署ID→部署名のように、非キー属性を介して他の属性が決まる場合。
- Q53
正規化のメリットとして正しいものはどれですか?
ANSWERデータの冗長性が減り、更新異常を防ぐクリックして解説を表示EXPLANATION正規化により、データの冗長性が減り、更新異常(挿入、更新、削除異常)を防ぎ、データの整合性が向上します。
- Q54
非正規化(Denormalization)を行う目的として正しいものはどれですか?
ANSWERクエリパフォーマンスを向上させるクリックして解説を表示EXPLANATION非正規化は、JOINの削減やクエリパフォーマンスの向上のために、意図的に冗長性を持たせることです。読み取り性能を優先する場合に行います。
- Q55
実行計画(Execution Plan)とは何ですか?
ANSWERSQLクエリの実行方法を示す詳細な計画クリックして解説を表示EXPLANATION実行計画は、データベースがSQLクエリをどのように実行するかを示す詳細な計画です。テーブルスキャン、インデックス使用、結合方法などが含まれます。
- Q56
実行計画を確認するSQLコマンドとして一般的なものはどれですか?
ANSWEREXPLAINクリックして解説を表示EXPLANATIONEXPLAIN(またはEXPLAIN ANALYZE)を使用して、SQLクエリの実行計画を確認できます。データベースにより構文が異なります。
- Q57
フルテーブルスキャン(Full Table Scan)が発生する状況として正しいものはどれですか?
ANSWERインデックスがない列で検索する場合クリックして解説を表示EXPLANATIONインデックスがない列での検索、LIKE '%...'でのワイルドカード検索、小さなテーブル、適切なインデックスがない場合にフルテーブルスキャンが発生します。
- Q58
インデックスが使用されない可能性が高いケースはどれですか?
ANSWER列に関数を適用した条件で検索クリックして解説を表示EXPLANATION列に関数を適用する(WHERE YEAR(date) = 2023)、暗黙の型変換、先頭にワイルドカードがあるLIKE、NOT条件などではインデックスが使用されにくいです。
- Q59
カバリングインデックス(Covering Index)とは何ですか?
ANSWERクエリに必要な列がすべて含まれ、テーブルアクセスが不要なインデックスクリックして解説を表示EXPLANATIONカバリングインデックスは、クエリが必要とするすべての列がインデックスに含まれているため、テーブルデータにアクセスせずにインデックスだけで結果を返せるインデックスです。
- Q60
インデックスのカーディナリティ(Cardinality)とは何ですか?
ANSWER列の値の一意性の度合いクリックして解説を表示EXPLANATIONカーディナリティは、列の値の一意性の度合いを示します。高いカーディナリティ(多くの異なる値)の列ほど、インデックスが効果的です。
- Q61
Bツリーインデックスの特徴として正しいものはどれですか?
ANSWER等価検索、範囲検索、ソートに効率的クリックして解説を表示EXPLANATIONBツリーは、等価検索、範囲検索、ソートに効率的なバランス木構造です。多くのRDBMSでデフォルトのインデックス型です。
- Q62
ハッシュインデックスの特徴として正しいものはどれですか?
ANSWER等価検索に非常に高速だが、範囲検索には使用不可クリックして解説を表示EXPLANATIONハッシュインデックスは、等価検索(=)には非常に高速ですが、範囲検索やソートには使用できません。
- Q63
GINインデックス(PostgreSQL)の用途として正しいものはどれですか?
ANSWER配列、JSON、全文検索など複数値を含む列クリックして解説を表示EXPLANATIONGIN(Generalized Inverted Index)は、配列、JSON、全文検索など、複数の値を含む列に対して効率的なインデックスです。
- Q64
クエリのパフォーマンスを向上させる方法として正しいものはどれですか?
ANSWER適切なインデックス作成と必要な列のみを選択するクリックして解説を表示EXPLANATION適切なインデックスの作成、SELECT *の代わりに必要な列のみ選択、不要なサブクエリの排除、JOINの最適化などでパフォーマンスを向上できます。
- Q65
N+1問題を解決する方法として正しいものはどれですか?
ANSWERJOINを使用して1回のクエリで関連データを取得するクリックして解説を表示EXPLANATIONN+1問題は、JOINを使用して1回のクエリで関連データを取得するか、IN句でまとめて取得することで解決できます。
- Q66
パーティショニングの目的として正しいものはどれですか?
ANSWER大きなテーブルを分割してパフォーマンスと管理を向上させるクリックして解説を表示EXPLANATIONパーティショニングは、大きなテーブルを複数の小さな部分に分割し、クエリパフォーマンスの向上、管理の容易化、データのアーカイブを実現します。
- Q67
レンジパーティショニングの特徴として正しいものはどれですか?
ANSWER値の範囲に基づいて分割クリックして解説を表示EXPLANATIONレンジパーティショニングは、日付や数値などの連続した値の範囲に基づいてデータを分割します。時系列データに適しています。
- Q68
リストパーティショニングの特徴として正しいものはどれですか?
ANSWER特定の値のリストに基づいて分割クリックして解説を表示EXPLANATIONリストパーティショニングは、特定の値のリストに基づいてデータを分割します。国コードや地域などの離散的な値に適しています。
- Q69
ハッシュパーティショニングの特徴として正しいものはどれですか?
ANSWERハッシュ値に基づいてデータを均等に分割クリックして解説を表示EXPLANATIONハッシュパーティショニングは、キー列のハッシュ値に基づいてデータを均等に分割します。データの均等分散が必要な場合に適しています。
- Q70
EXPLAIN ANALYZEの特徴として正しいものはどれですか?
ANSWER実際にクエリを実行し、実測値を含む実行計画を表示クリックして解説を表示EXPLANATIONEXPLAIN ANALYZEは、実行計画を表示するだけでなく、実際にクエリを実行して実測値(実行時間、行数など)を表示します。
- Q71
ネステッドループ結合(Nested Loop Join)の特徴として正しいものはどれですか?
ANSWER外側の各行に対して内側テーブルを検索、インデックスがある場合に効率的クリックして解説を表示EXPLANATIONネステッドループ結合は、外側テーブルの各行に対して内側テーブルを検索します。小さなテーブルや内側にインデックスがある場合に効率的です。
- Q72
ハッシュ結合(Hash Join)の特徴として正しいものはどれですか?
ANSWERハッシュテーブルを作成して等価結合を行うクリックして解説を表示EXPLANATIONハッシュ結合は、小さい方のテーブルでハッシュテーブルを作成し、大きい方のテーブルをスキャンして結合します。等価結合に効率的です。
- Q73
マージ結合(Merge Join/Sort Merge Join)の特徴として正しいものはどれですか?
ANSWER両方のテーブルをソートして同時にスキャンするクリックして解説を表示EXPLANATIONマージ結合は、両方のテーブルを結合キーでソートし、同時にスキャンして結合します。大きなテーブルの等価結合に効率的です。
- Q74
クエリヒントとは何ですか?
ANSWERオプティマイザへの実行計画に関する指示クリックして解説を表示EXPLANATIONクエリヒントは、オプティマイザに特定の実行計画を選択させるための指示です。インデックスの使用、結合方式などを指定できます。
- Q75
統計情報(Statistics)の役割として正しいものはどれですか?
ANSWERオプティマイザが最適な実行計画を選択するための情報クリックして解説を表示EXPLANATION統計情報は、テーブルの行数、列の値の分布などの情報で、オプティマイザが最適な実行計画を選択するために使用します。
- Q76
統計情報を更新するSQLコマンドとして一般的なものはどれですか?
ANSWERANALYZE または UPDATE STATISTICSクリックして解説を表示EXPLANATIONANALYZE(PostgreSQL)やUPDATE STATISTICS(SQL Server)などで統計情報を更新できます。データベースにより構文が異なります。
- Q77
VACUUM(PostgreSQL)の役割として正しいものはどれですか?
ANSWER不要な領域を回収し、統計情報を更新するクリックして解説を表示EXPLANATIONVACUUMは、PostgreSQLで削除・更新されたタプルが使用していた領域を回収し、統計情報を更新します。
- Q78
トリガー(Trigger)とは何ですか?
ANSWER特定のイベント時に自動実行されるプロシージャクリックして解説を表示EXPLANATIONトリガーは、特定のイベント(INSERT、UPDATE、DELETE)が発生したときに自動的に実行されるプロシージャです。
- Q79
BEFORE TRIGGERとAFTER TRIGGERの違いとして正しいものはどれですか?
ANSWERBEFOREは変更前に実行、AFTERは変更後に実行クリックして解説を表示EXPLANATIONBEFORE TRIGGERはデータの変更前に実行され、データの検証や修正が可能です。AFTER TRIGGERはデータの変更後に実行されます。
- Q80
ストアドプロシージャ(Stored Procedure)のメリットとして正しいものはどれですか?
ANSWERサーバー側で実行され、ネットワーク往復を削減クリックして解説を表示EXPLANATIONストアドプロシージャは、複雑なロジックをサーバー側で実行でき、ネットワーク往復を減らし、コードの再利用性とセキュリティを向上させます。
- Q81
ストアドファンクション(Stored Function)とストアドプロシージャの違いとして正しいものはどれですか?
ANSWERファンクションは値を返しSELECT内で使用可、プロシージャはCALLで呼び出すクリックして解説を表示EXPLANATIONストアドファンクションは値を返し、SELECT文の中で使用できます。ストアドプロシージャはCALLで呼び出し、副作用(データ変更など)を持つことが多いです。
- Q82
JSON型データに対するクエリとして正しいものはどれですか(PostgreSQL)?
ANSWERSELECT data->>'key' FROM tableクリックして解説を表示EXPLANATIONPostgreSQLでは、
->でJSONオブジェクトを、->>でテキストとしてJSON値を抽出できます。 - Q83
配列型データに対するクエリとして正しいものはどれですか(PostgreSQL)?
ANSWERSELECT * FROM t WHERE 'value' = ANY(array_column)クリックして解説を表示EXPLANATIONPostgreSQLでは、
ANY(array)で配列内のいずれかの要素と比較できます。@>は配列の包含演算子です。 - Q84
データベースシャーディングとは何ですか?
ANSWERデータを複数サーバーに水平分割して分散させる技術クリックして解説を表示EXPLANATIONシャーディングは、データを複数のデータベースサーバーに水平分割して分散させる技術です。大規模システムのスケーラビリティを向上させます。
- Q85
レプリケーション(Replication)の目的として正しいものはどれですか?
ANSWER可用性向上、読み取り負荷分散、障害対策クリックして解説を表示EXPLANATIONレプリケーションは、データを複数のサーバーにコピーして、可用性の向上、読み取り負荷の分散、障害対策を実現します。
- Q86
マスター・スレーブレプリケーションの特徴として正しいものはどれですか?
ANSWERマスターが書き込み、スレーブが読み取りを処理クリックして解説を表示EXPLANATIONマスター・スレーブレプリケーションでは、マスターが書き込みを処理し、スレーブはマスターのデータをコピーして読み取りを処理します。
- Q87
ポイントインタイムリカバリ(PITR)とは何ですか?
ANSWER特定の時点のデータベース状態に復元する技術クリックして解説を表示EXPLANATIONPITRは、WAL(Write-Ahead Log)などを使用して、特定の時点のデータベース状態に復元する技術です。誤操作からの復旧などに使用します。
- Q88
WAL(Write-Ahead Logging)の役割として正しいものはどれですか?
ANSWER変更をログに先行記録し、障害時の復旧を可能にするクリックして解説を表示EXPLANATIONWALは、データを変更する前にログに記録することで、障害発生時のデータ復旧を可能にし、トランザクションの永続性を保証します。
- Q89
データベース接続プーリングの目的として正しいものはどれですか?
ANSWER接続の再利用で接続確立のオーバーヘッドを削減クリックして解説を表示EXPLANATION接続プーリングは、データベース接続を再利用することで、接続確立のオーバーヘッドを削減し、パフォーマンスを向上させます。
- Q90
クエリキャッシュの特徴として正しいものはどれですか?
ANSWER同一クエリの結果をキャッシュし、再実行を高速化クリックして解説を表示EXPLANATIONクエリキャッシュは、同一のSQLクエリの結果を保存し、再実行時にキャッシュから返すことで高速化します。データ更新時にキャッシュの無効化が必要です。
- Q91
プリペアドステートメントのメリットとして正しいものはどれですか?
ANSWERSQL解析を一度で済ませ、パラメータ変更で再実行可能、SQLインジェクション対策クリックして解説を表示EXPLANATIONプリペアドステートメントは、SQLの解析・最適化を一度だけ行い、パラメータのみ変えて再実行できます。SQLインジェクション対策にもなります。
- Q92
バルクインサート(Bulk Insert)のメリットとして正しいものはどれですか?
ANSWER複数レコードを一度に挿入してパフォーマンスを向上クリックして解説を表示EXPLANATIONバルクインサートは、複数のレコードを一度に挿入することで、個別INSERTより大幅にパフォーマンスが向上します。
- Q93
OLAP(Online Analytical Processing)とOLTP(Online Transaction Processing)の違いとして正しいものはどれですか?
ANSWEROLTPは更新中心の短いトランザクション、OLAPは読み取り中心の分析クエリクリックして解説を表示EXPLANATIONOLTPは大量の短いトランザクション処理(更新中心)、OLAPは複雑な分析クエリ(読み取り中心)に最適化されています。
- Q94
カラムナーストレージ(Columnar Storage)のメリットとして正しいものはどれですか?
ANSWER特定列のみの読み取りが高速で、圧縮率が高いクリックして解説を表示EXPLANATIONカラムナーストレージは、列ごとにデータを格納し、特定の列のみを読み取る分析クエリに効率的で、圧縮率も高くなります。
- Q95
PERCENT_RANK()ウィンドウ関数の役割として正しいものはどれですか?
ANSWER相対的な順位を0から1のパーセンタイルで返すクリックして解説を表示EXPLANATIONPERCENT_RANK()は、パーティション内での相対的な順位を0から1の間のパーセンタイルとして返します。(rank - 1) / (total_rows - 1)で計算されます。
- Q96
CUME_DIST()ウィンドウ関数の役割として正しいものはどれですか?
ANSWER現在の行以下の行の割合(累積分布)を返すクリックして解説を表示EXPLANATIONCUME_DIST()は、累積分布を計算し、現在の行以下の行の割合を返します。パーティション内で自分以下の値が何%かを示します。
- Q97
MVCC(Multi-Version Concurrency Control)の特徴として正しいものはどれですか?
ANSWERデータの複数バージョンを保持し、読み取りと書き込みが互いをブロックしないクリックして解説を表示EXPLANATIONMVCCは、データの複数バージョンを保持することで、読み取りと書き込みが互いをブロックせず、高い並行性を実現する技術です。
- Q98
ボトムアップ型クエリ最適化とトップダウン型クエリ最適化の違いとして正しいものはどれですか?
ANSWERボトムアップは部分から全体を構築、トップダウンは全体から部分に分解クリックして解説を表示EXPLANATIONボトムアップ型は小さな部分計画から組み立て、トップダウン型は全体から部分に分解して最適化します。多くの最適化はコストベースで両方のアプローチを組み合わせます。
- Q99
BRIN(Block Range Index)インデックスの適用場面として正しいものはどれですか?
ANSWER物理的な順序でソートされた大きなテーブルクリックして解説を表示EXPLANATIONBRINインデックスは、データが物理的な順序で格納されている大きなテーブルに適しています。タイムスタンプ列など、挿入順と値の順序が相関する場合に効果的です。
- Q100
イベントソーシング(Event Sourcing)パターンとは何ですか?
ANSWER状態を変更するすべてのイベントを保存するパターンクリックして解説を表示EXPLANATIONイベントソーシングは、データの現在の状態ではなく、状態を変更するイベント(履歴)をすべて保存するパターンです。監査ログや状態の再構築に有効です。