Mysql学习MySQL中对于NULL值的理解和使用教程

Mysql学习MySQL中对于NULL值的理解和使用教程,第1张

概述介绍《Mysql学习MySQL中对于NULL值的理解和使用教程》开发教程,希望对您有用。

《MysqL学习MysqL中对于NulL值的理解和使用教程》要点:
本文介绍了MysqL学习MysqL中对于NulL值的理解和使用教程,希望对您有用。如果有疑问,可以联系我们。

MysqL必读NulL值的概念是造成sql的新手的混淆的普遍原因,他们经常认为NulL是和一个空字符串''的一样的东西.不是这样的!例如,下列语句是完全不同的:

MysqL必读MysqL> INSERT INTO my_table (phone) VALUES (NulL); MysqL> INSERT INTO my_table (phone) VALUES ("");

MysqL必读两个语句把值插入到phone列,但是第一个插入一个NulL值而第二个插入一个空字符串.第一个的含义可以认为是“电话号码不知道”,而第二个则可意味着“她没有电话”.

MysqL必读在sql中,NulL值在于任何其他值甚至NulL值比较时总是假的(FALSE).包含NulL的一个表达式总是产生一个NulL值,除非在包含在表达式中的运算符和函数的文档中指出.在下列例子,所有的列返回NulL:

MysqL必读MysqL> SELECT NulL,1+NulL,CONCAT('Invisible',NulL);

MysqL必读如果你想要寻找值是NulL的列,你不能使用=NulL测试.下列语句不返回任何行,因为对任何表达式,expr = NulL是假的:

MysqL必读MysqL> SELECT * FROM my_table WHERE phone = NulL;

MysqL必读要想寻找NulL值,你必须使用IS NulL测试.下例显示如何找出NulL电话号码和空的电话号码:

MysqL必读MysqL> SELECT * FROM my_table WHERE phone IS NulL; MysqL> SELECT * FROM my_table WHERE phone = "";

MysqL必读在MysqL中,就像很多其他的sql服务器一样,你不能索引可以有NulL值的列.你必须声明这样的列为NOT NulL,而且,你不能插入NulL到索引的列中.

MysqL必读当用LOAD DATA INfile读取数据时,空列用''更新.如果你想要在一个列中有NulL值,你应该在文本文件中使用\N.字面上的词'NulL'也可以在某些情形下使用.

MysqL必读当使用ORDER BY时,首先呈现NulL值.如果你用DESC以降序排序,NulL值最后显示.当使用GROUP BY时,所有的NulL值被认为是相等的.

MysqL必读为了有助于NulL的处理,你能使用IS NulL和IS NOT NulL运算符和IFNulL()函数.

MysqL必读MysqL的 IFNulL() 函数和Oracle的 NVL() 函数功能类似.以下简单举例:
IFNulL(expr1,expr2)
如果expr1不是NulL,IFNulL()返回expr1,否则它返回expr2.IFNulL()返回一个数字或字符串值,取决于它被使用的上下文环境.

MysqL必读MysqL> select IFNulL(1,0);     -> 1 MysqL> select IFNulL(0,10);     -> 0 MysqL> select IFNulL(1/0,10);     -> 10 MysqL> select IFNulL(1/0,'yes');     -> 'yes' NVL( string1,replace_with)

MysqL必读功能:如果string1为NulL,则NVL函数返回replace_with的值,否则返回string1的值.
引申一下,此NVL的作用与sqlserver 中的 ISNulL( string1,replace_with) 一样.
注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数.
例:

MysqL必读NVL(TO_CHAR(numeric_column),'some string')

MysqL必读其中numeric_column代指某个数字类型的值.
例:

MysqL必读nvl(yanlei777,0) > 0

MysqL必读NVL(yanlei777,0) 的意思是 如果 yanlei777 是NulL,则取 0值

MysqL必读null与空值的辨析
来看这样一段代码:

MysqL必读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 ;

MysqL必读错误(不可以插入null值):

MysqL必读INSERT INTO `test` VALUES (null,1);

MysqL必读正确(插入''没问题):

MysqL必读INSERT INTO `test` VALUES ('',1);INSERT INTO `test` VALUES ('',NulL);INSERT INTO `test` VALUES ('1','2');

MysqL必读检索(''不是null,所以not null会把''都算进去):

MysqL必读SELECT * FROM `test` WHERE col1 IS NOT NulL

MysqL必读结果:所有三条数据

MysqL必读检索(正常检索):

MysqL必读SELECT * FROM `test` WHERE col1 <> ''

MysqL必读结果:最后一条数据

MysqL必读检索(<>'',会同时排除''和null的数据,只检索有内容的数据):

MysqL必读SELECT * FROM `test` WHERE col2<>''

MysqL必读总结:
1. null的存储不是'',是其它特殊的字符表示.
2. null在检索<>''的时候,也会被排除,因为没有真正有意义的内容
3. not null严格按照字面意思,''不会被排除.
4. 定义not null的字段,可以插入''

总结

以上是内存溢出为你收集整理的Mysql学习MySQL中对于NULL值的理解和使用教程全部内容,希望文章能够帮你解决Mysql学习MySQL中对于NULL值的理解和使用教程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/1161526.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存