最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql數(shù)據(jù)NULL避坑指南分享

 更新時(shí)間:2024年05月01日 09:00:53   作者:fengchengwu2012  
這篇文章主要介紹了mysql數(shù)據(jù)NULL避坑指南,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

NULL空值是mysql中一種特殊的數(shù)據(jù)值(即"缺少的未知值"),NULL和字符串空值不是一回事,處理NULL與其他值不同,下面具體闡述相關(guān)差異:

一、NULL運(yùn)算符

1、普通數(shù)據(jù)

普通數(shù)據(jù)使用 > 、< 、=即可做常用的邏輯運(yùn)算如下:

SELECT  1>2, 1<2 ,1=2,1<>2;

執(zhí)行結(jié)果:

如果使用 > 、< 、= 對(duì)NULL進(jìn)行運(yùn)算,那么會(huì)是什么結(jié)果

SELECT  1>NULL, 1<NULL,1=NULL,1<>NULL;

執(zhí)行結(jié)果:

通過(guò)實(shí)驗(yàn)結(jié)果可知,正常的 > < = 是無(wú)法對(duì)NULL就行運(yùn)算操作的,因此在日常開發(fā)中,如果使用一個(gè)NULL值做> < 過(guò)濾查詢,過(guò)濾條件將無(wú)法生效,接下來(lái)具體研究NULL的運(yùn)算符。

2、 IS NULL 和 IS NOT NULL

對(duì)于NULL的運(yùn)算mysql提供了IS NULL 、IS NOT NULL函數(shù)進(jìn)行處理

 SELECT  NULL  IS NULL , NULL  IS NOT NULL, 1 IS NULL, 1 IS NOT NULL;

二、NULL 查詢優(yōu)化

對(duì)于某列字段存在大量NULL值,而此列字段不得不加索引,那么使用 IS NULL 、IS NOT NULL 可以提高查詢效率。

創(chuàng)建一張t_staff表:

CREATE TABLE `t_staff11`  (
  `staff_no` varchar(30)  COMMENT '職工號(hào)',
  `staff_name` varchar(10) COMMENT '職工姓名',
  `staff_sex` char(1)  COMMENT '性別(1男,2女)',
  `password` varchar(255)  COMMENT '密碼',
  `update_time` datetime(0)  COMMENT '更新時(shí)間',
  `status` char(1)  DEFAULT '0' COMMENT '帳號(hào)狀態(tài)(0正常 1停用)',
  `del_flag` char(1)  DEFAULT '0' COMMENT '刪除標(biāo)志(0代表存在 2代表刪除)',
  `balance` decimal(10, 2)  COMMENT '卡余額'
) ENGINE = InnoDB CHARACTER SET = utf8mb4; 

插入測(cè)試數(shù)據(jù):

INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (71, '韓杰', NULL, 'a5646cc4c84c996ca6620e7d403d6666', NULL, NULL, '0', 1439.20);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (113, '高秀麗', NULL, '82ad07da3d6a7a22d443aa7bd646910d', NULL, NULL, '0', 20.03);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (121, '范嶸', NULL, 'fb207643a9ea6f52b3664f9ecf99bc0a', '2020-07-08 07:30:49', NULL, '0', 673.05);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (160, '馬春霞', NULL, 'fa348453e2bebb83452bbd0a304f57ae', NULL, NULL, '0', 196.20);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (161, '何愛(ài)蓮', '1', '9a236449276f8218a8ac5f5b9b194fd0', NULL, NULL, '0', 380.19);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (171, '馮文靜', '1', '414781c1fca2da7e682176aa5849ee2f', NULL, NULL, '0', 490.17);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (175, '許春景', '2', '2b32513984f4bb87a9f8c3270bc1d271', NULL, NULL, '0', 415.10);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (181, '王方', '2', '23dea74889375b09b46f41639559164e', '2020-07-09 09:20:12', NULL, '0', 14.80);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (182, '劉瑞雪', NULL, 'ef3c90bbd1366194c5f6760b1e832616', NULL, NULL, '0', 595.40);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (218, '陸寓非', NULL, '31ad4cf6368c8b04edded92d660e105f', NULL, NULL, '0', 573.30);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (227, '安鳳偉', NULL, 'c84d9c929ffe7810470952deccd0f9d8', NULL, NULL, '0', 1412.90);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (234, '張麗', NULL, 'da2e045d2c028960b6f4e4712635032c', NULL, NULL, '0', 381.03);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (267, '沈彩霞', NULL, '0f984f9f5fe54eed031fa6079aa27307', NULL, NULL, '0', 3252.77);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (289, '王東梅', NULL, 'c6666174b32e7555a9557800721d35c7', NULL, NULL, '0', 240.46);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (333, '鄒梅', NULL, 'c8acdc2e4824cbf6ac51a7ea76f1f2e6', NULL, NULL, '0', 2223.70);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (339, '董蓓', NULL, '009c26ababd97b0cdb8f277d8c20beee', NULL, NULL, '0', 526.90);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (361, '羅素霞', NULL, '2a089e222d3547b7b60eef4810488f59', NULL, NULL, '0', 2941.00);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (366, '趙艷秋', NULL, '848b0d4e401ceb2d4b01ce74ca5c2b65', NULL, NULL, '0', 1331.91);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (372, '王玉琴', NULL, 'c7453dbe0269a3ae79ba5094f66d050d', NULL, NULL, '0', 3139.20);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (388, '張艷玲', NULL, '2336b05aef2565f62afeba502e545358', NULL, NULL, '0', 602.45);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (390, '郭艷璟', NULL, 'b2f8c3fab16fb554887621e46365862e', '2020-05-19 21:04:25', NULL, '0', 5.50);
INSERT INTO`t_staff`(`staff_no`, `staff_name`, `staff_sex`, `password`, `update_time`, `status`, `del_flag`, `balance`) VALUES (392, '王麗', NULL, 'bf3925cd423c9dc6a911fa32772e4e70', NULL, NULL, '0', 254.79);

