Računala, Vrste datoteka
SQL različita: opis, primjere, svojstva
Često kada koristite SQL za dohvaćanje podataka iz tablice, korisnik prima suvišan podatak je postojanje apsolutno identične dvostruke redove. Kako bi izbjegli ovu situaciju, koristiti SQL poseban argument u rečenici Select. Ovaj članak će se raspravljati primjere uporabe ovog argumenta, kao i situacije u kojima se zahtjev treba biti napušten od strane argumenta.
Prije nego što nastavite uzeti u obzir specifične primjere, stvoriti bazu podataka potrebnih par stolova.
tablica priprema
Zamislite da imamo bazu podataka pohranjuje podatke o tapetama predstavljen u dvije tablice. Ova tablica oboi (pozadina) sa id polja (jedinstveni identifikator), koja je vrsta (vrste tapeta -. Papir, vinil, itd), boja (boje), struct (struktura) i cijena (cijena). I stol Ostatki (ostaci) s id_oboi polja (referenca na jedinstveni identifikator u tablici Oboi) i count (broj valjaka na lageru).
Ispunite tablicu podataka. U tablici dodati tapeta 9 evidencije:
Oboi | ||||
id | vrsta | boja | struct | cijena |
1 | papir | šaren | isklesan | 56,9 |
2 | papira dvoslojne | bež | glatko | 114,8 |
3 | vinil | narančasta | isklesan | 504 |
4 | runo | bež | isklesan | 1020,9 |
5 | papira dvoslojne | bež | glatko | 150,6 |
6 | papir | šaren | glatko | 95,4 |
7 | vinil | smeđ | glatko | 372 |
8 | runo | bijela | isklesan | 980,1 |
9 | tkanina | roze | glatko | 1166,5 |
Tablica s ostacima - i devet evidencije:
Ostatki | |
id_oboi | računati |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Mi smo prešli na opisu različita reda u SQL.
Postavite različita u SELECT
razlikuje argument treba staviti odmah nakon Select ključnu riječ u upitima. On se primjenjuje za sve stupce navedene u rečenici Select, jer će biti isključeni iz konačnog rezultata upita je apsolutno identične žice. Dakle, jednom je dovoljno navesti prilikom pisanja SQL «odabrati poseban» zahtjev. Iznimka je korištenje različitih unutar agregatnih funkcija koje izgledaju na malo kasnije.
To treba imati na umu da je većina podataka i ne prepoznaje svoju vrstu zahtjeva:
SELECT DISTINCT Ostatki.Count, različit Oboi *. IZ oboi INNER JOIN Ostatki NA Oboi.id = Ostatki.id_oboi |
Nije se smatrao argument nekoliko puta ili jednom navedeno, ali prije drugog, trećeg ili drugog odabranog stupca. Vi ćete dobiti greška se odnosi na pogreške u sintaksi.
Primjena različitih upiti u standardnom
Očito je da uz pravilnu izgradnju strukture stolova i njihovo punjenje u jednoj tablici isključeni situaciju kada postoji apsolutno identične žice. Stoga, izvršenje upit «Odaberite izrazitu *» na uzorku od jednog stola je nepraktično.
Razmislite o situaciji kada moramo znati što tip imamo pozadinu, samo za praktičnost, razvrstati prema vrsti:
SELECT Oboi.type IZ Oboi bi po vrsti |
I dobiti rezultate:
vrsta |
papir |
papir |
papira dvoslojne |
papira dvoslojne |
vinil |
vinil |
tkanina |
runo |
runo |
Kao što se vidi u tablici postoje dvostruki redovi. Ako dodamo prijedlog Odaberi razlikuje:
SELECT DISTINCT Oboi.type IZ Oboi bi po vrsti |
dobili smo rezultat bez ponavljanja:
vrsta |
papir |
papira dvoslojne |
vinil |
tkanina |
runo |
Dakle, ako se pravilno unesete podatke u tablici, a zatim odmah nakon telefonskog poziva ili zahtjev kupaca možemo odgovoriti da je tekućina pozadina, fiberglasa i akril pozadina dostupna u trgovini nisu. S obzirom da je raspon trgovinama obično nije ograničen na sto pozadinu, pregledali popis ne jedinstvenih vrsta će biti prilično intenzivan rad.
Primjena različitih agregata funkcije unutar
SQL različit argument može se koristiti s bilo kojim agregata funkcije. No, za Min i Max njegove primjene neće imati nikakvog učinka, ali kod izračuna iznos ili prosječna vrijednost je rijetko stanje u kojem nitko ne bi uzeti u obzir ponavljanja.
Pretpostavimo da želimo provjeriti kapacitet našeg skladišta i poslati taj zahtjev, izračunava ukupan broj navoja na lageru:
SELECT SUM (Ostatki.count) IZ Ostatki |
Zahtjev će dati odgovor 143. Ako je, međutim, da će se promijeniti u:
SELECT suma (različit Ostatki.count) IZ Ostatki |
dobivamo ukupni 119, kao pozadinu za brojeve dijelova 3 i 7 su na lageru u istom iznosu. Međutim, očito je da je odgovor pogrešan.
Najčešće se koristi u SQL različita funkcija COUNT. Dakle, lako možemo saznati kako mnoge jedinstvene vrste tapeta, mi imamo:
SELECT kut (različit Oboi.type) IZ oboi |
I dobiti rezultat 5 - obični papir i dvoslojni vinil i ne-tkani tkanina. Sigurno svi vidjeli reklame kao što su: „Samo imamo više od 20 različitih vrsta tapeta”, pod kojim se podrazumijeva da taj dućan nije samo par desetaka peciva i raznih pozadina modernih tipova.
Zanimljivo je da se u isti upit, možete navesti više funkcija kao što su Točka pripisuju različita, i bez njega. To je jedina situacija u kojoj razlikuje u Select'e mogu biti prisutni nekoliko puta.
Kada napustiti korištenje argumenta
Od korištenja SQL različita argumenta treba napustiti u jednom od dva slučaja:
- Vi izvršiti izbor stolova i uvjereni smo u jedinstvenoj vrijednosti svakog. U tom slučaju, korištenje argumenta je neprimjerena, jer je to dodatno opterećenje na server ili klijent (ovisno o vrsti DBMS).
- Bojite li se gubitka podataka. Neka nam objasni.
Pretpostavimo da gazda traži da se popis pozadinu da ste, sa naznakom samo dva stupca - vrstu i boju. Iz navike, dati argument različit:
SELECT DISTINCT Oboi.type, Oboi.color IZ oboi ORDER BY Oboi.type |
A - izgubiti neke podatke:
vrsta | boja |
papir | šaren |
papira dvoslojne | bež |
vinil | smeđ |
vinil | narančasta |
tkanina | roze |
runo | bež |
runo | bijela |
To može dati dojam da je papir pozadina (konvencionalni i dvoslojni) smo samo jedan um, u stvari, čak iu našem malom stolu dva članka (rezultat bez izraženi):
vrsta | boja |
papir | šaren |
papir | šaren |
papira dvoslojne | bež |
papira dvoslojne | bež |
vinil | smeđ |
vinil | narančasta |
tkanina | roze |
runo | bijela |
runo | bež |
Dakle, kao što je u pisanom obliku svaki zahtjev s argumentom izrazitu potrebu da bude oprezan i nadležno da odlučuje o njegovoj primjeni, ovisno o zadatku.
alternativa različita
Za razliku od argumenta različita - Sva argument. U svojoj prijavi duple redovi su pohranjene. No, kao i standardnoj bazi podataka i smatra da je potrebno prikazati sve vrijednosti, argument sve - to je prilično kvalifikacijska od stvarnog argumenta funkcije.
Similar articles
Trending Now