激战的后厨2观看完整版,強姦亂倫強姦在线观看,国产无套内射普通话对白,老头呻吟喘息硕大撞击,他扒开我小泬添我三男一女视频

廈門服務器租用>業界新聞>站群服務器MySQL的NULL和NOT NULL

站群服務器MySQL的NULL和NOT NULL

發布時間:2020/5/11 16:53:42    來源: 縱橫數據

站群服務器MySQL的NULL和NOT NULL
null和空值一樣么
首先,我們要搞清楚空值和 null 的概念:
空值是不占用空間的;
MySQL 中的 null 其實是占用空間的,下面是來自于 MYSQL 官方的解釋:
NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.
打個比方來說,你有一個杯子,空值代表杯子是真空的,NULL 代表杯子中裝滿了空氣,雖然杯子看起來都是空的,但是區別是很大的。
一個小栗子
搞清楚 “空值” 和 “NULL” 的概念之后,問題基本就明了了,我們搞個例子測試一下:
CREATE TABLE  `test` (
    `col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    `col2` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL
) ENGINE = MYISAM ;
問題 1:我字段類型是 not null,為什么我可以插入 空值?
執行下面的 SQL,發生錯誤,提示 Column 'col1' cannot be null。
INSERT INTO `test` VALUES ( null, 1);
再來一條,執行成功。
INSERT INTO `test` VALUES ('',1);
可見,NOT NULL 的字段是不能插入 NULL 的(這不是廢話么 ),只能插入 空值,上面的問題 1 也就有答案了。
問題 2:為什么 not null 的效率比 null 高?
對于問題 2,上面我們已經說過了,NULL 其實并不是空值,而是要占用空間,所以 mysql 在進行比較的時候,NULL 會參與字段比較,所以對效率有一部分影響。
而且 B 樹索引時不會存儲 NULL 值的,所以如果索引的字段可以為 NULL,索引的效率會下降很多。
問題 3:判斷字段不為空的時候,到底要 column<>'' 還是要用 column is not null 呢。
我們再向 test 的表中插入幾條數據:
INSERT INTO `test` VALUES ('', NULL);
INSERT INTO `test` VALUES ('1', '2');
現在根據需求,我要統計 test 表中 col1 不為空的所有數據,我是該用 <>'' 還是 IS NOT NULL 呢,讓我們來看一下結果的區別。
--------------------------------
縱橫數據新上的美國站群服務器8C 現貨
限量特價 速定! cn2限量一人3臺
E5 16G 1T 8C 232IP  
E5*2 32G 1T 8C 232IP
E5*2 32G 2T 8C 232IP  
E5*2 32G 3T 8C 232IP
美國站群服務器 站群服務器 歡迎在線客服  QQ 4001886560  482986990

在線客服
微信公眾號
免費撥打400-1886560
免費撥打0592-5580190 免費撥打 400-1886560 或 0592-5580190
返回頂部
返回頭部 返回頂部