数据库的外键可以为空,也可以非空,但是如果非空,则这个值必须在主表中存在。
比如主表是一个班级,主键是班级id,
字表是学生分配班级表,主键是学生id,外键是所在班级id。
如果一个学生的外键id为空,说明这个学生还没有被分配到任何一个班级
如果一个学生的外键id非空,并且是班级表中的某个id,则说明学生分配到这个班级
如果一个学生的外键id非空,并且不属于任何班级,则数据插入肯定报错。也就是说这种情况不存在。
追问:
何时为空,是否是它不作为主键的时候?
追答:
上面已经说的很清楚了,什么时候都可以为空啊,为空就代表这个这个学生还没有分配到班级,所以子表的数据外键列如果为空,就说明业务上和主表上还没有关系。
看来你的数据库理论知识很差啊。建议你补补数据库理论知识。不然后期遇到个小问题你都不懂。