我對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