Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Meiji Kimura
PDF, PPTX
3,071 views
NULLとの戦い RDBMS実装編
2015-10-08(木)に行われた理論から学ぶデータベース実装入門Nightで行ったLightning Talkのスライドです。
Internet
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 18
2
/ 18
3
/ 18
4
/ 18
5
/ 18
6
/ 18
7
/ 18
8
/ 18
9
/ 18
10
/ 18
11
/ 18
12
/ 18
13
/ 18
14
/ 18
15
/ 18
16
/ 18
17
/ 18
18
/ 18
More Related Content
PDF
リレーショナルな正しいデータベース設計
by
Mikiya Okuno
PDF
データベース設計徹底指南
by
Mikiya Okuno
PPTX
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
by
Hironori Miura
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
Datalogからsqlへの トランスレータを書いた話
by
Yuki Takeichi
ODP
集合演算を真っ向から否定するアレの話
by
Kouhei Aoyagi
PDF
なぜ、いまリレーショナルモデルなのか
by
Mikiya Okuno
PPTX
ならば(その弐)
by
Tomoaki Hiramoto
リレーショナルな正しいデータベース設計
by
Mikiya Okuno
データベース設計徹底指南
by
Mikiya Okuno
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
by
Hironori Miura
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
Datalogからsqlへの トランスレータを書いた話
by
Yuki Takeichi
集合演算を真っ向から否定するアレの話
by
Kouhei Aoyagi
なぜ、いまリレーショナルモデルなのか
by
Mikiya Okuno
ならば(その弐)
by
Tomoaki Hiramoto
More from Meiji Kimura
PDF
オープンソース・データベースの最新事情
by
Meiji Kimura
PDF
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
by
Meiji Kimura
PDF
MySQLインストールのお作法
by
Meiji Kimura
PDF
MySQLの限界に挑戦する
by
Meiji Kimura
PDF
My sql casual12lt
by
Meiji Kimura
PDF
My sql casual9lt_pub
by
Meiji Kimura
オープンソース・データベースの最新事情
by
Meiji Kimura
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
by
Meiji Kimura
MySQLインストールのお作法
by
Meiji Kimura
MySQLの限界に挑戦する
by
Meiji Kimura
My sql casual12lt
by
Meiji Kimura
My sql casual9lt_pub
by
Meiji Kimura
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