① 資料庫中的空值與NULL的區別以及python中的NaN和None
null表示:不可用、未賦值、不知道、不適用,它既不是0也不是空格。記住:一個數值與null進行四則運算,其結果是null
空值和null的區別在於,在做count計算的時候:count(field_name),field_name的值為空值也會被計算在裡面(這一行統計有效),而null不會
python有兩種方式獲取數據:
1.
一種是把數據從mysql
中導出到txt或者csv,然後本地讀取;
2.
另一種是python直接鏈接資料庫,讀取數據;
第一種把數據從mysql導出後,python讀取時,空值和null在文件中都為null;python讀取之後為nan
第二種鏈接資料庫後,python能讀取表結構,資料庫的null對應列表中的none以及pandas中的nan(如果欄位類型是時間,則為nat)。而資料庫中的空字元,則被識別為空字元。
② 關於資料庫的分類!!
不完全是
■關系資料庫 facts and information
關系資料庫是建立在集合代數基礎上,應用數學方法來處理資料庫中的數據。現實世界中的各種實體以及實體之間的各種聯系均用關系模型來表示。
關系模型由關系數據結構、關系操作集合、關系完整性約束三部分組成。
全關系系統十二准則
全關系系統應該完全支持關系模型的所有特徵。關系模型的奠基人E.F.Codd具體地給出了全關系系統應遵循的基本准則。
;''准則0'' : 一個關系形的關系資料庫系統必須能完全通過它的關系能力來管理資料庫。
;''准則1'' 信息准則 : 關系資料庫系統的所有信息都應該在邏輯一級上用表中的值這一種方法顯式的表示。
;''准則2'' 保證訪問准則 : 依靠表名、主碼和列名的組合,保證能以邏輯方式訪問關系資料庫中的每個數據項。
;''准則3'' 空值的系統化處理 : 全關系的關系資料庫系統支持空值的概念,並用系統化的方法處理空值。
;''准則4'' 基於關系模型的動態的聯機數據字典 : 資料庫的描述在邏輯級上和普通數據採用同樣的表述方式。
;''准則5'' 統一的數據子語言 :
一個關系資料庫系統可以具有幾種語言和多種終端訪問方式,但必須有一種語言,它的語句可以表示為嚴格語法規定的字元串,並能全面的支持各種規則。
;''准則6'' 視圖更新准則 : 所有理論上可更新的視圖也應該允許由系統更新。
;''准則7'' 高級的插入、修改和刪除操作 : 系統應該對各種操作進行查詢優化。
;''准則8'' 數據的物理獨立性 : 無論資料庫的數據在存儲表示或存取方法上作任何變化,應用程序和終端活動都保持邏輯上的不變性。
;''准則9'' 數據邏輯獨立性 : 當對基本關系進行理論上信息不受損害的任何改變時,應用程序和終端活動都保持邏輯上的不變性。
;''准則10'' 數據完整的獨立性 : 關系資料庫的完整性約束條件必須是用資料庫語言定義並存儲在數據字典中的。
;''准則11'' 分布獨立性 : 關系資料庫系統在引入分布數據或數據重新分布時保持邏輯不變。
;''准則12'' 無破壞准則 : 如果一個關系資料庫系統具有一個低級語言,那麼這個低級語言不能違背或繞過完整性准則。
■實時資料庫是資料庫系統發展的一個分支,它適用於處理不斷更新的快速變化的數據及具有時間限制的事務處理。實時資料庫技術是實時系統和資料庫技術相結合的產物,研究人員希望利用資料庫技術來解決實時系統中的數據管理問題,同時利用實時技術為實時資料庫提供時間驅動調度和資源分配演算法。然而,實時資料庫並非是兩者在概念、結構和方法上的簡單集成。需要針對不同的應用需求和應用特點,對實時數據模型、實時事務調度與資源分配策略、實時數據查詢語言、實時數據通信等大量問題作深入的理論研究。實時資料庫系統的主要研究內容包括:
實時資料庫模型
實時事務調度:包括並發控制、沖突解決、死鎖等內容
容錯性與錯誤恢復
訪問准入控制
內存組織與管理
I/O與磁碟調度
主內存資料庫系統
不精確計算問題
放鬆的可串列化問題
實時SQL
實時事務的可預測性
研究現狀與發展實時資料庫系統最早出現在1988年3月的ACM SIGMOD Record的一期專刊中。隨後,一個成熟的研究群體逐漸出現,這標志著實時領域與資料庫領域的融合,標志著實時資料庫這個新興研究領域的確立。此後,出現了大批有關實時資料庫方面的論文和原型系統。人機交互技術與智能信息處理實驗室實時資料庫小組一直致力於實時系統、實時智能、實時資料庫系統及相關技術的研究與開發,並取得了一定的成績。
③ 資料庫欄位可以為空,指的是什麼
1、真正的空值,也就是「沒有輸入的值」,可以出現在大多數類型的欄位中(如果沒有別的約束條件),SQL server中表示為null,顯示為<NULL>,手工在SQL server企業管理器中輸入的方法是按Ctrl+0。它在.NET中對應System.DBNull.Value。在T-SQL命令中,判斷一個值是不是空值,要用「is null」而不是「= null」;處理空值有個ISNULL函數,它使用指定的值替換null。用ADO.NET從資料庫得到的空值無法自動轉化為空字元串或Nothing,須手動檢測:如果得到System.DBNull.Value,則賦給數據對象Nothing或其它自定義的有意義的值。
2、空字元串(零長度字元串),只出現在字元串類型(如nvarchar)的欄位中,SQL server中表示為'',顯示為空白,手工在SQL server企業管理器中輸入時清空一個單元格即可。它在.NET中對應System.String.Empty,也就是我們常用的""。在T-SQL命令中處理空字元串和處理一般的字元串沒什麼區別。用ADO.NET從資料庫得到的空字元串也和一般的字元串沒什麼區別。
資料庫設計里的非空都是 null
④ 關於資料庫的分類!!
不完全是
■關系資料庫 facts and information
關系資料庫是建立在集合代數基礎上,應用數學方法來處理資料庫中的數據。現實世界中的各種實體以及實體之間的各種聯系均用關系模型來表示。
關系模型由關系數據結構、關系操作集合、關系完整性約束三部分組成。
全關系系統十二准則
全關系系統應該完全支持關系模型的所有特徵。關系模型的奠基人E.F.Codd具體地給出了全關系系統應遵循的基本准則。
;''准則0'' : 一個關系形的關系資料庫系統必須能完全通過它的關系能力來管理資料庫。
;''准則1'' 信息准則 : 關系資料庫系統的所有信息都應該在邏輯一級上用表中的值這一種方法顯式的表示。
;''准則2'' 保證訪問准則 : 依靠表名、主碼和列名的組合,保證能以邏輯方式訪問關系資料庫中的每個數據項。
;''准則3'' 空值的系統化處理 : 全關系的關系資料庫系統支持空值的概念,並用系統化的方法處理空值。
;''准則4'' 基於關系模型的動態的聯機數據字典 : 資料庫的描述在邏輯級上和普通數據採用同樣的表述方式。
;''准則5'' 統一的數據子語言 :
一個關系資料庫系統可以具有幾種語言和多種終端訪問方式,但必須有一種語言,它的語句可以表示為嚴格語法規定的字元串,並能全面的支持各種規則。
;''准則6'' 視圖更新准則 : 所有理論上可更新的視圖也應該允許由系統更新。
;''准則7'' 高級的插入、修改和刪除操作 : 系統應該對各種操作進行查詢優化。
;''准則8'' 數據的物理獨立性 : 無論資料庫的數據在存儲表示或存取方法上作任何變化,應用程序和終端活動都保持邏輯上的不變性。
;''准則9'' 數據邏輯獨立性 : 當對基本關系進行理論上信息不受損害的任何改變時,應用程序和終端活動都保持邏輯上的不變性。
;''准則10'' 數據完整的獨立性 : 關系資料庫的完整性約束條件必須是用資料庫語言定義並存儲在數據字典中的。
;''准則11'' 分布獨立性 : 關系資料庫系統在引入分布數據或數據重新分布時保持邏輯不變。
;''准則12'' 無破壞准則 : 如果一個關系資料庫系統具有一個低級語言,那麼這個低級語言不能違背或繞過完整性准則。
■實時資料庫是資料庫系統發展的一個分支,它適用於處理不斷更新的快速變化的數據及具有時間限制的事務處理。實時資料庫技術是實時系統和資料庫技術相結合的產物,研究人員希望利用資料庫技術來解決實時系統中的數據管理問題,同時利用實時技術為實時資料庫提供時間驅動調度和資源分配演算法。然而,實時資料庫並非是兩者在概念、結構和方法上的簡單集成。需要針對不同的應用需求和應用特點,對實時數據模型、實時事務調度與資源分配策略、實時數據查詢語言、實時數據通信等大量問題作深入的理論研究。實時資料庫系統的主要研究內容包括:
實時資料庫模型
實時事務調度:包括並發控制、沖突解決、死鎖等內容
容錯性與錯誤恢復
訪問准入控制
內存組織與管理
I/O與磁碟調度
主內存資料庫系統
不精確計算問題
放鬆的可串列化問題
實時SQL
實時事務的可預測性
研究現狀與發展實時資料庫系統最早出現在1988年3月的ACM SIGMOD Record的一期專刊中。隨後,一個成熟的研究群體逐漸出現,這標志著實時領域與資料庫領域的融合,標志著實時資料庫這個新興研究領域的確立。此後,出現了大批有關實時資料庫方面的論文和原型系統。人機交互技術與智能信息處理實驗室實時資料庫小組一直致力於實時系統、實時智能、實時資料庫系統及相關技術的研究與開發,並取得了一定的成績。
⑤ 資料庫中空值的含義
資料庫中空值的含義, 就是相當於 「不知道」 的含義。
例如有一個 員工表。
包含下面這些列:
員工代碼 NOT NULL,
員工姓名 NOT NULL,
員工生日,
員工籍貫,
......
其中, 員工代碼 與 員工姓名 是 非空的, 那麼必須有數據。 不能說 「不知道」。
而 員工生日 與 員工籍貫 是 可以為空的, 那麼 允許不寫數據, 也就是 可以 「不知道」
例如數據:
員工代碼 員工姓名 員工生日 員工籍貫
TESTSH01 張三 NULL 上海
TESTSH02 李四 1988-8-8 NULL
⑥ MySQL 中NULL和空值的區別
"空值"是對null值的中文叫法,兩者同指一個東西。
我想樓主是想弄清楚null(空值)與零長度字元串''(或稱為空字元串)之間的區別。
在代碼里"零長度字元串"用一對沒有間隔的英文引號''表示,它的數據類型是明確的即屬於字元型,存儲"零長度字元串"是要佔用物理磁碟空間的;
而null值其數據類型是未知的,它不會佔用物理磁碟空間。
在不存在約束限制的情況我們可以將Null值插入任何數據類型的欄位里,而零長度字元串''只能插入到字元型數據類型欄位中,插入其它類型欄位會報錯。
我們通過實測看看null(空值)與零長度字元串''(或稱為空字元長)之間的區別:
1)輸出所有的記錄
select * from students;
注意:此例只要不含Null值的記錄都予以輸出
⑦ 在資料庫欄位為not null中為什麼可以插入空值
這是因為,在SQL SERVER中NULL跟''是完全不一樣的,NULL表示未知,沒有類型可言,而''是有類型的,表示一個空的字元串。
所以有not null約束的列是可以插入''的。而且,有時候做判斷的時候可能某個列既有NULL值又有''值,這時候就經常用 where isnull(列名,'')=''進行判斷。然而在ORACLE中,''是等同於NULL值進行處理的,這時候有not null約束的列就不能插入''了。
(7)資料庫技術為什麼要引入空值概念擴展閱讀:
comment的作用是為表創建注釋。 not null表示該欄位不允許為空。 這是一條固定的聲明,即為表創建的注釋不允許為空。 如果將其更改為comment null,則表示其可以為空。
資料庫管理系統是資料庫系統的核心組件,主要完成資料庫的操作和管理功能,實現資料庫對象的創建,資料庫存儲數據的查詢,添加,修改和刪除操作, 以及資料庫的用戶管理和許可權管理等。
⑧ 「NULL」為什麼在計算機中表示空值
在編程中,變數以NULL結尾,表示其後沒有可用的數據,數據讀取在此結束。 Null在資料庫中表示 不知道(Unknown) 的數據,主要有3種意思: 1)知道數據存在,但不知道具體值 2)不知道數據是否存在 3)數據不存在
⑨ null和空值,零有什麼區別
null、空值和零的區別如下:
1、對象的內容不同
null表示對象的內容為空,即對象的內容是空白的。
空值表示對象的內容無法確定。
零表示對象的內容確定為零。
2、對象的值不同
null表示對象計算中具有保留的值,用於指示指針不引用有效對象。
空值表示值未知,空值一般表示數據未知、不適用或將在以後添加數據。
零表示對象的值等於零。
(9)資料庫技術為什麼要引入空值概念擴展閱讀
null的表示方法:
null(空字元)通常表示為源代碼字元串字元或字元常量中的轉義序列。在許多語言,這不是一個單獨的轉義序列,而是八進制轉義序列,單個八進制數字為0。
因此,『 』不能跟隨任何數字0通過7,否則它被解釋為更長的八進制轉義序列的開始。被在使用中發現各種語言的其他轉義序列 00,x00,z,或的Unicode表示u0000。
⑩ mysql null和空的區別
MySQL資料庫是一個基於結構化數據的開源資料庫。SQL語句是MySQL資料庫中核心語言。不過在MySQL資料庫中執行SQL語句,需要小心兩個陷阱。
陷阱一:空值不一定為空
空值是一個比較特殊的欄位。在MySQL資料庫中,在不同的情形下,空值往往代表不同的含義。這是MySQL資料庫的一種特性。如在普通的欄位中(字元型的數據),空值就是表示空值。但是如果將一個空值的數據插入到TimesTamp類型的欄位中,空值就不一定為空。此時為出現什麼情況呢
我先創建了一個表。在這個表中有兩個欄位:User_id(其數據類型是int)、Date(其數據類型是TimesTamp)。現在往這個表中插入一條記錄,其中往Date欄位中插入的是一個NULL空值。可是當我們查詢時,其結果顯示的卻是插入記錄的當前時間。這是怎麼一回事呢?其實這就是在MySQL資料庫中執行SQL語句時經常會遇到的一個陷阱:空值不一定為空。在操作時,明明插入的是一個空值的數據,但是最後查詢得到的卻不是一個空值。
在MySQL資料庫中,NULL對於一些特殊類型的列來說,其代表了一種特殊的含義,而不僅僅是一個空值。對於這些特殊類型的列,各位讀者主要是要記住兩個。一個就是筆者上面舉的TimesTamp數據類型。如果往這個數據類型的列中插入Null值,則其代表的就是系統的當前時間。另外一個是具有auto_increment屬性的列。如果往這屬性的列中插入Null值的話,則系統會插入一個正整數序列。而如果在其他數據類型中,如字元型數據的列中插入Null的數據,則其插入的就是一個空值。
陷阱二:空值不一定等於空字元
在MySQL中,空值(Null)與空字元(』』)相同嗎?答案是否定的。
在同一個資料庫表中,同時插入一個Null值的數據和一個』』空字元的數據,然後利用Select語句進行查詢。顯然其顯示的結果是不相同的。從這個結果中就可以看出,空值不等於空字元。這就是在MySQL中執行SQL語句遇到的第二個陷阱。在實際工作中,空值數據與空字元往往表示不同的含義。資料庫管理員可以根據實際的需要來進行選擇。如對於電話號碼等欄位,可以默認設置為空值(表示根本不知道對方的電話號碼)或者設置為空字元(表示後來取消了這個號碼)等等。由於他們在資料庫中會有不同的表現形式,所以資料庫管理員需要區別對待。筆者更加喜歡使用空值,而不是空字元。這主要是因為針對空值這個數據類型有幾個比較特殊的運算字元。如果某個欄位是空字元,資料庫中是利用欄位名稱來代替。相反,如果插入的是空值,則直接顯示的是NULL。這跟其他資料庫的顯示方式也是不同的。
一是IS NULL 和IS NOT NULL關鍵字。如果要判斷某個欄位是否含用空值的數據,需要使用特殊的關鍵字。其中前者表示這個欄位為空,後者表示這個欄位為非空。在Select語句的查詢條件中這兩個關鍵字非常的有用。如需要查詢所有電話號碼為空的用戶(需要他們補充電話號碼信息),就可以在查詢條件中加入is not null關鍵字。
二是Count等統計函數,在空值上也有特殊的應用。如現在需要統計用戶信息表中有電話號碼的用戶數量,此時就可以使用count函數、同時將電話號碼作為參數來使用。因為在統計過程中,這個函數會自動忽略空值的數據。此時統計出來的就是有電話號碼的用戶信息。如果採用的是空字元的數據,則這個函數會將其統計進去。統計剛才建立的兩條記錄時,系統統計的結果是1,而不是2。可見系統自動將Null值的數據忽略掉了。
判斷NULL用is null 或者 is not null。 sql語句里可以用ifnull函數來處理
判斷空字元串『』,要用 ='' 或者 <>''。sql語句里可以用if(col,col,0)處理,即:當col為true時(非null,及非'')顯示,否則列印0