你这样设置之后,是不能插入的空(NULL),而是能插入空串(\\'\\')。
站在用户的角度思考问题,与客户深入沟通,找到科尔沁右翼中网站设计与科尔沁右翼中网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、网站制作、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖科尔沁右翼中地区。
如果不让插入空串,应该使用check,例如:
CREATE TABLE table2 (
title varchar(50) NOT NULL,
message varchar(200) NOT NULL DEFAULT \\'内容\\',
msname varchar(50) NOT NULL DEFAULT \\'发布人\\',
date date NOT NULL,
PRIMARY KEY (`title`) ,
CHECK (title!=\\'\\')
) ;
创建表的时候:
create table table_name
(
id serial, // ---自增,item---
username char(20) not null, //---非空---
nation char(20) default 'China' //---默认值---
)
修改表的时候:
添加:
alter table table_name add(column_name char(120) default '默认值')
修改:
alter table table_name modify(old_name char(120) default '默认值')
我用的是informix数据库,不过整体上是相同的。你可以尝试一下,或者告诉我你用的是什麽数据库,我再帮你解决。
----------------------正义的分割线----------------------
发现你的问题了,你在修改表结构的时候,要求这个栏位不为空,可是你并没有给表的这个栏位赋值,这个效果就貌似"又要马儿跑,又不给草吃"。其实你只要一开始就给这个栏位赋一个默认值就可以了,如果这个栏位的值为空了,数据库就会给这个栏位赋值为默认值,不会出现真正的为空情况。
你尝试下下面的语句:
alter table [table名] add/modify columnname datatype default(defaultvalue)
不知道你为啥要这么问,没有数据当然可以这么设置了,如果有数据且设置列为空时,你设置非常,会提示设置不了,但没有数据的情况下,肯定是可以这么设置的。
空值是一种特殊的状态, 表示某一个字段"没有被处理过"
几乎在所有的数据库中甚至是编程语言中, 空与非空都有其存在的意义, 举个例子, 一个人员表中, 有一个年龄字段, 这个年龄字段如果为非 空, 则在不知道人员年龄的情况下, 数据无法入库, 否则会显示个奇怪的年龄(比如0岁, 或者-1岁等)
而有些情况泽不可以为空, 最常见的就是"主键", 比如身份证号之类的
可以。
MySQL 非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。
比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约束。
在创建表时设置非空约束
创建表时可以使用 NOT NULL 关键字设置非空约束,具体的语法格式如下:
字段名 数据类型 NOT NULL;