允许空值的意思。
允许空值和有默认值并不冲突,插入数据时如果指定使用默认值,它会使用这个默认值0,如果插入数据时不指定这一列,它会保持空值。
空值是不占用空间的,MySQL中的NULL其实是占用空间的。
扩展资料:
使用NULL可以区分“没有输入数据”和“输入空数据”, 差异在于:
NULL的长度就是NULL,空字符串的长度为0。
一串NULL数据比空字符串优先排序。
COUNT(message)会将空字符串计数进去,但是不会将NULL数据们计入。
可以使用绑定变量搜索某个空字符串,但是不可以这样搜索NULL。
在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。包含NULL的表达式总是会导出NULL值,除非在关于 *** 作符的文档中以及表达式的函数中作了其他规定。
空值和Null值,两者是同一个东西。前者是后者的中文说法。
我想楼主实际是想搞清楚 空字符串(我们也可以称之为0长度字符串)与Null值(空值)的区别。
尽管这两者在外观上看起来都是没东西,但是这两者有很大的区别:
1)空字符串(0长度字符串)在代码中用一对没有间隔的英文双引号表示-->"" (外层有双引号的情况下用一对英文单引号表示-->'')其数据类型是明确的,即为字符型。存储“空字符串”是要占据物理磁盘空间的;
2)Null值(空值)在代码中用关键字 "Null" 表示,代表没东西,其数据类型未知,它不占用物理磁盘空间。
为了进一步讲清楚这两者的区别,下面举一个数据表来说明
新建学生表 Students(ID 数字,Name 文本,Tel 文本)暂时不添加除数据类型外的任何约束
分别运行下列SQL动作查询,插入4条记录
a) insert into Students(ID,Name) values(1,"张三")
b) insert into Students(ID,Name,Tel) values(2,"李四",Null)
c) insert into Students(ID,Name,Tel) values(3,"王五","3348912")
d) insert into Students(ID,Name,Tel) values(4,"陈六","")
运行选择查询
select ID,Name,Tel,IIf(IsNull(Tel),"Null",IIf(Tel="","''",Tel)) as Tel的实际存储值 from Students
返回下列记录
注意因为空字符串和Null值的外观看起来都是空白的,故我用表达式IIf(IsNull(Tel),"Null",IIf(Tel="","''",Tel)) 将Tel字段实际存储的值显示出来
查出电话为空值(Null)的记录
select * from Students where Tel is Null
查出电话不为为空值(Null)的记录
select * from Students where Tel is not Null
查出电话为空字符串的记录
select * from Students where Tel=""
查出有电话的记录
select * from Students where Tel is not Null and Tel<>""
通过上面的解释应该比较清楚空字符串与NUll值的区别了。
如果一定要确保有学生的电话资料,我们应在数据表设计视图将Tel字段的”必填字段“属性设置为”是“同时还要将”允许空字符串“属性设置为”否“,如果这样设置后上述四条 *** 作查询语句里只有c才能被执行。
空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空。此时为出现什么情况呢我先创建了一个表。在这个表中有两个字段:User_id(其数据类型是int)、Date(其数据类型是TimesTamp)。现在往这个表中插入一条记录,其中往Date字段中插入的是一个NULL空值。可是当我们查询时,其结果显示的却是插入记录的当前时间。这是怎么一回事呢?其实这就是在MySQL数据库中执行SQL语句时经常会遇到的一个陷阱:空值不一定为空。在 *** 作时,明明插入的是一个空值的数据,但是最后查询得到的却不是一个空值。
在MySQL数据库中,NULL对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的TimesTamp数据类型。如果往这个数据类型的列中插入Null值,则其代表的就是系统的当前时间。另外一个是具有auto_increment属性的列。如果往这属性的列中插入Null值的话,则系统会插入一个正整数序列。而如果在其他数据类型中,如字符型数据的列中插入Null的数据,则其插入的就是一个空值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)