除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL。这看起来好像有点争议,请往下看。

所谓的NULL就是什么都没有,连\0都没有,\0在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一个字节都没有。在数据库里是严格区分的,任何数跟NULL进行运算都是NULL, 判断值是否等于NULL,不能简单用=,而要用IS NULL关键字。

数据库的字段ID设为NOT NULL, 仅仅说明该字段不能为NULL, 也就是说只有在
INSERT INTO table(ID) VALUES(NULL);
这种情况下数据库会报错,而
INSERT INTO table(ID) VALUES( ‘ ‘);
这不能说明是NULL, 数据库系统会根据ID设的缺省值填充,或者如果是自增字段就自动加一等缺省操作。

尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,而且对表索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

最新文章

  1. 【Java EE 学习 43】【SVN版本控制工具】【CVS版本控制工具】
  2. Wcf:可配置的服务调用方式
  3. 延时程序执行Qt
  4. bootstrap-fileinput简单完整列子
  5. oracle case when 语句
  6. Selenium2学习-013-WebUI自动化实战实例-011-WebElement.getText()值为空问题探索及解决
  7. Java基础之访问文件与目录——创建目录(CreatingDirectories)
  8. random_names随机名字生成
  9. java去掉jsp标签内容的方法
  10. function复习
  11. 本地环境下 WordPress 环境搭建与安装
  12. Xcode崩溃问题调试 signal SIGABRT&EXC_BAD_ACCESS
  13. java开发环境配置——IDEA SVN的使用
  14. Linux安装中文字体_宋体
  15. 廖雪峰Java8JUnit单元测试-2使用JUnit-1使用Before和After
  16. chrome:禁用缓存
  17. Codeforces 718C solution
  18. 黄聪:在.NET中使用GeckoFX 29
  19. modelsim读写TXT文件
  20. python第七课——循环结构 while

热门文章

  1. 网络协议之rtp---rtp 传输视频及加密
  2. [转]移动互联网应用技术架构简介-Restful服务
  3. 用python解析html--SGMLParser
  4. poj 1419(图的着色问题,搜索)
  5. SQL Server 数据库分离与附加(图文教程)
  6. form.submit 方法 并不会触发 form.onsubmit 事件
  7. zTree 树形控件 ajax动态加载数据
  8. Powershell Get-ChildItem 筛选文件,文件处理
  9. 在Sql Server中使用证书加密数据
  10. java 内存空间