美高梅官方网站3045-mgm6608美高梅app下载
mysql null注意事项

mysql null注意事项

作者:美高梅官方网站3045    来源:未知    发布时间:2019-11-30 04:10    浏览量:

转自:http://www.maomao365.com/?p=6873

在mysql中null满含了not null与if null或等等,下边小编来给大家介绍在mysql中null的注意事项与应用方法,希望对大家能具备助于。

空值不自然为空

摘要:
下文通过案例深入分析in 关键字在值为null的接受比如,
浅析出not in关键字在null值发生的要命消息
如下所示:

SELECT NULL =0, NULL =12345, NULL <>12345, NULL +12345, NULL || ‘abc’, NULL = NULL , NULL <> NULL , NULL AND TRUE , NULL AND FALSE , NULL OR FALSE , NULL OR TRUE , NOT (NULL);

  空值是五个相比优异的字段。在mysql教程数据库教程中,在不相同的境况下,空值往往代表差别的含义。这是mysql数据库的大器晚成种特色。如在经常的字段中(字符型的数目卡塔尔(英语:State of Qatar),空值就是代表空值。可是只要将叁个空值的数码插入到timestamp类型的字段中,空值就不必然为空。那个时候为现身哪些处境呢(如下图)?

CREATE TABLE testA(keyId INT)
CREATE TABLE testB(keyId INT)
GO
INSERT INTO testA(keyId) VALUES (1)
INSERT INTO testA(keyId) VALUES (2)
INSERT INTO testA(keyId) VALUES (3)
GO
INSERT INTO testB(keyId) VALUES (1)
INSERT INTO testB(keyId) VALUES (2)
INSERT INTO testB(keyId) VALUES (4)
INSERT INTO testB(keyId) VALUES (NULL)
GO
 SELECT * FROM testA WHERE keyId IN (SELECT keyId FROM testB)
-----输出------
/*
keyId
1
2
*/
 SELECT * FROM testA WHERE keyId not IN (SELECT keyId FROM testB)
------无输出记录-----
/*
keyId
*/
INSERT INTO testA VALUES (NULL) ---在testA表中插入空值
SELECT * FROM testA WHERE EXISTS(
    SELECT null  FROM testB WHERE testA.keyId=testB.keyId    
)
----输出----
/*
keyId
1
2
*/
SELECT * FROM testA WHERE not  EXISTS(
    SELECT null  FROM testB WHERE testA.keyId=testB.keyId    
)
/*
keyId
3
NULL
*/
SELECT * FROM testA WHERE testA.keyId NOT in (
    SELECT testB.keyId FROM testB WHERE testB.keyId IS NOT NULL    
)

drop table testA
drop table testB

假定那是后生可畏道面课题,揣摸不晓得有多少程序猿以至是DBA会捐躯……

图片 1

 

是的的答案是什么?(为了抓实影象,建议复制SQL到mysql里去试行,看一下)

  作者先成立了二个表。在这里个表中有多个字段:user_id(其数据类型是int卡塔尔(قطر‎、date(其数据类型是timestamp卡塔尔(قطر‎。以后往这么些表中插入一条记下,个中往date字段中插入的是二个null空值。不过当大家查询时,其结果显示的却是插入记录的当下光阴。那是怎么叁回事呢?其实那就是在mysql数据库中实施sql语句时平常会凌驾的一个骗局:空值不必然为空。在操作时,明明插入的是三个空值的数据,不过最终查询获得的却不是三个空值。

经过上述测验,大家得以看看not in 查询关键字要是子表中设有空值,则无从查询出任何笔录,会变成极度发生,
需采取not exists获取相应的空值音信

上边跟大家深入解析一下缘故:

  在mysql数据库中,null对于有些非常类其他列来说,其象征了大器晚成种奇特的含义,而不光是二个空值。对于那个新鲜类别的列,各位读者首假诺要记住四个。三个正是小编上边举的timestamp数据类型。要是往那么些数据类型的列中插入null值,则其表示的正是系统的脚下时光。此外一个是两全auto_increment属性的列。假设往那属性的列中插入null值的话,则系统会插入三个正整数连串。而只要在其它数据类型中,如字符型数据的列中插入null的数量,则其插入的便是二个空值。

图片 2

  陷阱二:空值不自然等于空字符

那正是说在应用中怎么着幸免NULL带给的有的劳神呢?

  在mysql中,空值(null卡塔尔(英语:State of Qatar)与空字符(’’卡塔尔国相近呢?答案是不是定的。请我们先来看下图的示范。

•把NULL当成三个破例值,不等于空、0、FALSE,使用IS NULL/IS NOT NULL去检查实验
•注脚NOT NULL列,给于暗中同意值

图片 3

下一篇:没有了
友情链接: 网站地图
Copyright © 2015-2019 http://www.zen-40.com. mgm美高梅有限公司 版权所有