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
92
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
データベースで沼った話
めぐろLT#8の資料です
K1mu21
March 12, 2024
More Decks by K1mu21
See All by K1mu21
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
340
dependabotを導入して失敗した話
k1mu21
0
180
Rust勉強会1回目の資料
k1mu21
0
90
ギャレトレ勉強会
k1mu21
0
90
リプレイスでやったこと
k1mu21
1
100
Cloudflareいいぞ
k1mu21
1
160
静的解析ツールを導入した話
k1mu21
1
250
WebGLを触ってみよう
k1mu21
1
69
GoのAirを使ってみた話
k1mu21
0
170
Other Decks in Programming
See All in Programming
信頼性の目標を誰も求めてない
shubox
0
470
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
640
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
150
이 함수, 실패하면 어떻게 되나요? null부터 Rich Errors까지, Kotlin 에러 처리 15년
haeti2
0
110
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
490
不幸な GC
chencmd
0
860
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
0
220
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
自分的「カンファレンスの楽しみ方」
syumai
0
170
XHTMLが残したもの
yosuke_furukawa
PRO
1
350
リアルな遅延を測る仕様
kota_yata
1
130
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
910
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Abbi's Birthday
coloredviolet
3
9.7k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Accessibility Awareness
sabderemane
1
190
Balancing Empowerment & Direction
lara
6
1.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
We Have a Design System, Now What?
morganepeng
55
8.3k
Claude Code のすすめ
schroneko
67
230k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
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