加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

mysql---varchar类型字段该不该设置可以为空或不为空

(2018-10-09 11:30:23)
标签:

it

分类: MYSQL
习惯:我经常设置为空默认DEFAULT NULL
问题:
新建一个user表字段为:
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(128) NOT NULL,
  `password` varchar(128) NOT NULL,
  `email` varchar(128) NOT NULL,
  `sex` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
然而我把sex设置为null
数据显示:
我想查sex值不等于1的值:
SELECT * from user where sex<>'1'
我预想的数据应该是这23条数据都可以查出来,可是查出来的结果:
http://s6/mw690/004bIdzyzy7ogaP8EGp95&690
只有这一条。字段为null的也不等于1,但是查询null条件要这么写:SELECT * from user where sex is null.所以建字段的时候一定要设置不能为空。当字段为空字符的时候,不为null的时候,sex<>'1'那些空字符串数据都能查出来。
结论:varchar类型字段一定要设置不能为null。
如果有这样的需求。两个字段中有一个可能为null,但是两个字段联合创建唯一索引,其中一个字段为null,唯一索引是不起作用的。如果设置了不能为空,字段中有空字符,唯一索引是会生效的。所以null类型在特殊情况是可以用的,没有特殊情况一般设置not null.


根据自己遇到的问题总结,感觉有什么不对。大神们随时指导

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有