Contents

1 NULL 危
2 NULL 一
3 DBMS襷 るジ 一


1 NULL 危 #

朱 覲伎ろ 覲伎語 一危一語 '覲伎 讌' 螳讌螻 . '覲伎 讌' 3螳讌襦 螳襯 .



願 豌 ( ろ) 襷譟燕る '覲'手 覿襴 . 旧讓曙 覲願概 覲企ゼ 襯(Maximun 1)襦 . '伎殊 願 讓曙 蟆企' 襯 蟇一 1 螳蟾磯襦 覲伎 り 伎手鍵覃, '伎殊 譟一 豌伎 覈 讌蟆 螳螳 1[1] 語狩磯襯 讌蠍' 襯 蟇一 0 螳蟾磯襦 覲伎 襷り 伎手鍵 . 企 覲伎 螳 襦 螳 伎 '譟伎讌襷 覲企ゼ 螳讌讌 ' 螳 覲願. 襯 れ, 螻螳讌覿 伎 豢炎螳 id螳 'yasicom' 螻螳蟆 螳 覓語襯 email襦 り . 蠏碁 螳語覲 豈 CRM伎 id螳 'yasicom' 螻螳 企螻 email 豌.

select name, email from memeber where id = 'yasicom'

/*
create table member
(	
	id varchar(20) primary key
,	name varchar(20) not null
,	phone varchar(20) not null
,	email varchar(50) null
)
*/ 

蟆郁骸
name    email
------- -------
伎  NULL

企蟆 . 願 覓伎 襷伎手 螳? 螳 伎 螳

  • 譟伎讌襷 覲企ゼ 螳讌讌
  • 螳 譟伎讌 譟一姶 覈襴

朱 伎 . 讀, 螻螳 伎 email譯殊螳 覿蟲螻 ロ讌 蟆 蟇磯 email譯殊螳 る 詞 . 蠏碁 螻螳讌覿 蠍碁 襷 2螳讌 譴 襯 蟆企.

  • id螳 'yasicom' 螻螳 覯碁ゼ 伎 螻螳蟆 , email譯殊襯 覓 讌 (襷 email譯殊螳 る 襷り鍵襯 蟠ロ. 焔)
  • email譯殊襯 朱襦 譟伎讌 覈襯企襦 蠏碁 覓企ゼ 譴.

蠏碁る れ '覲'朱 蟆朱 螳 覲伎. 朱朱 覲企..

一危 -> [豌襴] -> 覲 -> 蟆一

螻殊 蟇一. 覿覈 一危磯ゼ 豌襴螻 email譯殊螳 null企朱 蟆 . 蠏碁 螻螳讌覿 蠍碁 email null企朱 蟆 螳讌螻 2螳讌 譴 襯 '蟆一' 蟆 蟆企. '覲' 企 '蟆一' 蟆 豕譬 覈企. 蠏碁覩襦 null 覲願 . 覿覈 譬 讓曙朱 讓曙朱 蟆一 レ 殊海朱蟾 襷企.

'螳伎' 'null -> [豌襴] -> ?' 覩誤. 覓殊(?)襴 覘螳 れ願蟾? '覲'螳 れ願 覦 . 蠏碁覩襦 '螳伎1: 譟伎讌襷 覲企ゼ 螳讌讌 蟆曙' 蠍 '一危' 覲企る '覲'螳 伎碁Μ 襷企. 讀, null螳 豌企 一危一願, null螳 伎(豌襴) 蟆郁骸 覲企手 . 1970 IBM E.F. Code覦 蟯螻 一危 覈語 螳覦. 1985 伎 蟯螻 一危 覈語 12蠏豺 覦. 蠏 譴 NULL 瑚 .

覓:
Rule 3: Systematic Treatment of Null ValuesA field should be allowed to remain empty. This involves the support of a null value, which is distinct from an empty string or a number with a value of zero. Of course, this can't apply to primary keys. In addition, most database implementations support the concept of a nun- null field constraint that prevents null values in a specific table column.

豌願 Null 螳 讌 :
  • DBMS 螳(れ讌 蟇磯 覿螳ロ 一危) 蠍 豌願 讌
  • 螳 吴 螳螻 るゴ螻 企 覃(domain) 伎 襴曙企.

伎 蟯螻 一危 覈語 NULL 襯 覈 . E.F. Codd 覦 12螳讌 蠏豺 (覈 螳讌 蠏豺 譴)譴 NULL 襴襯 燕 伎が蟾? 蟯螻 一危 覈語 Legacy ろ 螳伎蠍 覓語企. insert tableA(num) values(1) num 1 螳 れ願 蟆企. insert tableA(num) values(null) num null 螳 れ願 蟆企. 襷 num 貉殊 not null企手 語 る 願 '覓願屋' 覦壱 蟆 蟆.

not null貉殊 譟壱 null 企る 蟆 る螳 蟾? 1 襴曙 覃語 . null 襴曙 覃語 . null 襴曙 覃語 螳語 蟾? 螳 覲願. れ 蠍 谿語瑚?

  • 1螻 null 螳 螻, るゼ .

