序文
ですが、しばらくデータベースを
そこで、です。このサイトの
- なぜ"
関係 "モデルという抽象 的 な用語 を使 うのか分 からない。"表 "モデルでいいじゃない。 - なぜ「= NULL」ではなく「IS NULL」と
書 かねばならないのか分 からない。 - E.F.Codd、C.J.Date、J.Celko の
本 を読 んだことがない。 - IN
述語 とEXISTS述語 では、IN の方 が直観 的 に分 かりやすいから好 きだ。 - IN
述語 、EXISTS述語 、LIKE述語 ・・・「述語 」って何 だ? - テーブル
設計 のときは滅多 に NOT NULL制約 を付 けない。しかもそれが大罪 であることの自覚 がない。 - SQLで
分岐 とループを表現 する方法 を知 りたい。 - SQLでCASE
式 を使 ったことがない。 - SQLで
自己 結合 を使 ったことがない。 - HAVING
句 を影 の薄 い脇役 だと思 っている。 - GROUP BYとPARTITION BYの
違 いを一言 で説明 できない。 - SQLで
木 構造 のデータを扱 いたい
NewSQL
- データベースの
新 潮流 ~NewSQLとHTAPを中心 に~
Developers Summit 2025の振 り返 り記事 。NewSQLとHTAPについて2025年 時点 の最新 動向 を解説 します。 - 「NewSQL」とは
何 か?その魅力 をTiDBから探 る
NewSQLの一角 であるTiDBをモデルにNewSQLについて解説 する連載 記事 の第 1回 。まずはNewSQLのアーキテクチャの登場 した背景 とについて理解 します。 - TiDBのユースケースから
探 るNewSQLの長所
NewSQLの一角 であるTiDBをモデルにNewSQLについて解説 する連載 記事 の第 2回 。ユースケースを見 ていくことでNewSQLの使 いどころを考 えます。 - 10
年 前 の登場 から再 び脚光 を浴 びる「HTAP」は何 がスゴイのか?
NewSQLの一角 であるTiDBをモデルにNewSQLについて解説 する連載 記事 の第 3回 。NewSQLから少 し離 れてTiDBのユニークな機能 「HTAP」を解説 します。
パフォーマンス・チューニング
- SQLを
速 くするぞ
なるべくベンダー非 依存 の技術 を集 めました。同 じ結果 を得 る SQL でも書 き方 次第 でかなりのパフォーマンス向上 が望 めるものです。
治療 としてのパフォーマンスチューニング
「パフォーマンスチューニング」という仕事 がどのようなフローにしたがって実施 されるかを、医師 の「治療 」に見立 てて解説 しました。
実際 、医者 とエンジニアの仕事 には意外 に共通 点 が多 いのです。社会 的 地位 はずいぶん違 いますが。
実践 向 け
- CASE
式 のススメ
便利 なのに意外 に使 われていないCASE式 を、もっと活用 しましょう。
レイアウトの見 やすい CodeZine版 はこちら →前編 後編 。
自己 結合 の使 い方
CASE式 に劣 らず強力 だけど、動作 がイメージしづらくてあまり利用 されていない自己 結合 についての解説 。「集合 指向 言語 としてのSQL:その1」
- HAVING
句 の力
「集合 指向 言語 としてのSQL:その2」です。影 の薄 い脇役 と思 われがちなHAVING句 の復権 のために。いい出来 だと思 う。
外部 結合 の使 い方
結合 シリーズ第 2弾 。さあ、みんなで結合 しよう。
- SQLでループ!
相関 サブクエリの使 い方
初心者 が必 ずつまづく相関 サブクエリについて、基礎 から解説 しました。相関 サブクエリも集合 の「カット」という操作 なのだ、という点 を理解 してくれれば、マスターしたも同然 。
相関 サブクエリで行 と行 を比較 する
「集合 指向 言語 としてのSQL:その3」。これもなかなか。「自己 結合 の使 い方 」と併 せ読 むと面白 いかも。
- SQLで
数列 を扱 う
「数列 」というのは、あくまで順序 集合 の一番 分 かりやすい例 として出 したものなので、方法 論 自体 は一般 性 の高 いものです。なにげに量 化 の話 まで入 れてしまった欲張 りな回 。
- SQLで
連 番 を扱 う
初出 は『Web+DB Press』Vol.45。「連 番 」というのも、SQL ではなかなか素直 に扱 えない対象 です。しかし、近年 では ROW_NUMBER、RANK など手続 き型 の考 え方 で操作 できる関数 が追加 されるようになったため、かなりとっつきやすくなっています。
- SQLで
集合 演算
UNION、INTERSECT、EXCEPTなどを中心 に、SQLでの集合 演算 の利用 方法 を解説 した記事 です。「集合 指向 言語 としてのSQL:その4」
帰 ってきたHAVING句
ジュワッ! 「HAVING句 の力 」第 2弾 です。HAVING と GROUP BY の解説 としては決定 版 といって差 し支 えないでしょう。類別 と特性 関数 の話 も出 せて満足 な一品 。
更新 なんてこわくない!
SQL というと、どうしても検索 に主眼 が置 かれますが、実 は最近 は更新 の手段 もかなり充実 しており、DB内部 でさまざまなデータ編集 をすることが可能 になっています。
- スカラ・サブクエリの
使 い方
スカラ値 と複 合 値 というのは、「第 1正規 形 とは何 か」という関係 モデルの基礎 に関 わる重要 な区分 です。それを理解 すると SQL の中 でのスカラ値 の使 い方 が分 かります。
- OLAP
関数 で強力 な統計 処理 を実現 !
『Web+DB Press』で2年間 連載 していた「SQLアタマアカデミー」の最終 回 。SQL:2003で標準 に入 った OLAP関数 (ウィンドウ関数 、分析 関数 )について、基礎 から応用 まで一 通 り理解 できるよう解説 しています。
- SQLアタマ
養成 講座 (PDF) (HTML)
初出 は『Web+DB Press』Vol.44。SQLの重要 な三 機能 :分岐 (CASE式 )、ループ(相関 サブクエリ、OLAP関数 )、カット(GROUP BY、PARTITION BY)の使 い方 を解説 したもの。「中級 入門 」の対象 者 を意識 して書 きました。
- SQLで
木 と階層 構造 のデータを扱 う(1)――入 れ子 集合 モデル
近年 、データベースの世界 で要望 の高 まりを見 せている木 構造 の扱 い方 を、「入 れ子 集合 モデル」という独創 的 な方法 に基 づいて解説 します。このモデルは、初 めて知 るときはけっこう感動 します。
『Web+DB Press』版 はこちら。
- SQLで
木 と階層 構造 のデータを扱 う(2)――経路 列挙 モデル
木 構造 の扱 い方 第 2弾 です。今度 は、ノードをディレクトリに見立 てて、文字 列 操作 を駆使 します。ファイルシステムの発想 とも共通 点 の多 い興味深 い方法 論 です。
- SQLで
木 と階層 構造 のデータを扱 う(3)――入 れ子 区間 モデル
入 れ子 集合 モデルには、整数 を座標 に使 っているため、更新 時 のパフォーマンスが悪 いという欠点 がありました。それを克服 するため、整数 から有理数 へ一般 化 したモデル。これも初 めて知 るときには震 えがきます。
- SQLで
数学 パズルを解 く (数 論 編 ) (組 み合 わせ論 編 )
どうせ SQL を学 ぶなら、楽 しみながら学 べた方 が嬉 しいもの。問題 、解法 も随時 受付 中 。
設計 ・その他
- テーブル
設計 のグレーゾーン
SQL のテクニックから離 れて、テーブル設計 の話 。それもあまり行儀 のよくない一癖 ある連中 ばかり集 めてみました。
- ビューの
功罪
ビューは諸刃 の剣 です。ご利用 は計画 的 に。
- SQLプログラミング
作法
大 したことではないのですが、SQL にもマナーはあった方 がいいでしょう。
手続 き型 から宣言 型 ・集合 指向 に頭 を切 り替 えるための7か条
SQL を学 ぶときに一番 の障壁 となるのが、手続 き型 言語 から無意識 のうちに身 に付 けた考 え方 です。手続 き型 言語 から SQL へ、うまくジャンプするためのコツをまとめました。
SQL緊急 救命 室
アーキテクチャ
記憶 装置 のトレードオフとバッファの考 え方
「DBアタマアカデミー」第 1回 。どんな DBMS でも必 ず持 っている「バッファ」というメモリ領域 の背後 にある仕組 みと思想 についての解説 。
- トランザクションを
知 ればデータベースがわかる
分 かっているようでなかなか深 く理解 しないままになりがちな概念 「トランザクション」について。同時 実行 制御 、WAL、スラッシング、ACID など。
性能 改善 の鍵 ,インデックスの特性 を知 る
データベースのインデックスでよく使 われるアルゴリズム B-tree(B+tree) および ハッシュの原理 についての解説 。なかなかよくまとめられた、と自賛 の一品 です。
- バックアップとリカバリ
運用 設計 で外 すことのできないバックアップ/リカバリについて。実際 のところリカバリの手順 というのは一本 道 なので、主 にバリエーションの多 いバックアップについて解説 しています。
- クエリ
評価 エンジンと実行 計画
リレーショナル・データベースのパフォーマンスを決定 する SQL の実行 計画 、およびそれを立案 するクエリ評価 エンジンの動作 について。
基礎 理論
- なぜ"
関係 "モデルという名前 なの?
なぜ「表 モデル」という名前 ではないのか?その疑問 に答 えるための小文 。関係 の正確 な定義 を知 りたい人 向 け。
- アドレス、この
巨大 な怪物
関係 モデルはなぜ考 え出 されたのか。それはアドレスという怪物 からデータベースを解放 するためのアイデアでした。
- SQLの
中 の述語 論理
IN述語 、EXISTS述語 、LIKE述語 ・・・・・・述 語 って何 だ? それは関数 ――正確 には述語 論理 の基礎 概念 である「命題 関数 」 ―― のことです。データベースの世界 から見 た述語 論理 入門 。
- そんなあなたが
大好 きよ
いやあ、SQL って本当 に、いいもんですね。
- GROUP BYとPARTITION BY
普段 なにげなく使 っているGROUP BYとPARTITION BY。本当 はどういう機能 を果 たしているか、分 かりますか? SQL の背後 にある集合 論 と群論 の考 え方 を解説 します。
再帰 集合 とSQL
ランキングや累計 を求 めるクエリでは、ノイマン型 の再帰 集合 が重要 な役割 を果 たします。そのアイデアの源泉 は、自然 数 の帰納的 定義 という集合 論 の基礎 にまで遡 ります。その理論 的 背景 を探 るコラム。
歴史
- リレーショナル・データベースの
歴史 (1) (2) (3)
リレーショナル・データベースが誕生 してから30年 の歴史 を、データベース界 の指導 的 論客 である C.J.Date が概観 した連載 の要約 です。
ちなみにこの連載 、好評 だったのか本 にもなってます。
国家 ・データベース・イノベーション
リレーショナル・データベースの歴史 を見 ると、関係 モデルというアイデアが破壊 的 技術 であり、その誕生 史 はそのままイノベーションのジレンマを地 で行 く展開 だったことが分 かります。
- 【
決定 版 】RDBMSとNoSQLにみるDB近 現代 史
エンジニアHUBに掲載 された記事 。RDBからNoSQLまでの歴史 を概観 しています。
NULLにまつわる諸 問題
- 3
値 論理 ――神 のいない論理
3値 論理 という奇妙 な体系 にまつわるトピックを紹介 します。なぜ「= NULL」ではなく「IS NULL」と書 かなくてはならないのか分 からない人 へ向 けて書 きました。
- 3
値 論理 とNULL
CodeZine用 に具体 例 をかなり増 やしました。
- SQLにおける
論理 演算
あまり NULL絡 みの話 はしておらず、どちらかというと論理 演算 の便利 さを紹介 したのですが、まあ分類 で言 うとやはりこの位置 かな。
- NULL
撲滅 委員 会
万国 のDBエンジニア団結 せよ。
存在 と無
NULL と空 集合 の違 いって分 かります?
- 130
値 論理
身 の毛 もよだつ多値 論理 の話 。こえー。
その他
- 『SQLの
達人 』はいかにして生 まれたか?―ミックさん
2018年 に翔 泳 社 のEnterpriseZine誌 で行 われたインタビュー。自分 とSQLとの関 わりはじめなどを振 り返 っています。
- 「エンジニアは
初 見 の敵 にやられてはいけない」
『SQL ゼロからはじめるデータベース操作 第 2版 』の刊行 に際 して行 われたインタビュー。非 構造 データの重要 性 が増 してくるという予測 は、データレイクという言葉 が出 てきた今 から振 り返 ると先見 性 の明 があったのではないでしょうか(自画 自賛 )。
神 は細部 に宿 る(图灵访谈)
『SQL ゼロからはじめるデータベース操作 第 2版 』の中国語 版 刊行 時 の出版 社 によるインタビュー。
- 『SQLパズル
第 2版 』サポートページ
拙 訳 J.セルコ『SQLパズル第 2版 』(
翔 泳 社 , 2007)のサポートページ。現在 8刷 。セルコの本 が日本 のSQLプログラマに親 しまれるのは良 いことです。
- 『SQL
徹底 指南 書 』サポートページ
拙著 『達人 に学 ぶ SQL徹底 指南 書 』(
翔 泳 社 , 2008)のサポートページ。皆様 に愛 されて10刷 になりました。
- 「みんなまとめて
面倒 みよう」 (PDF)
2008年 2月 13日 にデブサミで行 った講演 の資料 。『指南 書 』発売 に合 わせたプロモーションということで、書籍 の宣伝 も兼 ねて RDB と SQL について話 しました。
- 「リレーショナルとはどんなことか」 (PDF)
2010年 5月 28日 の Club DB2第 103回 で行 った講演 の資料 。破壊 的 技術 としての RDB 、集合 指向 と手続 き型 の対比 について。
- 「
達人 が語 るこんなデータベース設計 はヤダ!」 (PDF)
2012年 7月 13日 の Club DB2第 146回 で行 った講演 の資料 。データベース設計 の落 とし穴 やその背景 にある理由 などについて。
- 「ループをめぐる
物語 」 (PDF)
2015年 5月 15日 の Club DB2第 200回 で行 った講演 の資料 。『SQL実践 入門 』出版 記念 もかねて、ウィンドウ関数 を利用 したレコードの順序 を意識 したコーディングのメリットについて。
- 「RDBパフォーマンス
設計 大全 」 (PDF)
Database Lounge Tokyo #5 (2017.09.19)で行 った講演 の資料 。パフォーマンス設計 における考 え方 と注意 点 を中心 に議論 しました。
- 「SQL
実践 入門 Night」 (PDF)
SQL実践 入門 Night (2018.01.25)で行 った講演 の資料 。『SQL実践 入門 』のメインテーマである手続 き型 の復権 について話 しました。
- 「データベースの
新 潮流 ~NewSQLとHTAPを中心 に~」 (PDF)
Developers Summit 2025 (2025.02.13)で行 った講演 の資料 。データベースの世界 でいま注目 されている二 つの潮流 について話 しました。
推薦 図書