怎么用sql语句添加非空列 我哪写错了?

帮忙看下... 帮忙看下 展开
 我来答
yxmichael
推荐于2018-08-05 · TA获得超过544个赞
知道小有建树答主
回答量:135
采纳率:100%
帮助的人:98.9万
展开全部
改变已有表的列字段,使用alter命令;
格式:
alter table 表名 add 新增字段名 字段类型 [列级约束]

例如:alter table student add grade int not null (not null 属于列级约束)

但可能出现以下的情况:
ALTER TABLE 只允许添加满足下述条件的列: 列可以包含空值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。

原因:表中原本有数据(存在很多行),在你新增加非空字段后,原来存在的行中的数据本来为空,但你又要求它非空,这样就矛盾了,所以该命名就不会执行,就会报错。

解决方法:
1、alter table student add grade int 不加非空约束;
2、update table student set grade=60 where grade is NULL 将存在的数据行中的grade字段同一设置成60分;
3、alter table student alter column grade int not null 增加非空约束;
TableDI
2024-07-18 广告
VLOOKUP函数在Excel中主要用于垂直查找数据,但无法直接一次性匹配多行数据。若要实现这一功能,可以采取以下方法:1. 使用辅助列和数组公式,通过IF函数结合TE电商平台TJOIN函数将多个匹配值合并到一个单元格中。2. 利用VLOO... 点击进入详情页
本回答由TableDI提供
sine882010
2011-04-05 · TA获得超过320个赞
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:211万
展开全部
ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。因为列 stuSum 不能包含空值且未指定 DEFAULT 定义,所以无法将该列添加到表 stuInfo中。
修改成:alter table stuInfo add column stuSum int not null default 0 应该就可以了。
如果你不想这样做,也可以分两步实现:
alter table stuInfo
add stuSum int null
alter table stuInfo
alter column stuSum int not null

如有问题,再讨论一下~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牧之卉0j1
推荐于2018-03-21 · TA获得超过1150个赞
知道大有可为答主
回答量:1689
采纳率:0%
帮助的人:1726万
展开全部
语法没错
因为表里面已经有数据了,当然不能添加非空列了,除非指定默认值
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式