SQl2008中主键不能等于NULL,可是可以等于null,这是为啥。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQl2008中主键不能等于NULL,可是可以等于null,这是为啥。相关的知识,希望对你有一定的参考价值。
我的SQl2008是NULL和null都不允许的,可是舍友的允许主键为null,这是什么原因?
就是这样子,第一条记录也是奇葩的貌似是纯空格也可以了。
第二条记录就是null状态的了。
2、关系型数据库中的主键均不能为空,不管是单一列做为主键还是多列组合做为主键,都是不允许的
3、主键的概念你还不清楚,下面给你一些参考材料,你阅读后就会明白。
【主键(primary key)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表不能有多个主关键字,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。】 参考技术A 不可能允许主键为null的,肯定是看错了。。。
不然MS就别卖SQL2008数据库了。。
如果真有奇迹,最好贴个截屏,他主键(primarykey,还是允许null的),俺瞻仰瞻仰 囧追问
没看错啊,都好几次了,而且我们寝室装的一个版本,是不是哪里设置问题啊,还是装的有问题。
追答让他show下表描述的截屏(用他电脑登下你的百度知道),我觉得不可能啊
回答补充:
既然是nchar(字符)数据类型,应该是他插入的学号值就是‘null',而不是空值('')
你可以用这个SQL来鉴定下:
select 学号, len(学号) from shiyan5;
▲纯空格,也就是' ',其len(' ')也有1,并不是真正意义的空值,
▲'null',len('null')=4,虽然其显示貌似空值,但你仔细观察第二行的性别、籍贯列,当为空值查询出显示的是NULL,而且是斜体,那个应该是真正意义上的空值''。len('')=0的
呵呵,第一张截图就是第二张截图的设计图啊,第二张截图只是因为太长才截了前半部分来显示主要问题
追答那也说明第二张截图里的姓名为a的学号是存在的,不过是空格而已。还是那句话,理解空格和NULL是不同的两个东西很关键。倘若你再加一行记录,学号拷贝a对应的那个学号试试,你一试就明白为什么不让你保存了。
参考技术C NULL在SQL里是关键字,应该不区分大小写。如果你舍友的表允许null,那么很可能他的表定义与你的不完全相同。看看他的表定义就知道了。 参考技术D 是不是该字段设置问题?追问肯定不是的,我们上次实验课,舍友也是出现了这个问题。
会不会是哪个地方设置有问题,我们SQL装的都是同一个版本
说实在话,SQL2008我不太懂(mysql略懂一些),一起等高手吧。
sql where条件不等于空怎么写
select *from table where a不等于空
怎么写?????
where a <> null 参考技术B where a is not null 参考技术C where isnull(a,'')<>''
如果你不能理解 那么请去SQL帮助里查询 isnull 参考技术D SQL Server Or Oracle? 第5个回答 2007-04-10 where a!=null本回答被提问者采纳
以上是关于SQl2008中主键不能等于NULL,可是可以等于null,这是为啥。的主要内容,如果未能解决你的问题,请参考以下文章