RačunalaTipove datoteka

SQL različita: opis, primjere, svojstva

Često kada koristite SQL dohvatiti podatke iz tablice, korisnik dobija suvišan podatak je postojanje apsolutno identična duplih redova. Da biste izbjegli ovu situaciju, koristite SQL poseban argument u rečenici Select. Ovaj članak će razgovarati primjere upotrebe ovog argumenta, kao i situacije u kojima se aplikacija treba biti napušten od strane argumenta.

Prije nego što nastavimo da razmotre konkretne primjere, stvoriti bazu podataka potrebno nekoliko stolova.

priprema stola

Zamislite da imamo trgovine baze podataka informacije o tapeta predstavljena u dva stola. Ova tabela oboi (wallpaper) sa id polja (jedinstveni identifikator), tipa (tip tapeta -. Papir, vinil, itd), boja (boja), strukturu (strukturu) i cijena (cijena). I sto Ostatki (ostaci) sa id_oboi polja (referenca na jedinstveni identifikator u tabeli Oboi) i count (broj valjaka u prodaji).

Popunite tablicu podataka. U tabeli dodati pozadinu 9 zapisa:

oboi

id

tip

boja

struct

cijena

1

papir

šaren

isklesan

56.9

2

papir dvoslojna

bež

glatko

114.8

3

vinil

narandža

isklesan

504

4

runo

bež

isklesan

1020,9

5

papir dvoslojna

bež

glatko

150.6

6

papir

šaren

glatko

95.4

7

vinil

braon

glatko

372

8

runo

bijel

isklesan

980,1

9

tkanina

roze

glatko

1166,5

U tabeli sa ostacima - i devet zapisa:

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 opis različitih reda u SQL.

Postavite različita u SELECT klauzuli

poseban argument treba staviti odmah nakon Izaberite ključnu riječ u upita. On se obratio sve kolone navedene u rečenici Select, jer će biti isključeni iz rezultata konačnog upita je apsolutno identična žice. Tako, kada je dovoljno navesti prilikom pisanja SQL «SELECT distinct» Potražnja. Izuzetak je upotreba različitih unutar funkcija agregatne da pogledamo malo kasnije.

Treba imati na umu da je većina podataka i ne prepoznaje vrstu zahtjeva:

SELECT distinct Ostatki.Count, različita Oboi. *

IZ oboi

INNER JOIN Ostatki NA Oboi.id = Ostatki.id_oboi

Nije se smatralo argument nekoliko puta ili jednom navedeno, ali prije nego što je drugi, treći ili drugi izabrane kolone. Ćete dobiti greška se odnosi na greške u sintaksi.

Primjena različite upite u standardnom

Očigledno je da se uz odgovarajuću konstrukciju zgrade tablice i da ih punjenje unutar jedne sto isključena situaciji kada postoje apsolutno identična žice. Stoga, izvršenje upit «SELECT distinct *» na uzorku od jednog stola je nepraktično.

Razmislite o situaciji kada moramo znati kakvu vrstu imamo pozadina, samo za udobnost, sortirati po tipu:

SELECT Oboi.type

IZ Oboi bi prema vrsti

I dobiti rezultate:

tip

papir

papir

papir dvoslojna

papir dvoslojna

vinil

vinil

tkanina

runo

runo

Kao što se vidi u tablici ima duplih redova. Ako se tome doda i prijedlog SELECT distinct:

SELECT distinct Oboi.type

IZ Oboi bi prema vrsti

dobijamo rezultat bez ponavljanja:

tip

papir

papir dvoslojna

vinil

tkanina

runo

Prema tome, ako se pravilno unesete podatke u tablici, a zatim odmah nakon telefonskog poziva ili zahtjev kupaca možemo odgovoriti da tekućina pozadina, fiberglasa i akril pozadina dostupna u prodavnici nisu. S obzirom da je opseg radnji obično nije ograničen na stotinu pozadina, vidite listu nejedinstveni vrste bi bilo radno-intenzivne.

Primjena različitih agregata funkcije unutar

SQL poseban argument se može koristiti sa bilo kojim agregatne funkcije. Ali za Min i Max njegova primjena neće imati efekta, ali pri obračunu iznosa ili prosječne vrijednosti je rijetko situaciju u kojoj niko ne bi uzeti u obzir i ponavljanja.

Pretpostavimo da želite provjeriti kapacitet naših skladišta i pošaljite zahtjev izračunava ukupan broj namotaja na lageru:

SELECT sum (Ostatki.count)

IZ Ostatki

Zahtjev će dati odgovor 143. Ako, međutim, mi ćemo promijeniti u:

SELECT sum (različita Ostatki.count)

IZ Ostatki

dobijamo ukupno 119, kao pozadinu za brojeve dio 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čitih funkcija Count. Dakle, možemo lako saznati koliko je jedinstvena vrsta tapeta, mi imamo:

SELECT count (različita Oboi.type)

IZ oboi

I dobiti rezultat 5 - običnom papiru i dvoslojne vinil i ne-tkanih materijala. Sigurno svi vidjeli reklame kao što su: "Samo mi imamo preko 20 različitih vrsta tapeta", pod kojom se podrazumijeva da je ova trgovina je ne samo nekoliko desetina peciva i raznih pozadina modernog tipa.

Zanimljivo je da je u istom upita, možete odrediti višestruke funkcije poput grofa pripisuju jasna, i bez njega. To je jedina situacija u kojoj razlikuje u Select'e može biti prisutan nekoliko puta.

Kada napustiti korištenje argumenta

Iz upotrebe SQL različita argumenta treba napustiti u jednom od dva slučaja:

  1. Vršite izbor stolova i uvjereni u jedinstvenoj vrijednosti svakog. U ovom slučaju, korištenje argumenta je neprikladno, jer je to dodatno opterećenje na server ili klijent (ovisno o vrsti DBMS).
  2. Da li se plašite gubitka podataka. Neka nam objasniti.

Pretpostavimo da gazda traži od vas na listu pozadinu da imate, uz naznaku samo dvije kolone - vrstu i boje. Iz navike, vam dati argument različita:

SELECT distinct Oboi.type, Oboi.color

IZ oboi

ORDER BY Oboi.type

I - izgubiti neke podatke:

tip

boja

papir

šaren

papir dvoslojna

bež

vinil

braon

vinil

narandža

tkanina

roze

runo

bež

runo

bijel

To može dati utisak da je papir pozadinu (konvencionalna i dual-layer) smo samo jedan um, u stvari, čak u našem malom stolu dva člana (rezultirati bez različita):

tip

boja

papir

šaren

papir

šaren

papir dvoslojna

bež

papir dvoslojna

bež

vinil

braon

vinil

narandža

tkanina

roze

runo

bijel

runo

bež

Zbog toga, kao što je u pisanoj formi bilo koji zahtjev argument jasnu potrebu da budu oprezni i nadležan da odlučuje o njegovoj primeni, u zavisnosti od zadatka.

alternativa različita

Za razliku od argument različita - Svi argument. U njegovoj primjeni duplih redova se čuvaju. Ali kao default baze podataka i smatra da je potrebno da biste prikazali sve vrijednosti, argument sve - to je više kvalifikacija od stvarnog argument funkcije. Nadamo se da ćete sada shvatiti da različita (SQL) se koristi. Opis vam dati potpunu informaciju o opravdanosti korištenja ove argument u rješavanju različitih problema. Uostalom, kako se ispostavilo, čak i tako jednostavan argument u njegovoj primjeni krije vrlo opipljive mogućnost gubitka nekih podataka i prikazati netačne informacije.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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