由于satf_sex字段存在大兩空值,在其列加索引

ALTER  TABLE  t_staff  ADD  INDEX  sexIndex(staff_sex);

查詢staff_sex為1的數(shù)據(jù);

1、普通等號(hào)(=)查詢

EXPLAIN  SELECT  *  FROM  t_staff WHERE staff_sex =1;

執(zhí)行結(jié)果如下:

明明在staff_sex列加索引了,為啥不走索引全表掃描呢,這就就NULL搞的鬼。

2、IS NOT NULL 查詢

EXPLAIN  SELECT  *  FROM  t_staff WHERE  staff_sex IS NOT NULL  AND  staff_sex =1;

查看執(zhí)行結(jié)果:

這一次查詢索引生效,大大的提高查詢效率。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于B+樹的使用及說(shuō)明

    關(guān)于B+樹的使用及說(shuō)明

    這篇文章主要介紹了關(guān)于B+樹的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • mysql 5.1版本修改密碼及遠(yuǎn)程登錄mysql數(shù)據(jù)庫(kù)的方法

    mysql 5.1版本修改密碼及遠(yuǎn)程登錄mysql數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了mysql 5.1版本修改密碼及遠(yuǎn)程登錄mysql數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考下
    2017-04-04
  • PostgreSQL與MySQL區(qū)別全面對(duì)比詳析

    PostgreSQL與MySQL區(qū)別全面對(duì)比詳析

    MySQL和PostgreSQL都是強(qiáng)大的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),但它們適用于不同的用例和需求,下面這篇文章主要介紹了PostgreSQL與MySQL區(qū)別全面對(duì)比的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-12-12
  • MySQL中如何添加新字段

    MySQL中如何添加新字段

    這篇文章主要介紹了MySQL中如何添加新字段方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • MySQL之臨時(shí)表的實(shí)現(xiàn)示例

    MySQL之臨時(shí)表的實(shí)現(xiàn)示例

    MySQL臨時(shí)表是存儲(chǔ)在內(nèi)存或者磁盤上的臨時(shí)數(shù)據(jù)表,它們的生命周期只限于當(dāng)前數(shù)據(jù)庫(kù)會(huì)話,臨時(shí)表的創(chuàng)建和使用方式與普通表類似,本文就詳細(xì)的介紹了MySQL之臨時(shí)表,感興趣的可以了解一下
    2023-08-08
  • MySQL創(chuàng)建數(shù)據(jù)庫(kù)和創(chuàng)建數(shù)據(jù)表

    MySQL創(chuàng)建數(shù)據(jù)庫(kù)和創(chuàng)建數(shù)據(jù)表

    MySQL?是最常用的數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)操作中,基本都是增刪改查操作,簡(jiǎn)稱CRUD。但是,這篇文章主要介紹了數(shù)據(jù)庫(kù)和數(shù)據(jù)表如何創(chuàng)建,想詳細(xì)了解的小伙伴可以參考閱讀一下
    2023-03-03
  • MySQL解析JSON格式字段并取出部分值方式

    MySQL解析JSON格式字段并取出部分值方式

    這篇文章主要介紹了MySQL解析JSON格式字段并取出部分值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Win10環(huán)境下安裝Mysql5.7.23問(wèn)題及遇到的坑

    Win10環(huán)境下安裝Mysql5.7.23問(wèn)題及遇到的坑

    這篇文章主要介紹了Win10環(huán)境下安裝Mysql5.7.23問(wèn)題及遇到的坑,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Mysql 命令行模式訪問(wèn)操作mysql數(shù)據(jù)庫(kù)操作

    Mysql 命令行模式訪問(wèn)操作mysql數(shù)據(jù)庫(kù)操作

    這篇文章主要介紹了Mysql 命令行模式訪問(wèn)操作mysql數(shù)據(jù)庫(kù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 如何使用分區(qū)處理MySQL的億級(jí)數(shù)據(jù)優(yōu)化

    如何使用分區(qū)處理MySQL的億級(jí)數(shù)據(jù)優(yōu)化

    mysql在查詢上千萬(wàn)級(jí)數(shù)據(jù)的時(shí)候,通過(guò)索引可以解決大部分查詢優(yōu)化問(wèn)題。但是在處理上億數(shù)據(jù)的時(shí)候,應(yīng)該怎么解決,本文就是用分區(qū)來(lái)優(yōu)化一下,感興趣的一起來(lái)了解一下
    2021-06-06

最新評(píng)論

桦川县| 宜宾市| 宝清县| 社旗县| 金堂县| 渝北区| 平罗县| 个旧市| 南投市| 仪陇县| 安丘市| 汶上县| 开原市| 玉田县| 洛川县| 应城市| 北海市| 惠安县| 尼勒克县| 集贤县| 子长县| 古田县| 时尚| 镇巴县| 苍南县| 沙湾县| 屯昌县| 东乡| 永新县| 四平市| 桐柏县| 景宁| 山东省| 且末县| 赣榆县| 淮阳县| 永平县| 文安县| 灵璧县| 龙岩市| 卢氏县|