NOT NULL 和 DEFAULT 的区别

目录

NOT NULL

DEFAULT

NOT NULL 和 DEFAULT


NOT NULL

如果一个字段设置了 NOT NULL ,那这个字段不传递或传null就会报错,所以必须传递。

DEFAULT

如果一个字段设置了 DEFAULT,那这个字段可以不传递,也不会报错。如果不传,新增时按照default值设置。如果传了(包括传null)按照传递值处理。

NOT NULL 和 DEFAULT

1、这个字段可以不传递,也不会报错,会按照default值设置。
2、如果传递了但是字段为null,会报错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
建立表的SQL批处理代码如下: 1.用户表: CREATE TABLE `user` ( `Id` int(11) NOT NULL auto_increment, `name` varchar(16) NOT NULL default '无名老饕', `password` varchar(16) NOT NULL default '', `power` int(2) NOT NULL default '0', `image` varchar(100) default 'D:\\Code_Maker\\eclipse9.0\\test\\WebRoot\\images\\TX.gif' COMMENT '头像', `mail` varchar(255) default NULL, `sex` varchar(255) NOT NULL default '', `flag` varchar(5) NOT NULL default 'false' COMMENT 'false代表该用户未登陆', PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; 2.新闻表: CREATE TABLE `news` ( `Id` int(11) NOT NULL auto_increment, `title` varchar(160) character set utf8 NOT NULL default '', `content` mediumtext character set utf8 NOT NULL, `clicktime` int(11) default '0', `image` varchar(250) character set utf8 NOT NULL default '', `type` varchar(100) character set utf8 NOT NULL default '', PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin COMMENT='信息'; 3.主题帖表: CREATE TABLE `tiezi` ( `Id` int(11) NOT NULL auto_increment, `topic` varchar(255) NOT NULL default '' COMMENT '帖子的主题', `uid` int(11) NOT NULL default '0' COMMENT '发帖人ID号', `content` mediumtext NOT NULL COMMENT '帖子的大体内容', `time` datetime NOT NULL default '0000-00-00 00:00:00', `clicktime` int(11) NOT NULL default '0', PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='主动发帖的(区别)于评论'; 4.评论表: CREATE TABLE `commentary` ( `Id` int(11) NOT NULL auto_increment, `nid` int(11) NOT NULL default '0' COMMENT '对应帖子编号', `uid` int(11) NOT NULL default '0' COMMENT '对应评论者编号', `content` mediumtext character set utf8 NOT NULL COMMENT '评论的内容', `time` datetime NOT NULL default '0000-00-00 00:00:00' COMMENT '评论时间', PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin COMMENT='评论'; 5.投票表: CREATE TABLE `vote` ( `Id` int(11) NOT NULL auto_increment, `type` int(11) NOT NULL default '0', `topicid` int(11) NOT NULL default '0', `title` varchar(255) NOT NULL default '', `result` int(11) NOT NULL default '0', `ip` text NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 数据库部分如上,我就不传脚本了,上学期做的课程设计,话说这个学期学java EE 又做了系统,代码姐姐我全包办了。。。哎~以前打酱油,现在没人让我打了,要自己写了~不过动手能力有加强,理解深入了!特别是java EE,纯粹自学了,上课看考研书去了。。。加油!!!
### 回答1: not null default '' 是数据库中的一个约束条件,表示该字段不能为空,并且默认值为一个空字符串。如果插入数据时没有指定该字段的值,则会自动填充为空字符串。这样可以保证数据的完整性和一致性。 ### 回答2: not null default '' 是一种MySQL中字段约束的形式,用于保证字段不为空,并在插入数据时给予默认值。在MySQL中,一个字段如果被标记为 not null,则在插入数据时必须给该字段赋值,否则会报错。而使用 default '' 则可以给该字段赋予默认值,当插入数据时如果该字段没有指定值,则会使用默认值。 例如,如果有一个名为 name 的字段,并且设置为 not null default '',则在插入数据时必须给 name 字段赋值,否则会报错。如果插入数据时没有指定 name 字段的值,则会使用默认值,即空字符串。 not null default '' 这种约束不仅可以保证数据的完整性,还可以简化数据插入的操作,减少因忘记给某个字段赋值而产生的错误。不过需要注意的是,默认值是一个空字符串,如果需要使用其他默认值,则需要更改约束中的''为所需的默认值。 ### 回答3: "Not null default ''" 是一种 MySQL 数据库中字段属性的设置。其含义是,当一条新数据被插入到该表中时,该字段不能为 NULL,但如果没有特别指定其值,则默认为一个空字符串,即 ''。 这种设置可以在创建表的 SQL 语句中进行设置,例如: CREATE TABLE customer ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL DEFAULT '', age INT(3) NOT NULL DEFAULT '0', email VARCHAR(50) DEFAULT NULL, PRIMARY KEY (id) ); 在上述示例中,字段 name 与 age 都被设置为 not null default ''。这意味着,当一个新的客户被插入到 customer 表中时,必须指定 name 和 age 的值,但如果没有指定,则它们将默认为一个空字符串和 0,而不是 NULL。 这种设置有助于提高数据完整性和一致性,因为它保证了每个记录都具有相同的字段值。此外,使用一个空字符串代替 NULL 也可以提高查询效率,并减少数据库存储开销。 需要注意的是,如果一个字段被设置为 not null default '',则在更新该字段时不能使用 NULL 值。如果使用了 NULL 值,则会导致错误或异常,这必须在应用程序中被捕获和处理。因此,在设计数据库表时应该谨慎考虑每个字段的属性设置,以确保其与应用程序的需求相匹配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值