当前位置:首页 » 数据仓库 » 数据库系统中的空值是
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库系统中的空值是

发布时间: 2023-01-05 17:12:04

㈠ ACCESS或EXCEL数据导入到sql数据库中,空值导入后变成了NULL

"空值"是null的中文叫法,两者是同一个东西。我想题主是想弄清楚"空字符串"(也称为"0长度字符串")与null(空值)之间的区别和处理方法。
在系统里,空值用关键字null表示,空字符串则用一对没有间隔的英文双引号""或英文单引号''表示(access数据库单、双引号表示的空字符串都可被识别,而MSSQL则必须要用一对单引号表示空字符串)。前者的数据类型是未知的,而后者的数据类型则是明确的,即它属于字符型。在没有约束的情况下,null值可以被写入任何数据类型字段,而空字符串只能写入字符型字段里。在数据库里null(空值)表示没东西,一个字段在未写入数据前它天然就是空的,因此我们可以通过隐式或显式两种方式向数据表写入null值,但是空字符串只能通过显式方式写入数据表,因为空字符串实际上是一种特殊的字符(长度为0)它不会天然就存在的,存储空字符串是要占用物理磁盘空间的。
例如,有学生表
students(sid int primary key,name varchar(50) not null,sex char(1) not null,dob datetime not null,phone varchar(50):
-- 隐式向电话字段写入null(空值),也就是不向字段写入任何值
insert into students (sid,name,sex,dob) values(101,'张三','男','1996-01-04')
-- 显式向电话字段写入null(空值)
insert into students (sid,name,sex,dob,phone) values(101,'张三','男','1996-01-04',null);
-- 只能显式向电话字段写入空字符串'',否则null值会取而代之,这是null的天然属性使然
insert into students (sid,name,sex,dob,phone) values(101,'张三','男','1996-01-04','');

在EXCEL里,系统对于空的单元格统一当做空字符串进行处理,我们可以将null(空值)和空字符串混为一谈,而在数据库里则不得将两者视为一样,对它们需要分别处理,否则可能会出现混乱。请留意,在ACCESS数据表视图里,空字符串和null值的外观看起来都是“空”的,如果你看到“空”的字段值,不表示它一定就是空值,它也许是空字符串,如果已经显式存入了空字符串的话。而在MSSQL里系统会用不同的外观来展示null值和零长度字符串,前者显式为null,后者显式为“空”。
我们在使用不同的系统工具向MSSQL导入数据时,系统对于被导入数据中的“空字符串”的处理方式可能会有变化的,有些情况下会将“空字符串”当做NULL来处理,有些则会按实际值来处理,是空值的就导入为空值,是零长度字符串则导入为零长度字符串。一般来说从excel、TXT等导入系统会将空字符串当做null导入,而从数据库表导入则按实际值导入。
题主如果想将MSSQL数据表的NULL转换为空字符串,可以运行更新查询,例如
update students set phone='' where phone is null;
也可以将字段的默认值设置为''零长度字符串,这样系统会在字段没有指定字段值时自动输入空字符串。

㈡ mysql数据库 null怎么表示

空值是一个比较特殊的字段。在mysql数据库中,在不同的情形下,空值往往代表不同的含义。这是mysql数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到timestamp类型的字段中,空值就不一定为空。此时为出现什么情况呢
我先创建了一个表。在这个表中有两个字段:user_id(其数据类型是int)、date(其数据类型是timestamp)。现在往这个表中插入一条记录,其中往date字段中插入的是一个null空值。可是当我们查询时,其结果显示的却是插入记录的当前时间。这是怎么一回事呢?其实这就是在mysql数据库中执行sql语句时经常会遇到的一个陷阱:空值不一定为空。在操作时,明明插入的是一个空值的数据,但是最后查询得到的却不是一个空值。
在mysql数据库中,null对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的timestamp数据类型。如果往这个数据类型的列中插入null值,则其代表的就是系统的当前时间。另外一个是具有auto_increment属性的列。如果往这属性的列中插入null值的话,则系统会插入一个正整数序列。而如果在其他数据类型中,如字符型数据的列中插入null的数据,则其插入的就是一个空值。

㈢ access 查询空值和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

返回下列记录

㈣ 数据库中空值的含义

数据库中空值的含义, 就是相当于 “不知道” 的含义。
例如有一个 员工表。
包含下面这些列:
员工代码 NOT NULL,
员工姓名 NOT NULL,
员工生日,
员工籍贯,
......

其中, 员工代码 与 员工姓名 是 非空的, 那么必须有数据。 不能说 “不知道”。
而 员工生日 与 员工籍贯 是 可以为空的, 那么 允许不写数据, 也就是 可以 “不知道”

例如数据:
员工代码 员工姓名 员工生日 员工籍贯
TESTSH01 张三 NULL 上海
TESTSH02 李四 1988-8-8 NULL

㈤ MySQL 中NULL和空值的区别是什么

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

㈥ MySQL 中NULL和空值的区别

"空值"是对null值的中文叫法,两者同指一个东西。


我想楼主是想弄清楚null(空值)与零长度字符串''(或称为空字符串)之间的区别。


在代码里"零长度字符串"用一对没有间隔的英文引号''表示,它的数据类型是明确的即属于字符型,存储"零长度字符串"是要占用物理磁盘空间的;

而null值其数据类型是未知的,它不会占用物理磁盘空间。

在不存在约束限制的情况我们可以将Null值插入任何数据类型的字段里,而零长度字符串''只能插入到字符型数据类型字段中,插入其它类型字段会报错。


我们通过实测看看null(空值)与零长度字符串''(或称为空字符长)之间的区别:

1)输出所有的记录

select * from students;

注意:此例只要不含Null值的记录都予以输出