螳 覲願鍵 谿語企. 螳 襦 伎 email 'admin@databaser.net'企手 螳蟆. 讌 螳 レ 訖企. 伎 email null瑚? . 讌 ろ 蟯 覲 訖企. 蠏碁覩襦

  • 伎 email 譯殊 null企.
  • 伎 email 譯殊 admin@databaser.net 企
  • 蠏碁覩襦 null admin@databaser.net 企.

手 . (譬 願碓讌 .) 伎 1 = null 企手 螳蟆. 蠏碁る 1螻 NULL 螳り 覺狩? 蠏碁 '伎' null螻 螳り 覺狩? 蠏碁覩襦 '伎'螻 1 螳り 覺 ? 蠏碁る null 蠍碁 讌蟲, 螳 朱襦 '伎 = 螳'螳 . 語 覈 蟆 null る 蟆企. null 語 覈 蟆企手 る 覓伎 蟾? 覓願 . 蠏碁覩襦 null るジ 企 覃語 伎 襴曙 伎 蟆 襷蟆.

螳 譴 蟆 れ 朱 覦 螳 蟾 . 螳 A4讌 4~5 覿 螳語覲企ゼ 豌る 螳 覦 蟠蠏轟 覈 燕 蟾? 襷 襯 蟆企. 豢覯 る 蟆( 手鬼 , 貊, 襷 覃 讌 蟲覃 螳螳 覈 螳 瑚蟾讌 )願, 磯Μ 願 貉危一瑚 覦 蟆企. 讀, null 譟伎伎朱 ろ(貉危 瑚 覦) 螳ロる 詞願. 覦襦 null 螻 覈 一危郁 not null企朱 企蟾? 蠍 郁 螳襷企 一誤. れ 覦伎 貉危 瑚襦 蟆 (願 壱譯) 蟠蠏轟 覈 燕る NULL 譟伎 'る'螳 れ朱 蟆郁骸螳 蟾?

2 NULL 一 #

NULL螳 一一 覓危 觜訣. 蠍磯蓋朱 1 + NULL NULL願, NULL* 1 NULL願, NULL+ NULL NULL企. 螳 企 貎朱Μ襯 覲 蟆企.

--1
SELECT SUM(ISNULL(ROYALTY, 0)) FROM TITLES

--2
SELECT SUM(ROYALTY) FROM TITLES
貎朱Μ 蟆郁骸 NULL螳 蟇, 讌 蟇 轟壱 螳. 朱朱 螳 覲伎 轟壱 螳. ANSI 朱 一郁骸 讌螻一一 伎 るジ NULL螳 豌襴襯 蟠螻 螻, DBMS 轟壱 企ゼ 磯ゴ螻 . 螳 螳 伎 螻襯 蟲螻 , 蠏 譴 NULL螳 る, 覓企Μ り 企 NULL螳 覦 蠍 覓語 讌螻 NULL螳 れ 螻 . SUM() 蟆曙磯 螳朱 れ螻 螳 蠏 一一 覃 蠏 蟆郁骸 壱 殊. 企 蟆曙磯朱 NULL螳 覩碁ゼ 螻 蟆曙磯殊 襷. 蠏碁讌 る 襯 覈 ISNULL() 襯 伎 煙 蟆 蟆企.

--1
SELECT AVG(ISNULL(ROYALTY, 0)) FROM TITLES

--2
SELECT AVG(ROYALTY) FROM TITLES
覃 ISNULL 襯 伎 NULL 螳 0朱 豺蠍 覓語 蠏豺 麹 讌 蟆企 伎手鍵. 螳讌 蠍 蟆 COUNT(*) 企. COUNT() 朱朱 NULL螳 . NULL 螳讌 覿覈 願鍵 覓語 螳襯 碁 NULL螳 . 蠏碁 一れ 蟆 COUNT(*), COUNT(COLUMN_NAME)螻朱 襴 蟆郁骸螳 蠍 覓語企.

--1
SELECT COUNT(*) FROM TITLES      --蟆郁骸 18

--2
SELECT COUNT(ROYALTY) FROM TITLES--蟆郁骸 16

讀, COUNT(COLUMN_NAME) 蟆曙磯 NULL螳 誤螻 一一 . 譯殊蠍 覦. 襷 IS NULL 碁煙るゼ る讌 讌 襴. る狩伎 蟆曙 IS NULL企手 WHERE 覈覃 れ 覃, MSSQL SERVER 蟆曙磯 碁煙るゼ 蟆 .

NULL螳 覓朱Μ 一危磯伎れ 企. 蠏碁 れ 覈碁 詞 蟆郁骸螳 覓朱Μ朱 覦る れ 讌 襷 . 覓朱Μ朱 蟆 り骸 殊煙 螳讌 蟆 轟壱. れ 覓伎 豈 ろ 螳覦る 覈碁 蟆郁骸襯 覓伎蟇磯 覈碁 覈視 蟆願碓, 覈碁螳 覓企 襦 覈詩る 蟆磯企. 一危磯伎れ企 蠏語朱襦 豢ろ れ 覦伎 蟆企. 覓朱Μ朱 NULL Defualt襯 蟆 蟠ロ 蟆 襷ろ .

3 DBMS襷 るジ 一 #

MS-SQL Server 蟆曙 NULL 螳 螳朱 語. 讌襷 Oracle Server NULL 螳 螳朱 語. 一危一 襦 覓伎瑚 一一 る DBMS NULL 企至 豌襴讌 誤 覲 螳 蟆.