可以的,有顯式和隱式兩種插入空值方式(前提是該字段未設置默認值且允許為空)。
網站建設哪家好,找創新互聯公司!專注于網頁設計、網站建設、微信開發、微信小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了蘇家屯免費建站歡迎大家使用!
例如 t1(id auto_increment primary key,sname varchar(10) not null, address varchar(100))
-- 顯式方式向地址字段插入空值
insert into t1 (sname,address) valuse('John',null);
-- 隱式方式向地址字段插入空值
insert into t1 (sname) valuse('John');
當原始數據中的字段為空且未定義時,MySQL由于某種原因不會使用列默認值(為NULL),而是使用零。當字段全部丟失時,正確使用NULL。定義:空值(NULL)的長度是NULL,不確定占用了多少存儲空間,但是占用存儲空間的空字符串('')的長度是0,是不占用空間的通俗的講:空字符串('')就像是一個真空轉態杯子,什么都沒有。
空值(NULL)就像是一個裝滿空氣的杯子,含有東西。二者雖然看起來都是空的、透明的,但是有著本質的區別。
因為空值和null值的定義,但是我們查詢時如何正確區分出空值和null值還有很多細節問題應該如何區分NULL值與任何其他值相比都是不正確的,比較結果都為NULL,無法獲取到實際意義.如果需要搜索NULL值,不能寫成 字段 = NULL,這樣寫不正確,可以使用 字段 = IS NULL或 字段 = ''空值.聚合函數,如COUNT(),MIN(),SUM()在進行查詢時會忽略掉null值在SQL中,NULL值與任何其它值的比較(即使是NULL)永遠不會為“真”。包含NULL的表達式總是會導出NULL值,除非在關于操作符的文檔中以及表達式的函數中作了其他規定。下述示例中的所有列均返回NULL:如果打算搜索列值為NULL的列,不能使用expr = NULL 如果往這個數據類型的列中插入Null值,則其代表的就是系統的當前時間具auto_increment屬性的列如果往這屬性的列中插入Null值的話,則系統會插入一個正整數序列而如果在其他數據類型中,如字符型數據的列中插入Null的數據,則其插入的就是一個空值。對此的例外是COUNT(*),它將計數行而不是單獨的列值。例如,下述語句產生兩個計數。首先計數表中的行數,其次計數value列中的非NULL值數目可以看出null值參與運算后結果都是null,官方對于布爾運算值的描述是這樣的:在MySQL中 0或null代表false,任何其他值都是true(在where測試中數字其他值都代表true),布爾運算的默認真值是1;
在GROUP BY中根據列值對結果進行分組,如果列的值為NULL,兩個NULL值將會被分在一組,下面我們做個測試。如果根據排序條件的列進行排序,那么使用order by desc NULL值將會被最后展示,如果根據ASC排序,那么null值將會首先被展示,空值是一個比較特殊的字段。在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值的數據忽略掉了。
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關鍵字
lishixinzhi/Article/program/MySQL/201311/29455
當前標題:mysql空值怎么設置 mysql空值和null
文章位置:http://m.newbst.com/article48/dojeshp.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、云服務器、動態網站、關鍵詞優化、軟件開發、ChatGPT
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