PočítačeTypy 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:

  1. 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).
  2. 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. Veríme, že si teraz pochopili, že je použitý odlišný (SQL). Popis vám úplné informácie o uskutočniteľnosti používaní tohto argumentu pri riešení rôznych problémov. Koniec koncov, ako sa ukázalo, aj taký jednoduchý argument vo svojej žiadosti skrýva veľmi hmatateľný možnosť straty niektoré dáta a zobrazovať nepresné informácie.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 sk.birmiss.com. Theme powered by WordPress.