我对SQL很陌生,从表中选择时无法找到描述*和NULL之间区别的资源。从SQL中的表中选择时,*和NULL之间有什么区别?
例如:
SELECT null, null, *, null FROM items
那是比任何不同:
SELECT null, null, null, null FROM items
,是这个有什么不同比:
SELECT * FROM items
如果只有四列开始?
我对SQL很陌生,从表中选择时无法找到描述*和NULL之间区别的资源。从SQL中的表中选择时,*和NULL之间有什么区别?
例如:
SELECT null, null, *, null FROM items
那是比任何不同:
SELECT null, null, null, null FROM items
,是这个有什么不同比:
SELECT * FROM items
如果只有四列开始?
当然有。
第一招:
SELECT null, null, null, null FROM items
将选择在每个NULL
值,四列无论此表items
值和列。但是返回的行数将等于items
表中的行数,如果items
表中有n行,它将返回n行,所有列的值都为NULL
。
但是:
SELECT * FROM items
将选择所有与此表items
所有值的列。
硒它们是完全不同的。
在你的情况,因为只有四列,第一个将总是选择四种NULL
列,其中是第二个将包含价值选择。
是的,每一个都是不同的。当您从表格中选择您所提供的查询时,表格中列的数量无关紧要。查看每个查询的差异。
SELECT null,null,*,null FROM items;
SELECT NULL,NULL,NULL,NULL FROM物品;
SELECT * FROM物品;
的第一个查询将显示相同数量的记录如在表格中。但是这些值将在选择查询中被替换为空值。
SELECT null, null, null, null FROM items
这类似于
SELECT 5, 5, 5, 5 FROM items
第二个查询,
SELECT * FROM items
Diplays与价值观行。
添加到马哈茂德的回答,我可以解释一种情况,当你需要一个SELECT NULL。
假设你有2个表,T1 3列和t2有4列。你决定写一个涉及这些表的UNION的查询。
SELECT * FROM t1
UNION
SELECT * FROM t2
以上查询不起作用,因为每个表中的列数不同,因此联合操作不能由SQL引擎执行。为了解决这个问题,您需要从t1中选择一个空列,并在访问查询结果集时在应用代码中正确处理它。
SELECT *, null FROM t1
UNION
SELECT * FROM t2
现在无论是单个查询上面会有4列,从而导致一个成功的UNION操作。
也就是说,如果使用UNION ALL,相同的查询将会正常工作,因为如果列数不同,它会自动将NULLS添加到结果集。
我知道的例子并没有太大的意义,但我希望你明白使用空值的点。
谢谢,这是也有帮助。 – Ci3 2013-04-07 07:19:41
你正在使用什么RDBMS? – 2013-04-07 06:44:26
我不知道,这不是我的服务器 – Ci3 2013-04-07 06:47:04
我不是说任何冒犯,但你应该找到一个关于SQL的教程。这是一个非常基本的问题,如果你需要问它,你将需要学习很多来完成任何事情。 :-) – 2013-04-07 06:54:30