展开全部

空值是不占用空间的,MySQL中的NULL其实是占用空间的。

不过在MySQL数据库中执行62616964757a686964616fe78988e69d8331333363396466SQL语句,需要小心两个陷阱:

1、空值不一定为空

空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空。此时为出现什么情况呢

我先创建了一个表。在这个表中有两个字段:User_id(其数据类型是int)、Date(其数据类型是TimesTamp)。现在往这个表中插入一条记录,其中往Date字段中插入的是一个NULL空值。可是当我们查询时,其结果显示的却是插入记录的当前时间。这是怎么一回事呢?其实这就是在MySQL数据库中执行SQL语句时经常会遇到的一个陷阱:空值不一定为空。在操作时,明明插入的是一个空值的数据,但是最后查询得到的却不是一个空值。

在MySQL数据库中,NULL对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的TimesTamp数据类型。如果往这个数据类型的列中插入Null值,则其代表的就是系统的当前时间。另外一个是具有auto_increment属性的列。如果往这属性的列中插入Null值的话,则系统会插入一个正整数序列。而如果在其他数据类型中,如字符型数据的列中插入Null的数据,则其插入的就是一个空值。

2、空值不一定等于空字符

在MySQL中,空值(Null)与空字符(’’)相同吗?答案是否定的。

在同一个数据库表中,同时插入一个Null值的数据和一个’’空字符的数据,然后利用Select语句进行查询。显然其显示的结果是不相同的。从这个结果中就可以看出,空值不等于空字符。这就是在MySQL中执行SQL语句遇到的第二个陷阱。在实际工作中,空值数据与空字符往往表示不同的含义。数据库管理员可以根据实际的需要来进行选择。如对于电话号码等字段,可以默认设置为空值(表示根本不知道对方的电话号码)或者设置为空字符(表示后来取消了这个号码)等等。由于他们在数据库中会有不同的表现形式,所以数据库管理员需要区别对待。笔者更加喜欢使用空值,而不是空字符。这主要是因为针对空值这个数据类型有几个比较特殊的运算字符。如果某个字段是空字符,数据库中是利用字段名称来代替。相反,如果插入的是空值,则直接显示的是NULL。这跟其他数据库的显示方式也是不同的。

一是IS NULL 和IS NOT NULL关键字。如果要判断某个字段是否含用空值的数据,需要使用特殊的关键字。其中前者表示这个字段为空,后者表示这个字段为非空。在Select语句的查询条件中这两个关键字非常的有用。如需要查询所有电话号码为空的用户(需要他们补充电话号码信息),就可以在查询条件中加入is not null关键字。

二是Count等统计函数,在空值上也有特殊的应用。如现在需要统计用户信息表中有电话号码的用户数量,此时就可以使用count函数、同时将电话号码作为参数来使用。因为在统计过程中,这个函数会自动忽略空值的数据。此时统计出来的就是有电话号码的用户信息。如果采用的是空字符的数据,则这个函数会将其统计进去。统计刚才建立的两条记录时,系统统计的结果是1,而不是2。可见系统自动将Null值的数据忽略掉了。

mysql中数据表null什么意思_MySQL 中NULL和空值的区别是什么?相关推荐

  1. mysql删除数据对索引的影响_mysql中索引可以删除吗?

    mysql中索引可以删除,可以使用"DROP INDEX"语句来对索引进行删除,语法格式"DROP INDEX ON ".不用的索引建议进行删除,因为它们会降低 ...

  2. mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息

    前言 有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢? 在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUM ...

  3. mysql中多表联合查询语句_mysql中的多表联合查询语句是什么

    mysql中的多表联合查询语句是:[select 语句1 union [union 选项] select 语句2 union [union 选项] select 语句n].多表联合查询结果是将多个se ...

  4. mysql每个月数据按天行转列_Mysql 中使用DATE_FORMAT函数按月、周统计数据

    项目中的统计报表作的很多,需求中有按周.月统计数据的.查看了Mysql的API,发现Date_format是格式化日期的,看了Date_format()的具体说明后就用这个函数按周统计,sql大致如下 ...

  5. MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...

  6. lmbs PHP,PHP 清空 MySql 指定数据表中的所有数据

    PHP 清空 MySql 指定数据表中的所有数据 PHP 清空 MySql 指定数据表中的所有数据,在烈火小编在网上闲逛时,这是某技术博客的一篇文章,说是文章,并没有文字,只有代码,经过测试可以使用, ...

  7. MySQL修改数据表中的字段名

    MySQL修改数据表中的字段名 在一张数据表中只能设置一个唯一名称的字段名.在同一张数据表中,不能出现两个名称完全相同的字段名. 因此,数据库系统可以通过字段名来区分数据表中的不同字段. 在MySQL ...

  8. mysql 删除数据表中数据_Mysql-删除数据表-三种方式详解

    Mysql 删除数据表的三种方式详解 用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, ...

  9. 假设mysql数据表t1有字段_Mysql 索引及优化

    什么是索引 索引是什么?相信大家都用过字典.你是怎么从厚厚的新华字典中找到你需要找到的那个字的呢?又是怎么从一本书中快速定位到你需要的章节? 我们都是通过书中的目录,然后根据目录中的页码定位到我们要的 ...

  10. MySQL 创建数据表

    MySQL 创建数据表 创建MySQL数据表的SQL语法: CREATE TABLE table_name (column_name column_type); 例如,我们在 PENGKE 数据库中创 ...

最新文章

  1. C语言笔试题--从CSDN转发
  2. 【Nginx】 server 配置记录
  3. jsp前3章试题分析
  4. SpringFramework之javax.servlet.http.HttpSession
  5. WAMP(windows+apache+mysql+php)
  6. 基础篇——树莓派通用引脚定义
  7. 网页导出pdf不完整_又一种pdf文献全文一键免费翻译的方法
  8. 想搞 AI,没导师指导、没 GPU ,怎么搞?好主意分享
  9. 华为荣耀畅玩7安卓系统升级为鸿蒙系统,华为EMUI系统迎来绝唱!内核升级为鸿蒙,荣耀被彻底放弃?...
  10. 实验三+161+张丽霞
  11. 计算机网络——路由器接口及静态路由配置
  12. 元宇宙赔掉底裤?Meta 13个月「烧完」50个白宫
  13. 湖北武汉劳务员考试建筑施工企业的劳务实名制建筑七大员考试
  14. Cypress 元素定位
  15. 颜水成 等 | 《深度长尾学习》综述
  16. 我们不再沉默 给入侵黑客一个“下马威”
  17. 新手小白如何自学初级会计?
  18. AI挑战人类情感!机器人写诗、出书、开专栏背后透露了什么?
  19. LCD1602显示屏的驱动设置及例程
  20. 邮件代收代发软件操作说明

热门文章

  1. 华为p20Android怎么解开,华为P20/P20 Pro如何进行双清?华为P20进recovery双清格机教程...
  2. 一天进步一点点 LDAP协议和AD的概念
  3. 玻色量子与中国医科院药物研究所达成战略合作
  4. 考研英语阅读理解做题技巧(2):主旨题
  5. 群晖第三方源mysql_群晖第三方源汇总
  6. 【自用】Windows优化
  7. linux boot菜单列表,/boot/grub/menu.lst详解
  8. 使用Python Link SDK接入阿里云物联网平台
  9. 联想小新java_联想小新700 i7 完美efi 黑果 mac 10.14
  10. JS图像处理:找出两张图片的差异部分并提取出来