电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL null的一些易錯點

瀏覽:4日期:2023-10-07 15:19:23

依據null-values,MySQL的值為null的意思只是代表沒有數據,null值和某種類型的零值是兩碼事,比如int類型的零值為0,字符串的零值為””,但是它們依然是有數據的,不是null.

我們在保存數據的時候,習慣性的把暫時沒有的數據記為null,表示當前我們無法提供有效的信息.

不過使用null但是時候,需要我們注意一些問題.對此MySQL文檔說明如下: problems-with-null

使用null的易錯點

下面我摘取MySQL官方給出的null的易錯點做講解.

對MySQL不熟悉的人很容易搞混null和零值

The concept of the NULL value is a common source of confusion for newcomers to SQL

比如下面這2句SQL產生的數據是獨立的

mysql> INSERT INTO my_table (phone) VALUES (NULL);mysql> INSERT INTO my_table (phone) VALUES (’’);

第一句SQL只是表示暫時不知道電話號碼是多少,第二句是電話號碼知道并且記錄為’’

Both statements insert a value into the phone column, but the first inserts a NULL value and the second inserts an empty string. The meaning of the first can be regarded as “phone number is not known” and the meaning of the second can be regarded as “the person is known to have no phone, and thus no phone number.”

對null的邏輯判斷要單獨處理

對于是否為null的判斷必須使用專門的語法IS NULL,IS NOT NULL,IFNULL().

To help with NULL handling, you can use the IS NULL and IS NOT NULL operators and the IFNULL() function.

如果你使用=判斷,那么永遠是false

In SQL, the NULL value is never true in comparison to any other value, even NULL

To search for column values that are NULL, you cannot use an expr = NULL test. The following statement returns no rows, because expr = NULL is never true

比如你這樣寫,where后判斷的結果永不會是true:

SELECT * FROM my_table WHERE phone = NULL;

如果你使用null和其他數據做計算,那么結果永遠是null,除非MySQL文檔對某些操作做了額外的特殊說明

An expression that contains NULL always produces a NULL value unless otherwise indicated in the documentation for the operators and functions involved in the expression

例如:

mysql> SELECT NULL, 1+NULL, CONCAT(’Invisible’,NULL);+------+--------+--------------------------+| NULL | 1+NULL | CONCAT(’Invisible’,NULL) |+------+--------+--------------------------+| NULL | NULL | NULL |+------+--------+--------------------------+1 row in set (0.00 sec)

所以你要對null做邏輯判斷,還是乖乖的使用IS NULL

To look for NULL values, you must use the IS NULL test對有null值的列做索引要額外預料到隱藏的細節

只有InnoDB,MyISAM,MEMORY 存儲引擎支持給帶有null值的列做索引

You can add an index on a column that can have NULL values if you are using the MyISAM, InnoDB, or MEMORY storage engine. Otherwise, you must declare an indexed column NOT NULL, and you cannot insert NULL into the column.

索引的長度會比普通索引大1,也就是略微耗內存點

Due to the key storage format, the key length is one greater for a column that can be NULL than for a NOT NULL column.

對null值做分組,去重,排序會被特殊對待

和上文講的=null永遠是false相反,這時null 被認為是相等的.

When using DISTINCT, GROUP BY, or ORDER BY, all NULL values are regarded as equal.

對null排序會被特殊對待

null值要么被排在最前面,要么最后面

When using ORDER BY, NULL values are presented first, or last if you specify DESC to sort in descending order.

聚合操作時null被忽略

Aggregate (group) functions such as COUNT(), MIN(), and SUM() ignore NULL values

例如count(*)不會統計值為null的數據.

The exception to this is COUNT(*), which counts rows and not individual column values. For example, the following statement produces two counts. The first is a count of the number of rows in the table, and the second is a count of the number of non-NULL values in the age column:

mysql> SELECT COUNT(*), COUNT(age) FROM person;

以上就是MySQL null的一些易錯點的詳細內容,更多關于MySQL null的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 打孔器,打孔钳厂家【温州新星德牌五金工具】 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 高柔性拖链电缆_卷筒电缆_耐磨耐折聚氨酯电缆-玖泰特种电缆 | 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 硫酸钡厂家_高光沉淀硫酸钡价格-河南钡丰化工有限公司 | 上海阳光泵业制造有限公司 -【官方网站】| 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 宁波普瑞思邻苯二甲酸盐检测仪,ROHS2.0检测设备,ROHS2.0测试仪厂家 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 上海赞永| 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 求是网 - 思想建党 理论强党 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 数年网路-免费在线工具您的在线工具箱-shuyear.com | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 地图标注|微信高德百度地图标注|地图标记-做地图[ZuoMap.com] | 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 针焰试验仪,灼热丝试验仪,漏电起痕试验仪,水平垂直燃烧试验仪 - 苏州亚诺天下仪器有限公司 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 电地暖-电采暖-发热膜-石墨烯电热膜品牌加盟-暖季地暖厂家 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 |