$30 off During Our Annual Pro Sale. View Details »

SQL Meisterへの道 ~更新編~ / sql-meister-CUD

ma2k8
PRO
November 29, 2020

SQL Meisterへの道 ~更新編~ / sql-meister-CUD

ma2k8
PRO

November 29, 2020
Tweet

More Decks by ma2k8

Other Decks in Technology

Transcript

  1. SQL Meister ΁ͷಓ @ma2k8 2020-10-31 ~ߋ৽ฤ~

  2. ໨࣍ - ߋ৽ܥͷΫΤϦΛൃߦ͢Δͦͷલʹ - ҆৺҆શͷτϥϯβΫγϣϯ - INSERTจͰσʔλΛ௥Ճͯ͠ΈΑ͏ - INSERTจͷจ๏ -

    ࣮ߦ - UPDATEจͰσʔλΛߋ৽ͯ͠ΈΑ͏ - UPDATEจͷจ๏ - ࣮ߦ - DELETEจͰσʔλΛফͯ͠ΈΑ͏ - DELETEจͷจ๏ - ࣮ߦ
  3. ߋ৽ܥͷΫΤϦΛ ൃߦ͢Δͦͷલʹ

  4. ҆৺҆શͷτϥϯβΫγϣϯ τϥϯβΫγϣϯͱ͸ɺʮॲཧΛ·ͱΊΔʯ͜ͱͰ͢ɻ ઌఔୟ͍ͨSELECTจ͸1ͭͷΫΤϦͰ1ͭͷॲཧͰ͢ɻ τϥϯβΫγϣϯΛ࢖͏ͱɺෳ਺ͷΫΤϦΛ1ͭͷॲཧͱͯ͠ѻ͏͜ͱ͕Ͱ͖· ͢ɻ͜ΕʹΑͬͯɺ·ͱΊͨॲཧΛ࣮ߦ͢Δ͔ר͖໭͔͢Λબ୒Ͱ͖ͨΓ͠·͢ɻ ݴ༿͚ͩͩͱ೉͍͠ͱࢥ͏ͷͰͱΓ͋͑ͣ΍ͬͯΈΑ͏ʂ

  5. ҆৺҆શͷτϥϯβΫγϣϯ ࢖͏ίϚϯυ͸ͨͬͨͷ3ͭ - ͸͡·Γͷ߹ਤ begin - ྺ࢙ͷ֬ఆ commit - ࣌Λ໭ͦ͏

    rollback
  6. ҆৺҆શͷτϥϯβΫγϣϯ begin -> rollbackͷ༷ࢠ ①更新前のデータを確認する ②処理の始まりを宣言! ③データを更新する ※update文はこの後出てくるので一旦無視で! ④更新内容を確認 ⑤更新内容が思ったとおりじゃない!

     そんなときは時を戻せます。 ⑥最初の状態に戻った!
  7. ҆৺҆શͷτϥϯβΫγϣϯ begin -> commitͷ༷ࢠ ①更新前のデータを確認する ②処理の始まりを宣言! ③データを更新する ※update文はこの後出てくるので一旦無視で! ④更新内容を確認 ⑤更新内容完璧!

    この内容で確定するぞ! ⑥変更が確定された!
  8. ҆৺҆શͷτϥϯβΫγϣϯ ʮॲཧΛ·ͱΊΔʯͱΊͬͪΌศར͡Όͳ͍Ͱ͔͢ʁʁ ΫΤϦͰߋ৽͞Εͨޙͷঢ়ଶΛ֬ೝͯ͠ɺ֬ఆ͢Δ͔ɺ໭͔͢ ΛܾΊΔ͜ͱ͕Ͱ͖ΔͷͰͱͯ΋҆৺ͳͷͰ͢ɾɾɾʂ ߋ৽ܥΫΤϦ͸ɺwhere۟Λ๨ΕͪΌ͏ͱ͢΂ͯͷσʔλʹର ͯ͠ߋ৽Λ૸ΒͤͨΓɺةͳ͍ૢ࡞͕Ͱ͖ͯ͠·͏ͷͰ͜͏͍ ͏อݥΛ͔͚͓ͯ͘ͱ҆৺҆શͰ͢ɻ ࣗ෼͸͜ΕʹՃ͑ͯɺWHERE͔۟Βઌʹॻ͍ͯࣄނΒͳ͍Α͏ ʹͯͨ͠Γ͠·͢ɻ

  9. INSERTจͰ σʔλΛ௥Ճͯ͠ΈΑ͏

  10. INSERTจͷจ๏ INSERT INTO ${ςʔϒϧ໊} -> σʔλΛ௥Ճ͢ΔςʔϒϧΛࢦఆ SET ${ϑΟʔϧυ໊}=“௥Ճ಺༰”,... -> ௥Ճ͢ΔσʔλΛࢦఆ

    ※INSERT文だけWHERE句が要らないぞ! INSERT INTO users SET name = ‘machu’, updated_at = now(); テーブル名 フィールド名 値 フィールド名 値
  11. ࣮ߦ DBを確認して選択 テーブル一覧を確認 テーブル構造とデータの内容を確認 クエリを組み立てて実行! ※スペースの関係で省いてますが、 実際にクエリを実行する際はトランザクションを忘れずに!

  12. UPDATEจͰ σʔλΛߋ৽ͯ͠ΈΑ͏

  13. UPDATEจͷจ๏ UPDATE ${ςʔϒϧ໊} -> σʔλΛߋ৽͢ΔςʔϒϧΛࢦఆ SET ${ϑΟʔϧυ໊}=“ߋ৽಺༰”,... -> ߋ৽͢ΔσʔλΛࢦఆ WHERE

    ${৚݅} -> ৚݅Λࢦఆ ※WHERE句を忘れると全データを更新してしまいます!危険! UPDATE users SET name = ‘machu’, updated_at = now() WHERE id = 1; テーブル名 フィールド名 値 フィールド名 値 条件  フィールド名 値
  14. ࣮ߦ DBを確認して選択 テーブル一覧を確認 テーブル構造とデータの内容を確認 ※ここでWHERE句で引っかかるのが    意図したデータであるかも確認します クエリを組み立てて実行! ※スペースの関係で省いてますが、 実際にクエリを実行する際はトランザクションを忘れずに!

  15. DELETEจͰ σʔλΛ࡟আͯ͠ΈΑ͏

  16. DELETEจͷจ๏ DELETE FROM ${ςʔϒϧ໊} -> σʔλΛ࡟আ͢ΔςʔϒϧΛࢦఆ WHERE ${৚݅} -> ࡟আ͢Δσʔλͷ৚݅Λࢦఆ

    ※WHERE句を忘れると全データを削除してしまいます!危険!
  17. ࣮ߦ DBを確認して選択 テーブル一覧を確認 テーブル構造とデータの内容を確認 ※ここでWHERE句で引っかかるのが    意図したデータであるかも確認します クエリを組み立てて実行! ※スペースの関係で省いてますが、 実際にクエリを実行する際はトランザクションを忘れずに!

  18. ͜ΕͰSQL Meister ΁ͷಓ ~ߋ৽ฤ~ ͸मྃͰ͢ɻ ΋ͪΖΜόοΫΞοϓ͸ͯ͠·͕͢ɺσʔλ͸Ұ ౓มߋͯ͠͠·͏ͱר͖໭͢·Ͱʹ͕͔͔࣌ؒͬͯ ͠·͏ͷͰ৻ॏʹ࣮ߦ͠·͠ΐ͏ʂ