黑马程序员技术交流社区

标题: sql 语句的简单疑问?? [打印本页]

作者: 郑丹丹1990    时间: 2013-4-8 21:13
标题: sql 语句的简单疑问??
本帖最后由 郑丹丹1990 于 2013-4-9 08:23 编辑

select *
from SC
where Grade =NULL(错误??)




select *
from SC
where Grade  is  NULL(正确???)

我会认为2个都正确。


作者: 何红卫    时间: 2013-4-8 21:36
很多语言很多时候会把空定义为不确定,所以不确定的东西不一定等于不确定。
作者: 何红卫    时间: 2013-4-8 21:42
Null在数据库中表示 不知道的数据,主要有3种意思:
1)知道数据存在,但不知道具体值.
2)不知道数据是否存在.
3)数据不存在.
所以,null未必就一定等于null啦,为了避免这个错误,所以就没有这种=null的语法
作者: 邓建军    时间: 2013-4-8 21:45
is 指的是符合一种性质
如所选修的课是空,说明课的属性是空
假如学号sno与课程号cno及成绩grade的关系是sc(sno,cno,grade)
那么这个条件应该是这么表达的cno is null

=  指的是数值上的等价
如课程的成绩是0
那么这个条件应该是这么表达 grade=0
作者: HM朱百青    时间: 2013-4-8 23:52
null表示不知道,如果你直接让一个字段等于null,就是表示让字段等于不知道,那还是不知道!
而下面的is null还表示了判断,所以它是做了处理的,故是正确的
作者: HM刘磊    时间: 2013-4-9 16:06
第一个sql语句中where后的语句意思为Grade等值null  ,null在sql中表示为不确定其值,所以Grade不一定等值于null
在第二个sql语句中where 后的语句意思为判断Grade是否属于null类型
作者: atwell    时间: 2013-4-12 10:05
SQL 判断NULL 只能用is null和 not null




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2