NULL值得数据出现在数据库发展的最初阶段的确给开发和使用者带来了很大的便利,这是因为它为我们节省了太多的磁盘空间,而且在那个年代磁盘是相当昂贵的。但是随着科技的发展,硬件系统的改进突飞猛进,NULL又给我们带来了很大的困扰。

下面我们来看下当我们进行JOIN操作时候,NULL值给我们带来的困扰。

CREATE TABLE dbo.Student
(
Sno int null
,Name nvarchar(23)
)
CREATE TABLE dbo.Score
(
Sno int
,Score INT
)
INSERT INTO dbo.Student(Sno,Name)VALUES(1,'Jesse');
INSERT INTO dbo.Student(Sno,Name)VALUES(2,'Jessca');
INSERT INTO dbo.Student(Sno,Name)VALUES(3,'June');
INSERT INTO dbo.Student(Sno,Name)VALUES(4,'Supper'); INSERT INTO dbo.Score(Sno,Score)VALUES (1,45)
INSERT INTO dbo.Score(Sno,Score)VALUES (1,56)
INSERT INTO dbo.Score(Sno,Score)VALUES (2,100)
INSERT INTO dbo.Score(Sno,Score)VALUES (3,25)
INSERT INTO dbo.Score(Sno,Score)VALUES (5,99) SELECT * FROM dbo.Student
SELECT * FROM dbo.Score

 下面向学生表中插入一条id 为NULL的值。

INSERT INTO dbo.Student(Sno,Name)VALUES(NULL,'Mike');

 看下几种JOIN 的结果

SELECT * FROM dbo.Student
SELECT * FROM dbo.Score SELECT *
FROM dbo.Student a
LEFT JOIN dbo.Score b
ON a.Sno=b.Sno SELECT *
FROM dbo.Student a
INNER JOIN dbo.Score b
ON a.Sno=b.Sno SELECT *
FROM dbo.Student a
RIGHT JOIN dbo.Score b
ON a.Sno=b.Sno SELECT *
FROM dbo.Student a
FULL JOIN dbo.Score b
ON a.Sno=b.Sno

  

这条NULL的值完全被作为一条新的id 值处理。

下面我们再为score插入一条NULL

INSERT INTO dbo.Score(Sno,Score)VALUES (NULL,98)

  

SELECT * FROM dbo.Student
SELECT * FROM dbo.Score SELECT *
FROM dbo.Student a
LEFT JOIN dbo.Score b
ON a.Sno=b.Sno SELECT *
FROM dbo.Student a
INNER JOIN dbo.Score b
ON a.Sno=b.Sno SELECT *
FROM dbo.Student a
RIGHT JOIN dbo.Score b
ON a.Sno=b.Sno SELECT *
FROM dbo.Student a
FULL JOIN dbo.Score b
ON a.Sno=b.Sno

  wi

此时,已经出来了好多的NULL,左表的NULL和右表的NULL都没有同时出现在一条记录里面,这意味着,NULL和NULL不是相等的。

 

最新文章

  1. windows 7(32/64位)GHO安装指南(序篇)~
  2. HTML是什么?如何使用?
  3. 使用PowerDesigner把oom设计图导出jpg格式的图片
  4. TCL:使用、添加库文件
  5. Linux 网络编程(多路复用)
  6. ORA-01157错误,丢失undo tablespace中数据文件的解决方法
  7. 关于python 序列 深拷贝
  8. Linux查看可执行程序所在路径
  9. php读取出字符串中的img标签中的图片路径
  10. avalon2学习教程13组件使用
  11. 1.PHP内核探索:从SAPI接口开始
  12. 深入剖析PHP输入流 php://input (转载 http://www.nowamagic.net/academy/detail/12220520)
  13. mysql如何给汉字按照首字母顺序排序
  14. DataGrid1
  15. 本地apt
  16. FileGeodatabase和PersonalGeodatabase与ArcSDEGeodatabase三种数据库比较.
  17. Python爬虫从入门到放弃(二十)之 Scrapy分布式原理
  18. MIPCMS V3.1.0 远程写入配置文件Getshell过程分析(附批量getshell脚本)
  19. Android:后台给button绑定onClick事件、当返回项目到手机页面时提示是否退出APP
  20. vueRouter lazyLoad

热门文章

  1. Flash of Unstyled Content (FOUC)
  2. php学习笔记-for循环
  3. little case1
  4. NSSelectorFromString 使用示例
  5. python3-while与continue
  6. Linux shell实现阳历转农历
  7. kaggle House_Price_XGBoost
  8. vimrc配置-中文编码和python中的中文注释
  9. 生成全局唯一ID
  10. iOS开发之蓝牙使用-建立连接的