详解MySQL中的NULL值

 更新时间:2015年05月26日 17:53:48   转载 投稿:goldensun  
这篇文章主要介绍了MySQL中的NULL值的相关知识,是MySQL入门学习中的基础知识,需要的朋友可以参考下

我们已经看到使用WHERE子句的SQL SELECT命令来从MySQL表获取数据。但是,当我们试图给的条件比较字段或列的值为NULL,它不能正常工作。

为了处理这种情况,MySQL提供了三大运算符

  1.     IS NULL: 此运算符返回true,当列的值是NULL。
  2.     IS NOT NULL: 运算符返回true,当列的值不是NULL。
  3.     <=> 操作符比较值(不同于=运算符)为ture,即使两个NULL值

涉及NULL条件是特殊的。不能使用 =NULL 或 !=NULL 寻找NULL值的列。这种比较总是告诉他们是否是真正的失败,因为这是不可能的。即使是NULL=NULL失败。

如果要查找是或不是NULL的列,请使用IS NULL或IS NOT NULL。
在命令提示符下使用NULL值:

假设一个表tcount_tbl,它包含了两个的列stutorial_author和tutorial_count,其中一个tutorial_count为NULL 表示的值是未知的
例子:

试试下面的例子:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> create table tcount_tbl
  -> (
  -> tutorial_author varchar(40) NOT NULL,
  -> tutorial_count INT
  -> );
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO tcount_tbl
  -> (tutorial_author, tutorial_count) values ('mahran', 20);
mysql> INSERT INTO tcount_tbl
  -> (tutorial_author, tutorial_count) values ('mahnaz', NULL);
mysql> INSERT INTO tcount_tbl
  -> (tutorial_author, tutorial_count) values ('Jen', NULL);
mysql> INSERT INTO tcount_tbl
  -> (tutorial_author, tutorial_count) values ('Gill', 20);

mysql> SELECT * from tcount_tbl;
+-----------------+----------------+
| tutorial_author | tutorial_count |
+-----------------+----------------+
| mahran     |       20 |
| mahnaz     |      NULL |
| Jen       |      NULL |
| Gill      |       20 |
+-----------------+----------------+
4 rows in set (0.00 sec)

mysql>

可以看到=和!=不使用NULL值,如下所示:

mysql> SELECT * FROM tcount_tbl WHERE tutorial_count = NULL;
Empty set (0.00 sec)
mysql> SELECT * FROM tcount_tbl WHERE tutorial_count != NULL;
Empty set (0.01 sec)

要找到,其中tutorial_count列是或不是NULL的记录,查询应该这样写:

mysql> SELECT * FROM tcount_tbl 
  -> WHERE tutorial_count IS NULL;
+-----------------+----------------+
| tutorial_author | tutorial_count |
+-----------------+----------------+
| mahnaz     |      NULL |
| Jen       |      NULL |
+-----------------+----------------+
2 rows in set (0.00 sec)
mysql> SELECT * from tcount_tbl 
  -> WHERE tutorial_count IS NOT NULL;
+-----------------+----------------+
| tutorial_author | tutorial_count |
+-----------------+----------------+
| mahran     |       20 |
| Gill      |       20 |
+-----------------+----------------+
2 rows in set (0.00 sec)

PHP脚本处理NULL值:

可以使用IF ... ELSE条件准备的基础上操作NULL值的查询。
例子:

下面的示例tutorial_count从外部,然后它与可在表中的值进行比较。

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('Could not connect: ' . mysql_error());
}
if( isset($tutorial_count ))
{
  $sql = 'SELECT tutorial_author, tutorial_count
      FROM tcount_tbl
      WHERE tutorial_count = $tutorial_count';
}
else
{
  $sql = 'SELECT tutorial_author, tutorial_count
      FROM tcount_tbl
      WHERE tutorial_count IS $tutorial_count';
}

mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
  echo "Author:{$row['tutorial_author']} <br> ".
     "Count: {$row['tutorial_count']} <br> ".
     "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>


相关文章

  • mysql-8.0.17-winx64 部署方法

    mysql-8.0.17-winx64 部署方法

    这篇文章主要介绍了mysql-8.0.17-winx64 部署方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 简述Mysql Explain 命令

    简述Mysql Explain 命令

    MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。如果你的页面返回结果很慢,你就需要使用explain去分析你的sql是否需要优化了.接下来通过本文给大家介绍Mysql Explain 命令,感兴趣的朋友一起学习吧
    2016-10-10
  • MySQL Explain使用详解

    MySQL Explain使用详解

    这篇文章主要介绍了MySQL Explain使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • mysql 忘记密码的解决方法(linux和windows小结)

    mysql 忘记密码的解决方法(linux和windows小结)

    下面是linux和windows下mysql丢失密码的解决办法
    2008-12-12
  • 深入浅析MySQL COLUMNS分区

    深入浅析MySQL COLUMNS分区

    COLUMN分区是5.5开始引入的分区功能,只有RANGE COLUMN和LIST COLUMN这两种分区;支持整形、日期、字符串;RANGE和LIST的分区方式非常的相似。下面就两者的区别给大家介绍下,对mysql columns知识感兴趣的朋友一起看看吧
    2016-11-11
  • mysql5.7.14解压版的安装图文教程

    mysql5.7.14解压版的安装图文教程

    MySQL的安装有两种方式,一种为msi格式,一个是zip格式。这篇文章主要介绍了mysql5.7.14解压版的安装图文教程,需要的朋友可以参考下
    2017-05-05
  • 利用rpm安装mysql 5.6版本详解

    利用rpm安装mysql 5.6版本详解

    众所周知MySQL在很多领域都被广泛的使用,尤其是很多互联网企业,诸如腾讯,阿里等等。那么本文将主要介绍如何通过rpm方式来安装Mysql,这是比较简单的一种安装方式,文中介绍的很详细,相信对于大家安装mysql具有一定的参考借鉴价值,下面来一起看看吧。
    2016-11-11
  • 数据库Mysql性能优化详解

    数据库Mysql性能优化详解

    这篇文章主要介绍了数据库Mysql性能优化的相关资料,需要的朋友可以参考下
    2016-05-05
  • 有关mysql中sql的执行顺序的小问题

    有关mysql中sql的执行顺序的小问题

    在MySQL中我们可能会遇到一些关于执行顺序的问题,下面小编就来带大家了解一下原因以及如何解决
    2019-05-05
  • mysql中group by与having合用注意事项分享

    mysql中group by与having合用注意事项分享

    在mysql中group by分组查询我们经常会用到,并且还同时会与having合用,下面我介绍group by用法与having合用注意事项,希望此教程对各位朋友有所帮助
    2013-10-10

最新评论