Počítače, Typy súborov
SQL odlišný: opis, príklady, vlastnosti
Často pri použití SQL na načítanie dát z tabuliek, užívateľ dostane redundantné dáta existencie úplne zhodné duplicitné riadky. Aby sa predišlo tejto situácii, použite odlišný argumentu SQL vo vete Select. Tento článok sa bude diskutovať o príklady použitia tohto argumentu, ako aj situácie, v ktorých by mala byť podaná opustené argument.
Než budeme pokračovať, aby zvážila konkrétne príklady, vytvorenie databázy potrebnej pár stolov.
príprava tabuľky
Predstavme si, že máme databázu sú uložené informácie o tapetu prezentované v dvoch tabuľkách. Táto tabuľka oboi (tapety) s identifikačným poli (identifikátor), typu (typ tapiet. - papier, vinyl, atď), farba (farba), struct (konštrukcie) a cien (cien). A stolný Ostatky (zvyšky) s id_oboi polí (odkaz na jednoznačný identifikačný kód v tabuľke Oboi) a počtu (počet valcov na sklade).
Vyplniť tabuľku dát. V tabuľke pridať tapetu 9 záznamov:
Oboi | ||||
id | typ | farba | struct | cena |
1 | papier | viacfarebný | reliéfne | 56.9 |
2 | papier dvojvrstvový | béžový | hladký | 114,8 |
3 | vinyl | oranžový | reliéfne | 504 |
4 | fleece | béžový | reliéfne | 1020,9 |
5 | papier dvojvrstvový | béžový | hladký | 150,6 |
6 | papier | viacfarebný | hladký | 95.4 |
7 | vinyl | hnedý | hladký | 372 |
8 | fleece | biela | reliéfne | 980,1 |
9 | plátno | ružový | hladký | 1166,5 |
V tabuľke s pozostatkami - a deväť záznamov:
ostatku | |
id_oboi | počítať |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Pristúpime k opisu zreteľné poriadku v SQL.
Umiestnite zreteľný v klauzule SELECT
odlišný argument by mal byť umiestnený bezprostredne po Vybrať kľúčové slovo v dotazoch. Sa prihlásil do všetkých stĺpcov uvedených vo vete Select, pretože budú vylúčené z konečného výsledku otázky je úplne identické struny. Takže akonáhle je dostatočne špecifikovať pri písaní SQL «select distinct» žiadosti. Výnimkou je použitie odlišných funkcií vnútri kameniva, ktoré vyzerajú na o niečo neskôr.
Treba mať na pamäti, že väčšina z databázy a nie je schopný rozpoznať typ požiadavky:
SELECT zreteľný Ostatki.Count, ktoré je oddelené oboi. * Z Oboi INNER JOIN Ostatky ON Oboi.id = Ostatki.id_oboi |
Tam nebolo považované za tvrdenia niekoľkokrát alebo raz uvedené, ale pred druhým, tretím alebo iného vybraného stĺpca. Dostanete chybu s odkazom na chyby v syntaxi.
Použitie odlišné otázky na štandardné
Je zrejmé, že so správnymi stavebné konštrukcie stolov a ich plnenia v rámci jednej tabuľky vylúčená situácia, keď sú úplne identické struny. Preto je spustenie dotazu «Vyberte odlišný *» vzorkou jednom stole je nepraktické.
Predstavme si situáciu, kedy musíme vedieť, aký typ máme tapetu, len pre pohodlie, triediť podľa typu:
SELECT Oboi.type Z Oboi poradí podľa typu |
A získať výsledky:
typ |
papier |
papier |
papier dvojvrstvový |
papier dvojvrstvový |
vinyl |
vinyl |
plátno |
fleece |
fleece |
Ako je vidieť v tabuľke existujú duplicitné riadky. Pridáme Ak návrh Vyberte odlišný:
SELECT zreteľný Oboi.type Z Oboi poradí podľa typu |
dostaneme výsledok bez opakovania:
typ |
papier |
papier dvojvrstvový |
vinyl |
plátno |
fleece |
Teda, ak je správne zadať údaje v tabuľke, potom ihneď po telefonáte alebo požiadavky odberateľov môžeme odpovedať, že kvapalina tapety, sklenené vlákno a akrylové tapety k dispozícii v obchode nie sú. Vzhľadom k tomu, že mnoho obchodov sa zvyčajne nie je obmedzený na sto tapety, zobrazenie zoznamu nejedinečné typov by bolo celkom náročné na pracovnú silu.
Použitie rôznych agregačných funkcií v rámci
SQL odlišný argument môže byť použitý s akýmkoľvek agregačné funkcie. Ale pre Min a Max svojej žiadosti nebude mať žiadny efekt, ale pri výpočte sumy alebo priemerná hodnota zriedka k situácii, kedy by nikto vziať do úvahy opakovaní.
Predpokladajme, že chceme zistiť kapacitu nášho skladu a zaslať túto požiadavku, spočíta celkový počet závitov na sklade:
SELECT sum (Ostatki.count) Z ostatku |
Žiadosť bude dať odpoveď 143. Ak však zmeníme na:
SELECT súčet (zreteľný Ostatki.count) Z ostatku |
získame úhrnom 119, ako tapetu Čísla dielov 3 a 7 sú na sklade v rovnakej výške. Je však zrejmé, že odpoveď je zle.
Najčastejšie sa používa v SQL odlišné funkcie Count. Takže môžeme ľahko zistiť, ako veľa jedinečných druhov tapiet, máme:
SELECT count (zreteľný Oboi.type) Z Oboi |
A získať výsledok - 5: obyčajný papier a dvojvrstvovú vinyl a netkanej textílie. Iste všetci videli reklamy, ako napríklad: "Len máme viac ako 20 rôznych druhov tapiet," čím sa rozumie, že tento obchod nie je len o pár desiatok rolí a rôzne tapety moderných typov.
Je zaujímavé, že v rovnakom dotazu, môžete zadať celý rad funkcií ako Count atribútov DISTINCT a bez neho. To je jediná situácia, keď odlišné v Select'e môžu byť prítomné niekoľkokrát.
Kedy opustiť použitie argumentu
Z použitia odlišného argumentu SQL by malo byť odpustená v dvoch prípadoch:
- Ak je vykonať výber tabuliek a sme presvedčení, v jedinečnej hodnoty každého. V tomto prípade použitia argumentu je nevhodná, pretože sa jedná o dodatočný náklad na serveri alebo klienta (v závislosti od typu DBMS).
- Bojíte sa straty dát. Poďme vysvetliť.
Predpokladajme, že šéf požiada, aby ste vypísať tapety, ktoré máte s označením iba dvoch stĺpcov - typ a farbu. Zo zvyku si dať argument zreteľný:
SELECT zreteľný Oboi.type, Oboi.color Z Oboi ORDER BY Oboi.type |
A - k strate dát:
typ | farba |
papier | viacfarebný |
papier dvojvrstvový | béžový |
vinyl | hnedý |
vinyl | oranžový |
plátno | ružový |
fleece | béžový |
fleece | biela |
To môže vyvolať dojem, že papier tapety (konvenčné a dual-layer), máme iba jednu myseľ, v skutočnosti, a to aj v našom malom stolíku dvoch článku (za následok bez zreteľné):
typ | farba |
papier | viacfarebný |
papier | viacfarebný |
papier dvojvrstvový | béžový |
papier dvojvrstvový | béžový |
vinyl | hnedý |
vinyl | oranžový |
plátno | ružový |
fleece | biela |
fleece | béžový |
Preto, ako je písomne akúkoľvek požiadavku s argumentom výraznou musia byť opatrní a kompetentní rozhodovať o jeho uplatňovaní, v závislosti od úlohy.
alternatívne odlišný
V rozpore s tvrdením zreteľný - Všetky argumenty. Vo svojom návrhu sú duplicitné riadky uložené. Ale ako predvolené databázu a zistí, že je potrebný na zobrazenie všetkých hodnôt, argument All - je to skôr kvalifikant než skutočný argument funkcie.
Similar articles
Trending Now