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
26
データベースで沼った話
めぐろ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
18
Other Decks in Programming
See All in Programming
Domain-Driven Transformation
hschwentner
2
1.5k
GitHub Copilotのススメ
marcy731
1
240
Anthropic Cookbook のおすすめレシピ
schroneko
7
1.3k
PHPはいつから死んでいるかの調査
chiroruxx
2
420
“Seeing Like a Programmer”—Resiliency, Limits, and Moral Hazards in Software Engineering (LambdaConf 2024)
chriskrycho
0
230
Apache Hive 4 on Treasure Data
ryukobayashi
1
440
ServerAction で Progressive Enhancement はどこまで頑張れるか? / progressive-enhancement-with-server-action
takefumiyoshii
6
460
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
1
390
Native Federation: The Future of Micro Frontends in Angular
manfredsteyer
PRO
0
120
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
1.1k
Documentation for users with AsciiDoc and Antora
ahus1
0
370
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
280
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
22
1.6k
Rails Girls Zürich Keynote
gr2m
91
13k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
126
32k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
15
1.6k
Into the Great Unknown - MozCon
thekraken
15
1k
Building Applications with DynamoDB
mza
88
5.6k
The Cost Of JavaScript in 2023
addyosmani
21
3.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
Become a Pro
speakerdeck
PRO
13
4.6k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
What's new in Ruby 2.0
geeforr
337
31k
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