DatamaskinerFiltyper

SQL tydelig: beskrivelse, eksempler, egenskaper

Ofte når du bruker SQL til å hente data fra tabellene, mottar brukeren overflødige data er eksistensen av en helt identisk like rader. For å unngå denne situasjonen, bruker SQL tydelig argument i setningen Velg. Denne artikkelen vil diskutere eksempler på bruk av dette argumentet, samt situasjoner der programmet skal bli forlatt av argumentet.

Før vi går videre til å vurdere konkrete eksempler, opprette databasen kreves et par bord.

forberedelse bordet

Tenk deg at vi har en database lagrer informasjon om bakgrunnen presentert i to tabeller. Denne tabellen oboi (bakgrunn) med ID-felt (unik ID), av en type (type tapet -. Papir, vinyl, etc.), farge (farge), en struct (struktur) og pris (spot). Og tabell Ostatki (rest) med id_oboi felt (en referanse til den unike identifikatoren i tabell Oboi) og teller (antall ruller som i lager).

Fyll datatabellen. I tabellen legge tapet 9 poster:

Oboi

id

typen

farge

struct

pris

1

papir

flerfarget

pregede

56.9

2

papir tolags

beige

glatt

114.8

3

vinyl

Orange

pregede

504

4

fleece

beige

pregede

1020,9

5

papir tolags

beige

glatt

150,6

6

papir

flerfarget

glatt

95,4

7

vinyl

brun

glatt

372

8

fleece

hvit

pregede

980,1

9

klut

rosa

glatt

1166,5

Tabellen med restene - og ni poster:

Ostatki

id_oboi

telle

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Vi fortsetter til beskrivelsen av den distinkte orden i SQL.

Plasser tydelig i SELECT-leddet

tydelig argument bør plasseres umiddelbart etter Velg søkeord i spørringer. Han brukes på alle kolonnene spesifisert i setningen Select, fordi det vil bli ekskludert fra det endelige søkeresultatet er helt identiske strenger. Dermed er en gang nok til å angi når du skriver SQL «velge distinkt» forespørsel. Unntaket er bruk av forskjellige inne samlede funksjoner som ser på litt senere.

Det bør bli husket at det meste av databasen og gjenkjenner ikke din type forespørsel:

VELG tydelig Ostatki.Count, tydelig Oboi. *

Fra oboi

INNER JOIN Ostatki PÅ Oboi.id = Ostatki.id_oboi

Det ble ikke ansett som argument flere ganger eller en gang er angitt, men før den andre, tredje eller en annen valgt kolonne. Du vil få en feilmelding henviser til en feil i syntaks.

Søknad forskjellige spørsmål i standard

Det er åpenbart at med riktig bygningsstrukturen tabeller og fylle dem innenfor en enkelt tabell ekskludert situasjonen når det er helt identiske strenger. Derfor spørringen kjøres «Velg distinkt *» med en prøve av ett bord er upraktisk.

Betrakt en situasjon når vi trenger å vite hva slags type vi har tapet, bare for enkelhets skyld, for å sortere etter type:

VELG Oboi.type

Fra Oboi rekkefølge etter type

Og få de resultatene:

typen

papir

papir

papir tolags

papir tolags

vinyl

vinyl

klut

fleece

fleece

Som det fremgår av tabellen er det like rader. Hvis vi legger forslaget Velg tydelig:

VELG tydelig Oboi.type

Fra Oboi rekkefølge etter type

vi får resultatet uten repetisjon:

typen

papir

papir tolags

vinyl

klut

fleece

Dermed, hvis riktig inn data i en tabell, og deretter umiddelbart etter en telefonsamtale eller anmodning fra kjøperne kan vi svare at de flytende tapet, glassfiber og akryl tapet tilgjengelige i butikken er det ikke. Gitt at utvalget av butikker er vanligvis ikke begrenset til hundre tapet, se listen over de ikke-unike typer ville være ganske arbeidskrevende.

Anvendelse av distinkte samlede funksjoner innenfor

SQL tydelig argumentet kan brukes sammen med en hvilken som helst samlefunksjonen. Men for Min og Max sin søknad vil ikke ha noen effekt, men ved beregning av summen eller gjennomsnittsverdien er sjelden en situasjon der ingen ville ha til å ta hensyn til repetisjoner.

Anta at vi ønsker å sjekke kapasiteten på vårt lager og sende denne forespørselen, beregner det totale antall spoler på lager:

SELECT sum (Ostatki.count)

Fra Ostatki

Forespørselen vil gi svaret 143. Men hvis vi vil endres til:

SELECT sum (distinkt Ostatki.count)

Fra Ostatki

vi får samlet 119, som bakgrunn for delenumre 3 og 7 er på lager i samme mengde. Det er imidlertid åpenbart at svaret er galt.

Oftest brukt i SQL distinkt funksjon Count. Så kan vi lett finne ut hvor mange unike typer tapeter, men vi har:

SELECT count (distinkt Oboi.type)

Fra oboi

Og få resultatet av 5 - ordinært papir og dobbelt-lags vinyl og ikke-vevd stoff. Sikkert alle sett annonsene som: "Bare vi har over 20 forskjellige typer tapeter," hvilket betyr at denne butikken er ikke bare et par dusin rundstykker og en rekke bakgrunns moderne typer.

Det er interessant at i samme spørring, kan du angi flere funksjoner som Count attributt DISTINCT, og uten det. Det er den eneste situasjon hvor tydelig i Select'e kan være til stede flere ganger.

Ved å forlate bruken av argumentet

Fra bruk av SQL tydelig argument bør bli forlatt i en av to tilfeller:

  1. Du utfører et utvalg av tabeller og er sikker i den unike verdien hver. I dette tilfellet, er bruken av argumentet upassende, fordi det er en ekstra belastning på tjeneren eller klient (avhengig av typen av DBMS).
  2. Er du redd for å miste data. La oss forklare.

Anta sjefen ber deg om å liste opp bakgrunnsbilde som du har, med angivelse av bare to kolonner - type og farge. Ut av vane, gi deg et argument tydelig:

VELG tydelig Oboi.type, Oboi.color

Fra oboi

ORDER BY Oboi.type

Og - miste noen data:

typen

farge

papir

flerfarget

papir tolags

beige

vinyl

brun

vinyl

Orange

klut

rosa

fleece

beige

fleece

hvit

Det kan gi inntrykk av at papir tapet (konvensjonelle og dual-layer) vi har bare en tanke, faktisk, selv i vårt lille bord av to artikkel (resultat uten distinkt):

typen

farge

papir

flerfarget

papir

flerfarget

papir tolags

beige

papir tolags

beige

vinyl

brun

vinyl

Orange

klut

rosa

fleece

hvit

fleece

beige

Derfor, som skriftlig enhver forespørsel med argumentet tydelig behovet for å være forsiktig og kompetanse til å avgjøre sin søknad, avhengig av oppgaven.

alternativ tydelig

I motsetning til argumentet tydelig - All argument. I sin anvendelse like rader er lagret. Men som standard database og finner at det er nødvendig å vise alle verdiene, argumentet All - det er snarere en kvalifiseringskamp enn selve funksjonsargument. Vi håper at du nå forstår at distinkte (SQL) er brukt. Beskrivelse gi deg full informasjon om muligheten for å bruke dette argumentet i å løse ulike problemer. Tross alt, som det viste seg, selv en så enkel argument i sin søknad skjuler svært konkrete muligheten for å miste noen data og vise unøyaktig informasjon.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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