Submit Search
Upload
NULLとの戦い RDBMS実装編
•
2 likes
•
3,049 views
Meiji Kimura
Follow
2015-10-08(木)に行われた理論から学ぶデータベース実装入門Nightで行ったLightning Talkのスライドです。
Read less
Read more
Internet
Report
Share
Report
Share
1 of 18
Download now
Download to read offline
Recommended
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
Hironori Miura
理論から学ぶデータベース実践入門ngiht LT大会 2015年10月8日 ユニークビジョン株式会社 CTO 青柳公右平 #db_jissen_night
集合演算を真っ向から否定するアレの話
集合演算を真っ向から否定するアレの話
Kouhei Aoyagi
理論から学ぶデータベース実践入門 Nightで発表した資料です。
なぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのか
Mikiya Okuno
理論から学ぶデータベース実践入門読書会スペシャルで発表した資料です。
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
北海道データベースDAYで使用した資料です。db tech showcaseの内容に、いくつかの説明を加えています。(講義時間90分)
リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計
Mikiya Okuno
2015.10.08に開催された「理論から学ぶデータベース実践入門Night」でLTした際のスライド
Datalogからsqlへの トランスレータを書いた話
Datalogからsqlへの トランスレータを書いた話
Yuki Takeichi
2015/10/08 理論から学ぶデータベース実践入門Night のLT登壇資料です。論理包含について少し語らせて頂きました。前回登壇予定だったものを少し修正してます。
ならば(その弐)
ならば(その弐)
Tomoaki Hiramoto
DBエンジニアのための技術勉強会(第3回)で使用した資料です。主にリレーショナルモデルと正規化について解説しています。リレーショナルモデルの限界について正しく認識してこそ、リレーショナルモデルを理解したと言えると思います。
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
Recommended
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
Hironori Miura
理論から学ぶデータベース実践入門ngiht LT大会 2015年10月8日 ユニークビジョン株式会社 CTO 青柳公右平 #db_jissen_night
集合演算を真っ向から否定するアレの話
集合演算を真っ向から否定するアレの話
Kouhei Aoyagi
理論から学ぶデータベース実践入門 Nightで発表した資料です。
なぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのか
Mikiya Okuno
理論から学ぶデータベース実践入門読書会スペシャルで発表した資料です。
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
北海道データベースDAYで使用した資料です。db tech showcaseの内容に、いくつかの説明を加えています。(講義時間90分)
リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計
Mikiya Okuno
2015.10.08に開催された「理論から学ぶデータベース実践入門Night」でLTした際のスライド
Datalogからsqlへの トランスレータを書いた話
Datalogからsqlへの トランスレータを書いた話
Yuki Takeichi
2015/10/08 理論から学ぶデータベース実践入門Night のLT登壇資料です。論理包含について少し語らせて頂きました。前回登壇予定だったものを少し修正してます。
ならば(その弐)
ならば(その弐)
Tomoaki Hiramoto
DBエンジニアのための技術勉強会(第3回)で使用した資料です。主にリレーショナルモデルと正規化について解説しています。リレーショナルモデルの限界について正しく認識してこそ、リレーショナルモデルを理解したと言えると思います。
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
SQL標準とMySQLの仕様(実装)についていくつか。
My sql casual12lt
My sql casual12lt
Meiji Kimura
オープンソースRDBMSの最新版(Firebird3.0, MySQL5.7, PostgreSQL9.6)新機能をご紹介します。
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
Meiji Kimura
MySQLのSQLクエリ最大長に朝鮮
MySQLの限界に挑戦する
MySQLの限界に挑戦する
Meiji Kimura
JustTechTalk#06でお話したスライドの公開版です。Firebird 3.0, MySQL 5.7, PostgreSQL 9.5を紹介しています。
オープンソース・データベースの最新事情
オープンソース・データベースの最新事情
Meiji Kimura
MySQL Casual Talks vol.9でのLightning talkです。
My sql casual9lt_pub
My sql casual9lt_pub
Meiji Kimura
第一回(?) MySQL Beginners Talkにて発表した同名セッションスライドの公開版です。
MySQLインストールのお作法
MySQLインストールのお作法
Meiji Kimura
More Related Content
More from Meiji Kimura
SQL標準とMySQLの仕様(実装)についていくつか。
My sql casual12lt
My sql casual12lt
Meiji Kimura
オープンソースRDBMSの最新版(Firebird3.0, MySQL5.7, PostgreSQL9.6)新機能をご紹介します。
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
Meiji Kimura
MySQLのSQLクエリ最大長に朝鮮
MySQLの限界に挑戦する
MySQLの限界に挑戦する
Meiji Kimura
JustTechTalk#06でお話したスライドの公開版です。Firebird 3.0, MySQL 5.7, PostgreSQL 9.5を紹介しています。
オープンソース・データベースの最新事情
オープンソース・データベースの最新事情
Meiji Kimura
MySQL Casual Talks vol.9でのLightning talkです。
My sql casual9lt_pub
My sql casual9lt_pub
Meiji Kimura
第一回(?) MySQL Beginners Talkにて発表した同名セッションスライドの公開版です。
MySQLインストールのお作法
MySQLインストールのお作法
Meiji Kimura
More from Meiji Kimura
(6)
My sql casual12lt
My sql casual12lt
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
MySQLの限界に挑戦する
MySQLの限界に挑戦する
オープンソース・データベースの最新事情
オープンソース・データベースの最新事情
My sql casual9lt_pub
My sql casual9lt_pub
MySQLインストールのお作法
MySQLインストールのお作法
NULLとの戦い RDBMS実装編
1.
1 NULLとの戦い RDBMS実装編 理論から学ぶ データベース実装入門Night LT @MeijiK
2.
免責事項 • 本プレゼンテーションにおいて示されている 見解は、私自身の見解であって、私の所属す る会社・団体の見解を必ずしも反映したもの ではありません。ご了承ください。 2
3.
3 第7章 NULLとの戦い • 7.1
NULL – リスト7.3 値にNULLが含まれる場合 – リスト7.4 リスト7.3を正しく書き換えた例 • 7.2 NULL対策 • 7.3 まとめ SELECT * FROM users WHERE age <>20 SELECT * FROM users WHERE age <>20 OR age IS NULL
4.
4 等価比較 A B=
5.
5 等価比較 A B= A BIS
6.
6 NULLセーフな比較演算 • 二つの項目を比較する際に、それぞれの項目に NULLがあるかないによって演算子を使い分けるの はなかなか面倒なものです。たとえばA と
Bを比較 しようとして、BがNULLで、A IS NULLとするのか、 BがNULLでないときにA = Bとするのか、というもの です。 • 一部のRDBMSにはNULLを含めた比較演算子が 実装されています。たとえばMySQLでは<=>という 独自の演算子にてA, B どちらにNULLが含まれても、 正しく比較することができます。
7.
7 NULLセーフな等価比較(MySQL) A B<=>
8.
8 SQL標準 • SQL標準ではNULL込みの比較がおこなえる IS NOT
DISTINCT FROMが定められました。 次のように利用します。 • A IS NOT DISTINCT FROM B • 現時点ではIBM DB2, Firebird, PostgreSQL, Sybaseで利用できます。
9.
9 NULLセーフな等価比較(SQL標準) A BIS NOT
DISTINCT FROM
10.
10 実装の闇 • 古くからあるRDBMSではNULLの扱いが特 殊な場合があります。 • 具体的には特定のデータ型、比較演算子で NULLの扱いが違う、というものです。 •
有名なものはOracleとMicrosoft SQL Server/Sybaseに関するものです。
11.
11 OracleのVARCHAR2型 • Oracleでは可変長文字列型カラム型に VARCHAR2を利用しその空文字(長さ0の文 字)がNULL扱いされる。 • Oracleで仕事をする人には常識なのですが、 Oracleのみ(もしくはOracle互換をうたうDB の互換モードのみ)の特別な仕様です。 •
SQLの入門テキストのみでこの業界に入った 人や、Oracleへの移行、Oracleからの移行 の場合にはご注意ください。
12.
12 SQL Server/Sybaseの「=NULL」 • MS
SQL Server/Sybaseの古いバージョンで は= NULLの表記で正しく(?) 比較できる。 • 古いバージョンやSET ANSI_NULLSオプ ションがOFFにできるバージョンでは= NULL がTRUEやFALSEを返します。 • 最近のデフォルトはANSI_NULLSオプション がONつまり= NULLはNULLですので、新規 開発では問題がないのですが、過去のバー ジョンからのバージョンアップや、他のデータ ベースの移行の際には注意が必要です。
13.
13 リスト7.4の書き換え(MySQL) • SELECT *
FROM users WHERE age <> 20 OR age IS NULL; • SELECT * FROM users WHERE !(age <=> 20);
14.
14 リスト7.4の書き換え(SQL標準) • SELECT *
FROM users WHERE age <> 20 OR age IS NULL; • SELECT * FROM users WHERE age IS DISTINCT FROM 20;
15.
15 リスト7.4の書き換え(Oracle10以降) • SELECT *
FROM users WHERE age <> 20 OR age IS NULL; • SELECT * FROM users WHERE LNNVL(age = 20);
16.
16 宣伝1:読書会 • 7shiさん、 furandon_pigさん主催で隔週水曜 日にゆるゆるとやってます。 –
http://riron-db.connpass.com/ – 次回は2015/10/14(水) 20:00より。 • 今回のネタは読書会で話したもの+αです。 – そもそものネタは次の書籍でボツったもの+αで す。。。。
17.
宣伝2: 書籍情報 • おうちで学べるデータベースのきほん –
まったくの初心者はこちらをどうぞ。 – 増刷出来(パチパチ) • 入手方法 – じゃんけんで勝つ。 – もしくは、Amazonでポチる w。 • こんな疑問にも答えている(?) – Read Uncommitted なぜある 17
18.
18 THANK YOU • ご清聴ありがとうございました。
Download now