計算機, 文件類型
SQL不同:說明書,實施例,特性
通常,當您使用SQL從表中檢索數據,用戶將收到冗餘數據是絕對相同的重複行的存在。 為了避免這種情況,可以使用SQL不同的說法在句子中選擇。 本文將討論哪些應用程序應該由參數放棄使用這一論點的例子,還有的情況。
在我們著手考慮具體的例子,創建所需的情侶對表的數據庫。
編制表
假設我們有數據庫存儲有關兩個表中提出的牆紙信息。 此表鰲拜(壁紙)與ID字段(唯一標識符),類型(類型壁紙。 - 紙,乙烯基等)的,顏色(顏色),一個struct(結構)和價(價格)。 和表Ostatki(殘基)與id_oboi字段和計數(軋輥的庫存的數量)(在表中鰲拜所述唯一標識符的引用)。
填寫的數據表。 在表中添加壁紙9條:
鰲拜 | ||||
ID | 類型 | 顏色 | 結構 | 價格 |
1 | 紙 | 彩色 | 壓花 | 56.9 |
2 | 紙雙層 | 米色 | 光滑 | 114.8 |
3 | 乙烯基 | 橙 | 壓花 | 504 |
4 | 羊毛 | 米色 | 壓花 | 1020.9 |
五 | 紙雙層 | 米色 | 光滑 | 150.6 |
6 | 紙 | 彩色 | 光滑 | 95.4 |
7 | 乙烯基 | 棕色 | 光滑 | 372 |
8 | 羊毛 | 白 | 壓花 | 980.1 |
9 | 布 | 粉紅色 | 光滑 | 1166.5 |
與遺體的表格 - 九記錄:
Ostatki | |
id_oboi | 算 |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
五 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
我們繼續在SQL的不同順序的描述。
將SELECT子句中的不同
不同的參數應該立即在查詢選擇關鍵字後放置。 他申請在句子中選擇指定的所有列,因為它會從最終的查詢結果中排除是絕對相同的字符串。 因此,一次就夠了指定寫SQL語句時,«選擇不同»請求。 唯一的例外是使用的是看待會兒不同的內部聚合函數。
應當記住,大多數的數據庫,不承認你的請求類型:
SELECT DISTINCT Ostatki.Count,不同的鰲拜。* 從鰲拜 INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
有沒有考慮參數多次或指定一次,但第二,第三或其他選定列前。 你會得到一個錯誤指的是一個錯誤的語法。
在標準應用不同的查詢
很顯然,通過適當的建築結構表和一個表內填充它們排除在外的情況時有絕對相同的字符串。 因此,查詢執行與一個表的樣本«SELECT DISTINCT *»是不切實際的。
考慮以下情況,當我們需要知道什麼類型的,我們有壁紙,只是為了方便,按類型排序:
SELECT Oboi.type 從類型鰲拜秩序 |
而得到的結果:
類型 |
紙 |
紙 |
紙雙層 |
紙雙層 |
乙烯基 |
乙烯基 |
布 |
羊毛 |
羊毛 |
如表中看到有重複的行。 如果再加上建議選擇不同的:
SELECT DISTINCT Oboi.type 從類型鰲拜秩序 |
我們得到的沒有重複的結果:
類型 |
紙 |
紙雙層 |
乙烯基 |
布 |
羊毛 |
因此,如果在一個表中正確輸入數據,然後買家的電話或請求之後,立即就可以回答這個問題在商店中可用的液體壁紙,玻璃纖維和丙烯酸壁紙都沒有。 由於商舖的範圍通常不限一百壁紙,查看非唯一類型的列表將是相當費力。
的內的不同集合函數應用
SQL不同參數可與任何集合函數中使用。 但對於最小和最大的應用將沒有任何效果,但在計算總和或平均值時,很少的情況下沒有人會考慮到的重複。
假設我們要檢查我們的倉庫的容量,並提出了這個要求,計算庫存線圈的總數:
SELECT SUM(Ostatki.count) 從Ostatki |
請求會給出答案143.但是,如果我們將變更為:
SELECT SUM(不同Ostatki.count) 從Ostatki |
我們獲得總119,如牆紙為部件號3和7是在庫存中相同的量。 然而,很明顯,答案是錯的。
最常見的SQL不同的功能計數使用。 因此,我們可以很容易地找出有多少獨特類型的壁紙,我們確實有:
SELECT COUNT(DISTINCT Oboi.type) 從鰲拜 |
和得到的5的結果 - 普通紙和雙層乙烯基和非織造織物。 當然都看到了廣告,如:“我們已經有超過20種不同的壁紙”,這是指,這個店是不是只是一個幾十卷及各種牆紙現代類型。
有趣的是,在相同的查詢,你可以像計數屬性DISTINCT指定多個功能,沒有它。 這是唯一的情況下在Select'e不同可能存在多次。
當放棄使用的說法
從使用SQL不同的說法應該在兩種情況之一被拋棄:
- 您進行選擇表,並在每個獨特的價值充滿信心。 在這種情況下,使用參數的不恰當的,因為它是服務器或客戶機(取決於DBMS的類型)上的附加負載。
- 你害怕失去你的數據。 讓我們來解釋一下。
假設老闆讓你列出你的壁紙,只有兩列的指示 - 類型和顏色。 出於習慣,你給不同的參數:
SELECT DISTINCT Oboi.type,Oboi.color 從鰲拜 ORDER BY Oboi.type |
和 - 丟失一些數據:
類型 | 顏色 |
紙 | 彩色 |
紙雙層 | 米色 |
乙烯基 | 棕色 |
乙烯基 | 橙 |
布 | 粉紅色 |
羊毛 | 米色 |
羊毛 | 白 |
它可能給人的印象是,紙壁紙(常規和雙層),我們只有一個想法,事實上,即使是在我們的兩篇文章的小桌子(無結果不同):
類型 | 顏色 |
紙 | 彩色 |
紙 | 彩色 |
紙雙層 | 米色 |
紙雙層 | 米色 |
乙烯基 | 棕色 |
乙烯基 | 橙 |
布 | 粉紅色 |
羊毛 | 白 |
羊毛 | 米色 |
因此,在寫作的說法不同需要小心和有能力決定其應用程序,這取決於任務的任何請求。
替代不同
相反的說法截然不同 - 所有的說法。 在其應用程序重複的行存儲。 但作為默認數據庫,並認為有必要顯示所有的值,參數全部 - 它,而不是實際的函數參數限定詞。
Similar articles
Trending Now