SQL insert插入中存在属性值为空

在定义数据库的表的时候,我们知道有些属性我们可以设置让它可以为空,这样可以让我们在某些数据缺失的时候依然将信息插入表中。但是,这就涉及到了一个问题,如果有属性为空,我们在写插入语句的时候该如何写呢?今天做实验的时候我就遇到了这个困惑,并对此做了些尝试,现在将结果分享给大家,希望对大家能有所帮助。

首先,我们来看看这张表s的设计,在Navicat中,我们新建了这样一张表,其中除了主键sno,其他属性均可为空。

 s表内容如下:

然后我们对这张表创建了一个视图v_xsqk,视图展示了s表中的sno,sname,ssex,sbirth这些属性。构建视图的结果如下:


好的,准备工作的介绍到此结束,下面我们进入正题。

我们的目标是:向视图V_XSQK中插入一条记录:‘2020206’,‘李红’,‘1983-12-3’。

很明显,添加的记录中缺少属性ssex,那么这个属性我们该怎么对它进行处理呢?

首先,我想的第一种方法是在插入语句中,这个属性的值不填,代码如下:

insert into v_xsqk values('2020206', '李红', , '1983-12-3');

显然这种方法是行不通的,返回了一行报错。

这种方法不行,那么我们换个思路。既然属性值为空,我们干脆不填值就好了,于是就有了下面这行代码:

insert into v_xsqk values('2020206', '李红', '', '1983-12-3');

先来看看结果:

乍一看,没毛病是吧?ssex为空,没有值。但是这只是视图的视角,我们一旦查看原表就露馅了:

由于视图中没有Sdept属性,所以插入表s后Sdept为默认空值。此时我们的ssex值应该也为空,显示NULL,然而我们并没有做到这一点。所以说这样写也不好。

那么正确的写法是什么呢?根据上图的启示,为空的属性值我们就填NULL就好了,于是有了下面这行代码:

insert into v_xsqk values('2020206', '李红', NULL, '1983-12-3');

我们先执行试试:

已经成功的执行了该语句,然后让我们看看结果,首先是视图:

在ssex一栏中成功地显示了NULL。然后我们来看看表s:

这样看起来就协调多了,我们的问题就解决了。

 


总结一下,为了实现缺少属性值的插入,我们一共试了三种方法,其中第一种是存在语法错误的;第二种可以通过语法检查,但是插入的结果不尽人意;第三种方法应该是最好的插入方法,在为空的值的位置填上NULL,这样更加切合默认空值。

本次小分享到此结束,谢谢观看,希望能帮到大家。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值