[{"data":1,"prerenderedAt":110},["ShallowReactive",2],{"unit:shindanshi\u002Fjoho\u002Fkaihatsu\u002Fsql-acid":3},{"unit":4,"drills":90,"related":95,"topicUnits":100},{"id":5,"exam":6,"subject":7,"subjectName":8,"topic":9,"title":10,"tier":11,"hindo":12,"kijunbi":13,"readingMinutes":14,"sources":15,"factcheck":20,"blocks":24,"pairs":38,"drills":50,"links":87},"shindanshi\u002Fjoho\u002Fkaihatsu\u002Fsql-acid","shindanshi","joho","経営情報システム","データベースと開発","SQLとACID — 絞ってから集めるか、集めてから絞るか",1,"A","2026-05-01",5,[16],{"kind":17,"label":18,"url":19},"kokai","日本中小企業診断士協会連合会「令和8年度第1次試験案内」（SQL・ACID特性はデータベースの標準知識。URLは試験科目・制度の確認用）","https:\u002F\u002Fwww.jf-cmca.jp\u002Fattach\u002Ftest\u002Fr08\u002Fr08_1ji_annai.pdf",{"status":21,"date":22,"scope":23},"passed","2026-07-16","独立監査（opus・2026-07-16）: 最重要検証点＝C2（条件網羅）の定義を素材の「すべての条件の真偽の組み合わせ」から標準定義（個々の条件式の真偽をそれぞれ1回以上。全組み合わせは複数条件網羅=MCC）へ修正した当否——権威ソースで「素材が誤り・修正は正当」と確認（素材誤りの上方修正11例目）。Chen記法・正規化3段階・SQL4分類（TRUNCATE=DDL含む）・WHERE\u002FHAVING・ACID・分離レベル両端・スクラム3役と5行事・テスト4段階（UAT=発注側）・境界値分析の例（100と101）・FP法5対象（IFPUG=EI\u002FEO\u002FEQ\u002FILF\u002FEIFと一致）・COCOMO（Boehm1981・3モード）を全数照合し全点正確。ドリル20\u002F20正確・比喩の承認継承忠実・請負\u002F準委任の対応はIPA「モデル取引・契約書」の通説と一致・文字混入ゼロ（483字全て標準日本語漢字）・リンク10件全実在・hindo全一致。S\u002FA\u002FB級ゼロ・C級3点（C0⊂C1⊂C2の簡略化／TCL独立の4分類系／M:Nの層——いずれも試験深度で無害・修正不要と判定）。合格可能性約88%。PASS。",{"hook":25,"question":26,"intuition":27,"rigor":30,"pitfall":33,"jitsumu":36,"payoff":37},"\n        \u003Cp>「店舗ごとの売上合計を出して、\u003Cb>1,000万円を超えた店舗だけ\u003C\u002Fb>表示したい」——この「絞り込み」、合計を出す\u003Cb>前\u003C\u002Fb>の行への条件と、合計を出した\u003Cb>後\u003C\u002Fb>のグループへの条件は、SQLでは別の言葉です。ここを混ぜるのが定番の的。\u003C\u002Fp>\n        \u003Cp>そしてもう1つの主役が、銀行振込を支える\u003Cb>4つの約束（ACID）\u003C\u002Fb>です。\u003C\u002Fp>","WHEREとHAVINGはどう使い分け、ACID特性は何を保証しているのでしょうか。",{"heading":28,"html":29},"WHEREは集約前の行、HAVINGは集約後のグループに効きます","\n        \u003Cp>\u003Cb>WHERE\u003C\u002Fb>は\u003Cb>グループ分け（集約）の前\u003C\u002Fb>に、1行1行を絞り込む条件——「今月の売上データだけ」。\u003Cb>HAVING\u003C\u002Fb>は\u003Cb>GROUP BYで集約した後\u003C\u002Fb>に、グループ（集計結果）を絞り込む条件——「合計が1,000万円を超えた店舗だけ」。\u003Cb>絞ってから集めるのがWHERE、集めてから絞るのがHAVING\u003C\u002Fb>です。\u003C\u002Fp>\n        \u003Cp>\u003Cb>ACID\u003C\u002Fb>は銀行振込で考えます——A口座から引き落とし、B口座へ入金という2つの操作は、\u003Cb>原子性\u003C\u002Fb>（全部やるか全部やらないか——片方だけは許さない）・\u003Cb>一貫性\u003C\u002Fb>（残高の整合が崩れない）・\u003Cb>独立性\u003C\u002Fb>（他の処理の途中経過が混ざらない）・\u003Cb>耐久性\u003C\u002Fb>（完了した取引は障害でも消えない）の4つの約束で守られています。\u003C\u002Fp>\n        \u003Cdiv class=\"chorus\">\u003Cspan class=\"chorus-k\">SQLの合言葉\u003C\u002Fspan>\u003Cspan class=\"chorus-t\">\u003Cb>WHERE＝集約前の行・HAVING＝集約後のグループ\u003C\u002Fb>——ACID＝\u003Cb>原子性・一貫性・独立性・耐久性\u003C\u002Fb>\u003C\u002Fspan>\u003C\u002Fdiv>",{"heading":31,"html":32},"命令の4分類と、分離レベルの両端も持ち帰ります","\n        \u003Cp>SQLの命令は4分類——\u003Cb>DML\u003C\u002Fb>（データ操作：SELECT・INSERT・UPDATE・DELETE）・\u003Cb>DDL\u003C\u002Fb>（定義：CREATE・ALTER・DROP・\u003Cb>TRUNCATE\u003C\u002Fb>）・\u003Cb>DCL\u003C\u002Fb>（権限：GRANT・REVOKE）・\u003Cb>TCL\u003C\u002Fb>（トランザクション制御：COMMIT・ROLLBACK・SAVEPOINT）。表の結合（JOIN）にはINNER・LEFT\u002FRIGHT\u002FFULL OUTER・CROSSがあります。\u003C\u002Fp>\n        \u003Cp>独立性の強さは\u003Cb>トランザクション分離レベル\u003C\u002Fb>で調整します——最弱の\u003Cb>READ UNCOMMITTED\u003C\u002Fb>では他の処理の未確定データまで読めてしまい（ダーティリード）、反復不能読み取り・ファントムリードも起きうる。最強の\u003Cb>SERIALIZABLE\u003C\u002Fb>は3つの異常を全て防ぐ代わりに、同時実行の性能が落ちます。「強いほど安全、弱いほど速い」のトレードオフです。\u003C\u002Fp>",{"heading":34,"html":35},"WHERE\u002FHAVINGの取り違えと、TRUNCATEの分類が的です","\n        \u003Cp>定番の誤り肢は\u003Cb>「集約後の条件をWHEREで書く」\u003C\u002Fb>——集計結果（SUMやCOUNT）への条件は\u003Cb>HAVING\u003C\u002Fb>です。逆に「集約前の行の絞り込みにHAVINGを使う」も誤り。\u003Cb>集約の前か後か\u003C\u002Fb>だけで判定できます。\u003C\u002Fp>\n        \u003Cp>命令の分類では\u003Cb>TRUNCATE\u003C\u002Fb>が的——表の全行を消すので DELETE（DML）の仲間に見えますが、分類は\u003Cb>DDL\u003C\u002Fb>です。分離レベルは「\u003Cb>SERIALIZABLEはダーティリードが発生する\u003C\u002Fb>」型の入れ替え——最強レベルは\u003Cb>全て防ぐ\u003C\u002Fb>、が正です。\u003C\u002Fp>","\n        \u003Cp>診断士がSQLを書く場面は多くありませんが、\u003Cb>BIツールやPOS分析のフィルタ設計\u003C\u002Fb>でWHERE\u002FHAVINGの区別はそのまま生きます——「単価500円以上の商品だけ集計」（集約前＝WHERE相当）と「合計が100万円超のカテゴリだけ表示」（集約後＝HAVING相当）は別のフィルタです。ACIDは会計システムの信頼性を顧問先に説明する語彙——「仕訳が中途半端に残らないのは原子性のおかげ」です。\u003C\u002Fp>","\n        冒頭の問いに答えます。WHEREは集約前の行の絞り込み、HAVINGは集約後のグループの絞り込み——「絞ってから集めるか、集めてから絞るか」です。ACIDは原子性（全部か無か）・一貫性・独立性・耐久性の4つの約束で取引を守り、独立性の強さは分離レベル（最弱READ UNCOMMITTED〜最強SERIALIZABLE）で調整します。次は、システムをどう作り進めるか——開発モデルへ。",[39],{"label":40,"left":41,"right":45,"hinge":49},"WHEREとHAVING",{"badge":42,"name":43,"note":44},"WHERE","集約前——行を絞る","GROUP BYの前に1行ずつ判定（今月のデータだけ）",{"badge":46,"name":47,"note":48},"HAVING","集約後——グループを絞る","集計結果に条件（合計1,000万円超の店舗だけ）","集約の前か後か。集計値への条件をWHEREで書かせる肢が定番です。",[51,62,75,82],{"type":52,"id":53,"prompt":54,"options":55,"correct":60,"explanation":61},"quiz","joho-sql-q1","SQLに関する記述として、最も適切なものはどれか。",[56,57,58,59],"HAVING句は、GROUP BYで集約した後のグループに対して条件を指定する。","WHERE句は、集約後の合計値や件数に対して条件を指定する。","TRUNCATEはデータ操作言語（DML）に分類され、GRANTはデータ定義言語（DDL）に分類される。","ROLLBACKはデータ定義言語（DDL）の命令であり、表の構造を元に戻す。",0,"\u003Cstrong>正解：ア\u003C\u002Fstrong>　集めてから絞るのがHAVINGです。\u003Cbr>イ＝集計値への条件はHAVING（WHEREは集約前の行）、ウ＝TRUNCATEはDDL・GRANTはDCL、エ＝ROLLBACKはトランザクション制御（TCL）。分類と前後の入れ替えが手口です。",{"type":63,"id":64,"prompt":65,"ask":66,"choices":67,"correctKey":69,"explanation":74},"judge","joho-sql-j1","「トランザクションの原子性（Atomicity）とは、一連の処理が全て実行されるか、全く実行されないかのいずれかであることを保証する性質である」との記述がある。","この記述は適切か。",[68,71],{"key":69,"label":70},"ok","適切",{"key":72,"label":73},"ng","不適切","\u003Cb>適切\u003C\u002Fb>です。振込で「引き落としだけ成功して入金されない」を許さないのが原子性——全部か無か。一貫性・独立性・耐久性と合わせてACIDの4点セットで固定してください。",{"type":63,"id":76,"prompt":77,"ask":66,"choices":78,"correctKey":72,"explanation":81},"joho-sql-j2","「分離レベルSERIALIZABLEでは、ダーティリード・反復不能読み取り・ファントムリードのいずれも発生しうる」との記述がある。",[79,80],{"key":69,"label":70},{"key":72,"label":73},"\u003Cb>不適切\u003C\u002Fb>です。SERIALIZABLEは\u003Cb>最強\u003C\u002Fb>の分離レベルで、3つの読み取り異常を\u003Cb>全て防ぎます\u003C\u002Fb>（全て発生しうるのは最弱のREAD UNCOMMITTED）。「強いほど安全・弱いほど速い」の両端を入れ替える肢が定番です。",{"type":83,"id":84,"prompt":85,"answer":86},"blank","joho-sql-b1","SQLの4分類——SELECT・INSERT・UPDATE・DELETEはDML、CREATE・ALTER・DROP・TRUNCATEは〔?〕、GRANT・REVOKEはDCL、COMMIT・ROLLBACKはTCLに属する。","DDL（データ定義言語。TRUNCATEがDELETEと違いDDLなのが定番の的）",[88,89],"shindanshi\u002Fjoho\u002Fkaihatsu\u002Fer-seikika","shindanshi\u002Fjoho\u002Fkaihatsu\u002Fmodel",[91,92,93,94],{"unitId":5,"unitTitle":10,"topic":9,"item":51},{"unitId":5,"unitTitle":10,"topic":9,"item":62},{"unitId":5,"unitTitle":10,"topic":9,"item":75},{"unitId":5,"unitTitle":10,"topic":9,"item":82},[96,98],{"id":88,"title":97},"正規化 — 引っ越し1件で2行直すはめになる前に",{"id":89,"title":99},"開発モデル — 家を建てるか、試食を重ねるか",[101,102,103,104,107],{"id":88,"title":97},{"id":5,"title":10},{"id":89,"title":99},{"id":105,"title":106},"shindanshi\u002Fjoho\u002Fkaihatsu\u002Ftest","テスト — 分解して見るか、ハンドルを回して見るか",{"id":108,"title":109},"shindanshi\u002Fjoho\u002Fkaihatsu\u002Fmitsumori","見積り3法 — 機能で測る、行数で測る、過去に聞く",1784183227532]