基本情報 平成22年度 春期 問31:テクノロジ系に関する問題
“商品 表に対してデータの更新処理が正しく実行できる UPDATE 文はどれか。
- adL 上
- bUPDATE 商品
- cH 寺 へ
- dUPDATE 商品 SET 商品名 = '"D' MHERE 商品番号 = 'See3'正答
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは d です。
UPDATE文は「表のデータを書き換える」SQL命令。基本の形:
```
UPDATE 表名 SET 列名 = 新しい値 WHERE 条件
```
選択肢dは `UPDATE 商品 SET 商品名 = 'D' WHERE 商品番号 = 'S003'` のような形式で、ちゃんと「どの表の・どの列を・何に変えるか・どの行を」が揃っています。
👉 覚え方:UPDATE → SET → WHERE の3点セット。WHEREを忘れると全行が書き換わってしまう(最重要トラブル!)
他の選択肢は文法が壊れていたり、肝心な情報が抜けているので不正解。
なぜこれが正解か
正解は d。SQL UPDATE文の正しい構文は `UPDATE 表名 SET 列名1=値1, 列名2=値2, … WHERE 条件式` であり、選択肢dは商品表に対し`商品名`を更新し、`商品番号='S003'`の行を対象とするWHERE句を持つ完全な形式。
各選択肢の解説
- a、c:文法的に壊れている(OCR乱れも含む)。
- b:UPDATE 商品 のみで SET句もWHERE句もないため不完全。
- d:正解。
覚え方・ひっかけ注意
UPDATE文の3点セット:UPDATE 表名(どの表)→SET 列=値(何を)→WHERE 条件(どの行)。WHERE句を忘れると全行が書き換わる最大のトラブル。実務ではBEGIN TRANSACTION → UPDATE → 確認 → COMMIT/ROLLBACK のパターンで保護する。文字列リテラルはシングルクォート'D'、テーブル名・列名は通常はクォートなし(予約語・特殊文字を含む場合は`バッククォート`または"ダブルクォート"でエスケープ)。
理論的背景
UPDATE文の論理的処理は (1) 対象行特定(WHERE句評価)、(2) 行ロック取得、(3) 更新前イメージのUNDOログ書込み、(4) 値書換え、(5) 更新後イメージのREDOログ書込み、(6) インデックス更新、(7) トリガ起動(BEFORE UPDATE→AFTER UPDATE)、(8) 制約検証(CHECK、外部キー、UNIQUE)、(9) COMMIT/ROLLBACK判定の順。WAL(Write-Ahead Logging)原則で、データ書込み前にログを永続化する。MVCC(Multi-Version Concurrency Control、PostgreSQL/MySQL InnoDB/Oracle)はUPDATEで旧版を残しSELECTの読込整合性を保つ。
実務での使われ方
大規模UPDATE文の運用パターン:(1) バッチサイズ分割(LIMIT句でN件ずつUPDATE、ロング・ロック回避)、(2) インデックス活用(WHERE句条件にインデックスがないと全表スキャン)、(3) JOIN UPDATE(UPDATE FROM、UPDATE JOIN:他表参照しながら更新)、(4) UPSERT(INSERT ON DUPLICATE KEY UPDATE、MERGE文)、(5) CTE-based UPDATE(WITH RECURSIVE)。バルクUPDATEではトランザクションログ膨張対策、レプリケーション遅延対策(行ベース vs 文ベースレプリケーション)が論点。Vitess、CockroachDB、TiDBなど分散SQLではDistributed UPDATEの整合性保証(Raft/Paxos合意)が技術的核心。
試験での位置づけ
FE科目AでSQL基本構文の正誤判定が頻出。応用情報・データベーススペシャリストではUPDATE文の最適化、ロック粒度(行ロック vs 表ロック)、デッドロック検出、トランザクション分離レベル(READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)が深く問われる。情報処理安全確保支援士ではSQLインジェクション対策(パラメータ化クエリ、プリペアドステートメント)が必出。
選択肢の発展補足
SQL DML文比較:INSERT(行追加)/UPDATE(行更新)/DELETE(行削除)/MERGE(条件によりINSERT/UPDATE/DELETE使い分け、SQL:2003)/TRUNCATE(全行削除、DDL扱い、ロールバック不可)。SQLインジェクション対策:(1) プリペアドステートメント(バインド変数)、(2) エスケープ(言語ライブラリ任せが原則)、(3) 入力検証(ホワイトリスト)、(4) 最小権限原則(DBアカウントに不要な権限を持たせない)。ORM(O/R Mapper、Hibernate/Entity Framework/SQLAlchemy/Prisma/TypeORM)は自動でパラメータ化するため安全だがN+1問題に注意。Functional Database(Rama、Apache Iceberg)、Vector Database(pgvector、Pinecone、Weaviate)等のNoSQL/新興DBもSQL互換性を意識する流れ。FE午後ではSQL文の最適化、実行計画読解、性能ボトルネック分析の問題が定番。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成22年度 春期 問31/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。