FOREIGN KEY 约束并不仅仅只可以与另一表的 PRIMARY KEY 约束相链接,它还可以定义为引用另一表的 UNIQUE 约束。FOREIGN KEY 约束不允许空值,但是,如果任何组合 FOREIGN KEY 约束的列包含空值,则将跳过 FOREIGN KEY 约束的校验。Top
外键可以为空,如
CREATE TABLE WW
(A CHAR(6) PRIMARY KEY ,
B CHAR(9),
C CHAR(9),
FOREIGN KEY C REFERENCES BB(C))
在AA 表中C是外键,C在BB表中肯定为主键。
AA中的C要么为BB表中C的取值,要么为空值
1、真正的空值,也就是“没有输入的值”,可以出现在大多数类型的字段中(如果没有别的约束条件),SQL server中表示为null,显示为<NULL>,手工在SQL server企业管理器中输入的方法是按Ctrl+0。它在.NET中对应System.DBNull.Value。在T-SQL命令中,判断一个值是不是空值,要用“is null”而不是“= null”;处理空值有个ISNULL函数,它使用指定的值替换null。用ADO.NET从数据库得到的空值无法自动转化为空字符串或Nothing,须手动检测:如果得到System.DBNull.Value,则赋给数据对象Nothing或其它自定义的有意义的值。2、空字符串(零长度字符串),只出现在字符串类型(如nvarchar)的字段中,SQL server中表示为'',显示为空白,手工在SQL server企业管理器中输入时清空一个单元格即可。它在.NET中对应System.String.Empty,也就是我们常用的""。在T-SQL命令中处理空字符串和处理一般的字符串没什么区别。用ADO.NET从数据库得到的空字符串也和一般的字符串没什么区别。
数据库设计里的非空都是 null
从数据存储上来说,当然是设置成可为null的好了;因为null是不分配存储空间的。可是充使用的方便性上来说,使用默认值,在很多情况下,是很方便的。
至少不要考虑为空的情况。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)