SQL有指定空值的独特方式,它把空值叫做NULL。

Null在数据库中表示 不知道的数据,主要有3种意思:
1)知道数据存在,但不知道具体值.
2)不知道数据是否存在.
3)数据不存在.

在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样。这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串。

这会引起不必要的歧义或疑惑。 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致? 还有: 我怎样才能得到全部拥有空值的记录,应该按NULL和空字符串查找么?还是仅按字符串查找?

为了消除歧义,Django生成CREATE TABLE语句自动为每个字段显式加上NOT NULL。 这里有个第五章中生成Author模块的例子:

CREATE TABLE "books_author" ("id" serial NOT NULL PRIMARY KEY,"first_name" varchar(30) NOT NULL,"last_name" varchar(40) NOT NULL,"email" varchar(75) NOT NULL
)

在大多数情况下,这种默认的行为对你的应用程序来说是最佳的,因为它可以使你不再因数据一致性而头痛。 而且它可以和Django的其它部分工作得很好。如在管理工具中,如果你留空一个字符型字段,它会为此插入一个空字符串(而* 不是*NULL)。

但是,其它数据类型有例外:日期型、时间型和数字型字段不接受空字符串。 如果你尝试将一个空字符串插入日期型或整数型字段,你可能会得到数据库返回的错误,这取决于那个数据库的类型。 (PostgreSQL比较严禁,会抛出一个异常;MySQL可能会也可能不会接受,这取决于你使用的版本和运气了。)在这种情况下,NULL是唯一指定空值的方法。 在Django模块中,你可以通过添加null=True来指定一个字段允许为NULL

因此,这说起来有点复杂: 如果你想允许一个日期型(DateFieldTimeFieldDateTimeField)或数字型(IntegerFieldDecimalFieldFloatField)字段为空,你需要使用null=True * 和* blank=True

转载于:https://www.cnblogs.com/Simon-xm/p/3896542.html

Django与SQL语言中——NULL与空字符串的区别相关推荐

  1. Oracle中Null与空字符串''的区别

    http://read.newbooks.com.cn/info/172049.html Oracle中Null与空字符串''的区别 来源:CSDN   作者:jsjzzh   发布时间:2007-1 ...

  2. Oracle中Null与空字符串' '的区别

    含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...

  3. mysql的字段空格是null_MySQL中NULL与空字符串 空格问题

    一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串' '是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而''则表示值是存在的,只不过是个 ...

  4. mysql null值和空格_MySQL中NULL与空字符串空格问题

    一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串' '是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而''则表示值是存在的,只不过是个 ...

  5. null和空字符串('')的区别

    在Java开发中,我们需要常常判断是否值为null,尤其在xml数据交互过程中,我们判断某一个报文的值是否为null时候,经常需要用三目运算判断:如果值为null,则赋值空字符串(insert数据库时 ...

  6. oracle数据库null和空字符串区别,null和空字符串('')的区别

    在Java开发中,我们需要常常判断是否值为null,尤其在xml数据交互过程中,我们判断某一个报文的值是否为null时候,经常需要用三目运算判断:如果值为null,则赋值空字符串(insert数据库时 ...

  7. Sqoop导入hive中null是空字符串还是‘null‘的问题(关注)

    Sqoop导入hive中null字符串处理为NULL 其中注意 这个是转为空字符串而不是'null'这种. 可以用ifnull转化的 这种就是'null'

  8. Mysql 中null与空字符串陷进

    前阵子在更新数据库时候碰见一个新增表的语句,发现插入的空值自动填充的值,很是费解,下面我们先来说说案例,以下是模仿的测试: 首先创建一个表:create table ceshi(ID INT ,cre ...

  9. Java关于null和空字符串““的区别

    我们都知道当我们new一个String类型的变量是时,用的是 String str = null:而不是Sting str ="": null不会分配内存空间,相当于什么都没有. ...

最新文章

  1. Git探秘:实用主义(1/2)
  2. SQL2005中row_number()等函数的用法
  3. P1547 Out of Hay
  4. 数据库中char, varchar, nvarchar的差异
  5. java NIO网络编程之SelectionKey
  6. knx智能照明控制系统电路图_智能照明控制系统应用效果
  7. StorAge存储库
  8. ios 音频录音、上传至7牛、播放及其与android兼容的问题
  9. Error in cool_function[1] : object of type ‘closure‘ is not subsettable
  10. LeetCode 题解之 231. Power of Two
  11. PHP 互联网架构师成长之路*「swoole」终极指南
  12. java抽象类的属性_JAVA 抽象类
  13. 来了,2020全球算力大会暨新基建矿业峰会,首批重磅嘉宾阵容出炉!
  14. 开发基于 Google Map 的 Android 应用
  15. 谷歌为iPhone推新版本语音电话软件 北京网游分级制度今年启动(每日关注2010.1.27)
  16. PowerShell 7.1 中的新增功能
  17. EventLoop(回顾)
  18. Bundler的安装和配置
  19. 使用Python脚本处理Excel文档
  20. Arduino——超声波测距

热门文章

  1. 距离高考出成绩,一年了、、、
  2. 华为虚拟服务器lanip地址,2018软考网络工程师《华为基础实验》十九配置路由器为DHCPServer...
  3. c++经典编程题_【经典C语言知识】C/C++编程难点总结
  4. aosp 本地版本管理_谈 DevOps 平台实施:我在本地跑明明成功的,为什么在你平台跑就报错?...
  5. mysql外键教程_关于MySQL外键的简单学习教程
  6. sam格式的结构和意义_各种格式的练字本,对写字真有帮助吗
  7. 求数字序列中的第n位对应的数字
  8. Git(10)-merge
  9. 含有js的英文单词_JavaScript 常用单词整理
  10. 10kv线路负载率计算_电工必懂计算公式,你若不会,如何立足于电力行业?