Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データベースで沼った話
Search
K1mu21
March 12, 2024
Programming
0
62
データベースで沼った話
めぐろLT#8の資料です
K1mu21
March 12, 2024
Tweet
Share
More Decks by K1mu21
See All by K1mu21
dependabotを導入して失敗した話
k1mu21
0
97
Rust勉強会1回目の資料
k1mu21
0
44
ギャレトレ勉強会
k1mu21
0
35
リプレイスでやったこと
k1mu21
1
49
Cloudflareいいぞ
k1mu21
1
94
静的解析ツールを導入した話
k1mu21
1
190
WebGLを触ってみよう
k1mu21
1
46
GoのAirを使ってみた話
k1mu21
0
94
学生から社会人1年目を通して
k1mu21
2
220
Other Decks in Programming
See All in Programming
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation
gotok365
6
340
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
2
230
PT AI без купюр
v0lka
0
150
Interface vs Types ~型推論が過多推論~
hirokiomote
1
190
Agent Rules as Domain Parser
yodakeisuke
1
170
クラシルリワードにおける iOSアプリ開発の取り組み
funzin
1
720
TypeScript エンジニアが Android 開発の世界に飛び込んだ話
yuisakamoto
6
810
Storybookの情報をMCPサーバー化する
shota_tech
3
1.6k
Boast Code Party / RubyKaigi 2025 After Event
lemonade_37
0
300
RubyKaigi Hack Space in Tokyo & 函館最速 "予習" 会 / RubyKaigi Hack Space in Tokyo & The Fastest Briefing of RubyKaigi 2026 in Hakodate
moznion
1
110
イベントソーシングとAIの親和性ー物語とLLMに理解できるデータ
tomohisa
1
150
型付け力を強化するための Hoogle のすゝめ / Boosting Your Type Mastery with Hoogle
guvalif
1
210
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
Designing Experiences People Love
moore
142
24k
Bash Introduction
62gerente
613
210k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
25
2.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
We Have a Design System, Now What?
morganepeng
52
7.6k
The Cult of Friendly URLs
andyhume
78
6.4k
4 Signs Your Business is Dying
shpigford
183
22k
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Docker and Python
trallard
44
3.4k
Transcript
データベースで 沼った話
自己紹介
• 木村 宗吾(k1mu) • 所属 ◦ 株式会社ラクーンホールディングス技 術戦略部 • 領域
◦ バックエンド(+フロントエンド) • 言語 ◦ 業務 ▪ Java PHP ◦ 業務外 ▪ Go C(++) • X ◦ @detunote
なぜこの話をするのか • テーマが初めてのLTとの事で、せっかくなら1年目として印象に残ったことを話す と面白いのでは • DBを触る方は多いと思うので、知らなかったのであればこれからの知見として ほしい
DBに関して
皆さんDBは何を使った事があります?
今回の説明で使うDB
沼った問題
前提 (テーブル)
前提 (データ)
テーブルをUPDATE UPDATE users SET name = '木村' WHERE id =
3; ID3の名前を木村に変更するUPDATEを実行する
結果 ID3の名前が変わっている MySQL ORACLE
別のSQLエディター 等で確認 Oracleの方ではID3の Nameが変わっていない ORACLE MySQL
内容が反映されていな い...!?
最後にCommitした?
解決方法 UPDATE users SET name = '木村' WHERE id =
3; commit;
結果 別のエディターで見ても データが入っていて UPDATEもされている。
DBに反映された!
原因 • コミットしていなかったため、利用中のトランザクションでしかUPDATEが反映さ れていなかった。 • 正直MySQL = ORACLE のように考えていた。 ◦
MySQLなどにはAuto Commitがあり、標準ではONになっているので最後に自分で Commitを 明示的に宣言する必要がない。 ◦ OracleにもAuto Commitがあるが標準ではOFFになっている。
他にも • バージョンによってOracleにはオートインクリメントがない ◦ シーケンスを利用して連番を生成する必要がある。 • LimitがないのでRowNumを利用して行数を制限 • SELECT句にGROUP BY句にない列を含めることができるが、その列は集約関
数の中で使用される必要がある。 • Oracleでは空文字はNullと同等に扱える
仕様はちゃんと 調べてから使おう
宣伝 弊社のconnpassページ https://raccoon-holdings.connp ass.com