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
29
データベースで沼った話
めぐろLT#8の資料です
K1mu21
March 12, 2024
Tweet
Share
More Decks by K1mu21
See All by K1mu21
WebGLを触ってみよう
k1mu21
1
10
GoのAirを使ってみた話
k1mu21
0
18
学生から社会人1年目を通して
k1mu21
2
150
Lidarであそぼ
k1mu21
0
21
Other Decks in Programming
See All in Programming
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
74k
Powerfully Typed TypeScript
euxn23
4
1.7k
Implementing Design Systems in Swift
seyfoyun
2
530
GitHub Actionsの痒いところを埋めるサードパーティーランナー
dora1998
2
280
Criando a Woovi em uma semana
daniloab
0
120
TypeScriptのパフォーマンス改善
yajihum
14
5.1k
The test code generator using static analysis and LLM
mikik0
1
230
Dev ContainersとTestcontainers
bells17
3
100
Productivity is Messing Around and Having Fun
hollycummins
1
180
HonoのRPCで真の型安全が欲しかった
kosei28
1
160
“Seeing Like a Programmer”—Resiliency, Limits, and Moral Hazards in Software Engineering (LambdaConf 2024)
chriskrycho
0
430
戦略的DDDは重いのか? / Is strategic DDD heavy?
pictiny
3
2.1k
Featured
See All Featured
Atom: Resistance is Futile
akmur
260
25k
Documentation Writing (for coders)
carmenintech
60
4k
The World Runs on Bad Software
bkeepers
PRO
61
6.8k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Teambox: Starting and Learning
jrom
128
8.4k
Debugging Ruby Performance
tmm1
70
11k
Code Review Best Practice
trishagee
56
15k
Facilitating Awesome Meetings
lara
43
5.6k
In The Pink: A Labor of Love
frogandcode
138
21k
Web development in the modern age
philhawksworth
203
10k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Designing with Data
zakiwarfel
96
4.8k
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