对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL是与空字符串‘‘相同的事。情况并非如此。例如,下述语句是完全不同的:
mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES (‘‘);
这两条语句均会将值插入phone(电话)列,但第1条语句插入的是NULL值,第2条语句插入的是空字符串。第1种情况的含义可被解释为“电话号码未知”,而第2种情况的含义可被解释为“该人员没有电话,因此没有电话号码”。
为了进行NULL处理,可使用IS NULL和IS NOT NULL操作符以及IFNULL()函数。
在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。包含NULL的表达式总是会导出NULL值,除非在关于操作符的文档中以及表达式的函数中作了其他规定。下述示例中的所有列均返回NULL:
mysql> SELECT NULL, 1+NULL, CONCAT(‘Invisible‘,NULL);
如果打算搜索列值为NULL的列,不能使用expr = NULL测试。下述语句不返回任何行,这是因为,对于任何表达式,expr = NULL永远不为“真”:
mysql> SELECT * FROM my_table WHERE phone = NULL;
要想查找NULL值,必须使用IS NULL测试。在下面的语句中,介绍了查找NULL电话号码和空电话号码的方式:
mysql> SELECT * FROM my_table WHERE phone IS NULL;
mysql> SELECT * FROM my_table WHERE phone = ‘‘;
信息和示例:
如果你正在使用MyISAM、InnoDB、BDB、或MEMORY存储引擎,能够在可能具有NULL值的列上增加1条索引。如不然,必须声明索引列为NOT NULL,而且不能将NULL插入到列中。
用LOAD DATA INFILE读取数据时,对于空的或丢失的列,将用‘‘更新它们。如果希望在列中具有NULL值,应在数据文件中使用“N。在某些情况下,也可以使用文字性单词“NULL”。
使用DISTINCT、GROUP BY或ORDER BY时,所有NULL值将被视为等同的。
使用ORDER BY时,首先将显示NULL值,如果指定了DESC按降序排列,NULL值将最后显示。
对于聚合(累计)函数,如COUNT()、MIN()和SUM(),将忽略NULL值。对此的例外是COUNT(*),它将计数行而不是单独的列值。例如,下述语句产生两个计数。首先计数表中的行数,其次计数age列中的非NULL值数目:
mysql> SELECT COUNT(*), COUNT(age) FROM person;
对于某些列类型,MySQL将对NULL值进行特殊处理。如果将NULL插入TIMESTAMP列,将插入当前日期和时间。如果将NULL插入具有AUTO_INCREMENT属性的整数列,将插入序列中的下一个编号。
分享到:
相关推荐
SQL 查询优化(提高 MySQL 数据库查询效率的几个技巧) 在 MySQL 数据库中,查询优化是一个非常重要的方面。在实际应用中,高效的查询可以提高整个系统的性能和响应速度。下面我们将介绍几个提高 MySQL 数据库查询...
2. 使用`IFNULL`函数(在MySQL中)或`ISNULL`函数(在SQL Server中):这两个函数的作用与`COALESCE`类似,都是将null转换为另一个值。例如: ```sql SELECT AVG(IFNULL(column_name, 0)) FROM table_name; -- ...
在JavaServer Pages (JSP) 中访问MySQL数据库是Web开发中的常见任务,它涉及将后端数据与前端页面结合,以便动态展示信息。本篇文章将详细介绍如何在JSP中实现这一功能,分为以下几个关键步骤: 1. **环境配置**: ...
根据给定文件的信息,我们可以总结出一系列关于MySQL数据库的基础知识点,涵盖了SQL语言的基本操作、数据检索、表结构管理以及高级特性等内容。以下是针对文件中提到的一些关键知识点的详细解释: ### 1. 聚合函数 ...
MySQL 数据库优化是数据库管理和开发者非常关心的一个问题。由于 MySQL 数据库的性能优化可以直接影响到整个应用系统的性能和用户体验,因此掌握 MySQL 数据库优化技巧对开发者和数据库管理员来说非常重要。本文总结...
下面将详细介绍MySql数据库性能优化的相关知识点。 什么是优化? 优化是指通过合理安排资源、调整系统参数,使 MySql 运行更快、更节省资源。优化是多方面的,包括查询、更新、服务器等。优化的原则是减少系统瓶颈...
MySQL数据库是世界上最受欢迎的开源关系型数据库管理系统之一,它以其高效、可靠和易于学习的特点深受开发者喜爱。这个压缩包文件包含的"mysql中文教程"很可能提供了关于如何使用MySQL进行数据管理、查询和存储的...
在MySQL数据库中,外键是实现表间关系的重要机制,它确保了数据的一致性和完整性。设置外键时,有几点需要注意,以确保数据库设计的规范性和高效性。以下是对这些关键点的详细阐述: 1. **外键约束定义**: 外键是...
总结来说,Flask框架与MySQL数据库的集成主要涉及以下几个步骤: 1. 导入相关库,如pymysql或Flask-SQLAlchemy。 2. 建立数据库连接和游标。 3. 使用SQL语句进行数据库操作,如创建表、查询、插入、更新和删除数据。...
MySQL数据库规范是数据库设计和管理中的重要指导原则,旨在提高数据库的性能、稳定性和可维护性。MySQL作为一款广泛应用的关系型数据库管理系统,其历史可以追溯到1979年,由Monty Widenius编写,经过多次迭代和收购...
特别是在涉及JavaEE技术栈的应用开发时,对MySQL数据库的性能优化更是面试中的高频问题。这篇文章将详细讨论MySQL数据库性能优化的相关知识点,这不仅是Java面试的热点,也是每一位数据库管理员和开发人员应该掌握的...
在VC++环境中,使用MySQL API连接数据库是一种常见的方式,尤其对于开发C++应用程序时需要与MySQL数据库进行交互的情况。MySQL API提供了丰富的函数和结构,使得开发者可以直接在代码中执行SQL语句,处理结果集,...
根据提供的文件内容,我们可以归纳总结出一系列关于MySQL数据库的重要知识点,包括了选择题涉及的SQL...以上内容涵盖了MySQL数据库考试中的多个重要知识点,这些知识点对于理解SQL语言的基础操作和高级特性都至关重要。
本文详细介绍了在Linux系统下安装Mysql数据库的过程,并重点指出了需要注意的几个关键点。此外,还讨论了如何通过PHP和C API程序访问Mysql数据库的方法。这些知识对于从事Web开发和数据库管理的专业人士来说具有重要...
### 在VC6中使用C API方式连接MySQL数据库 #### 一、环境配置 为了在Visual C++ 6.0(简称VC6)中使用C API连接MySQL数据库,首先需要完成必要的环境配置工作。 1. **下载MySQL Connector/C**: 从MySQL官网下载...
通过对MySQL数据库中的主要业务表创建合理的索引,成功地解决了系统延迟问题,将操作时间从分钟级别恢复到秒级别。 MySQL中的索引基于数据结构,如B树和B+树。B树是一种多叉平衡查找树,其特点是每个节点最多有m...
在Java编程领域,将Excel数据读取并存储到MySQL数据库是一项常见的任务,特别是在数据分析、报表生成或系统集成等场景中。下面将详细讲解这个过程涉及的主要知识点。 首先,我们需要了解如何使用Java处理Excel文件...
在PHP中,连接MySQL数据库是开发Web应用的基础步骤。这里我将详细讲解三种常见的方法:面向过程、面向对象以及PDO。 方法一:面向过程的方法 这是最基础的MySQL连接方式,使用`mysql_connect()`和`mysql_select_db...
在本案例中,"JDBC连接MySQL数据库8.0.13的驱动包" 提供了连接MySQL 8.0.13版本数据库所需的Java驱动程序。MySQL是一种开源、免费的关系型数据库管理系统,广泛应用于Web应用、企业内部系统以及各类数据存储需求。 ...