MYSQL问题,为什么设置为不允许为空的字段却可以为空呢? 既然你已经设置了NOT NULL,你还得有个default的值啊。否则还是有mysql自己的默认值的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NOT NULL并不是当你在插入空值或无值的时候报错,而是自动给你补上一个空值 记得以前考C的时候考过这道题目(名词解释:空值;NULL),当时没在意,没想到过了N年后还是得弄懂他... 晕,这个我来说一下吧。not null 和 null 是标记该字段是否允许插入空值(这里的空值是一个特殊字符 \0 )。 not null 是不允许插入这个值,那么你空着这个字段的时候,这个字段里就是空的,没有任何字符。如果你设置为null,那么他的默认值就是null,如果你填入null或者空着,那么他会插入一个特殊字符 \0 。仅此而已,允许插入null是为了方便做判定,但是却影响索引,查询结果也可能产生输出。因此,在大多数应用中,都默认为not null。如果没有需要也最好都设置为not null~ not null 低版本的mysql不插值好像会报错的 ... 现在又不会了 反正没值的话就自动插个空值解决的办法也很简单 在插入的时候判断插入字段是不是有值 比如 if $_POST["name"]==NULL { echo "没有输入数值"; } 这样就好了 一些根本不懂空值和NULL有什么区别,误导初学者。所谓的NULL就是什么都没有,连\0都没有,\0在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一个字节都没有。在数据库里是严格区分的,任何数跟NULL进行运算都是NULL, 判断值是否等于NULL,不能简单用=,而要用IS关键字, Mysql3.23.0或以后支持用<=>用来比较两个NULL值是否相等, 即 select * from table where id <=> NULL.为什么会出现NULL?这是来源于数据库的左右连接,不是凭空想出来的。比如:A(ID, Name), B(ID, Address)1, Name1 1, Shanghai2, Name2 3, Beijing当A左连接B则得到: 1, Name1, Shanghai2, Name2, NULL当A右连接B则得到: 1, Name1, Shanghai3, NULL, Beijing数据库的字段ID设为NOT NULL, 仅仅说明该字段不能为NULL, 也就是说只有在INSERT INTO table(ID) VALUES(NULL);这种情况下数据库会报错,而INSERT INTO table(ID) VALUES('');这不能说明是NULL, 数据库系统会根据ID设的缺省值填充,或者如果是自增字段就自动加一等缺省操作。 篮球赔率的接口 用什么写 关于php的正则表达式! 100分求一个比较少见的问题 汉字显示为“?” 投票贴:关于数据结构和算法 菜鸟问题:帮我看看有何错误 统计一个页面被访问过的时间 谁对PHPLIB比较了解,谢谢. 高手帮忙--打印问题! 怎样制作像csdn这样的页面? 一个非常让人费解的问题,高手快进来看看! 从ASP转换到PHP!
晕,这个我来说一下吧。not null 和 null 是标记该字段是否允许插入空值(这里的空值是一个特殊字符 \0 )。 not null 是不允许插入这个值,那么你空着这个字段的时候,这个字段里就是空的,没有任何字符。
如果你设置为null,那么他的默认值就是null,如果你填入null或者空着,那么他会插入一个特殊字符 \0 。
仅此而已,允许插入null是为了方便做判定,但是却影响索引,查询结果也可能产生输出。因此,在大多数应用中,都默认为not null。如果没有需要也最好都设置为not null~
A(ID, Name), B(ID, Address)
1, Name1 1, Shanghai
2, Name2 3, Beijing当A左连接B则得到:
1, Name1, Shanghai
2, Name2, NULL当A右连接B则得到:
1, Name1, Shanghai
3, NULL, Beijing数据库的字段ID设为NOT NULL, 仅仅说明该字段不能为NULL, 也就是说只有在
INSERT INTO table(ID) VALUES(NULL);
这种情况下数据库会报错,而
INSERT INTO table(ID) VALUES('');
这不能说明是NULL, 数据库系统会根据ID设的缺省值填充,或者如果是自增字段就自动加一
等缺省操作。