RekenaarsLêertipes

SQL duidelike: beskrywing, voorbeelde, eienskappe

Dikwels wanneer jy SQL te gebruik om data te haal uit die tafels, die gebruiker ontvang die oortollige data is die bestaan van 'n absoluut identies dubbele rye. Om hierdie situasie te vermy, gebruik SQL duidelike argument in die sin Select. In hierdie artikel sal voorbeelde van die gebruik van hierdie argument, asook situasies waarin die aansoek moet laat vaar word deur die argument te bespreek.

Voordat ons voortgaan om die spesifieke voorbeelde oorweeg, skep die vereiste 'n paar tafels databasis.

voorbereiding tafel

Stel jou voor dat ons 'n databasis winkels inligting oor die agtergrond aangebied in twee tafels. Hierdie tabel oboi (gallery) met id velde (unieke identifikasie), van die tipe (tipe agtergrond -. Papier, vinyl, ens), kleur (kleur), 'n struct (struktuur) en die prys (prys). En tafel Ostatki (oorblyfsels) met id_oboi velde ( 'n verwysing na die unieke identifikasie in die tabel Oboi) en telling (die aantal rolle in voorraad).

Vul die data tafel. In die tafel voeg die agtergrond 9 rekords:

Oboi

id

tipe

kleur

struct

prys

1

papier

kleurige

gebosseleer

56.9

2

papier dubbel-lae

beige

gladde

114,8

3

vinyl

Orange

gebosseleer

504

4

fleece

beige

gebosseleer

1020,9

5

papier dubbel-lae

beige

gladde

150,6

6

papier

kleurige

gladde

95,4

7

vinyl

bruin

gladde

372

8

fleece

wit

gebosseleer

980,1

9

doek

pienk

gladde

1166,5

Die tafel met die oorblyfsels - en nege rekords:

Ostatki

id_oboi

tel

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Ons gaan na die beskrywing van die verskillende volgorde SQL.

Plaas duidelike in die Gekose klousule

duidelike argument moet onmiddellik na die Gekose navraag in die navrae geplaas word. Hy het aansoek gedoen om al die gespesifiseerde in die sin Select kolomme, want dit sal nie by die finale navraag resultaat is absoluut identies snare. Dus, sodra dit genoeg om te spesifiseer wanneer die skryf van SQL «kies duidelike» versoek. Die uitsondering is die gebruik van verskillende binnekant totaal funksies wat later na 'n bietjie.

Daar moet onthou word dat die meeste van die databasis en nie jou tipe versoek erken:

SELECT DISTINCT Ostatki.Count, duidelike Oboi. *

UIT oboi

INNER JOIN Ostatki OP Oboi.id = Ostatki.id_oboi

Daar is nie beskou as 'n argument 'n paar keer of een keer vermeld, maar voor die tweede, derde of 'n ander gekies kolom. Jy sal 'n fout met verwysing na 'n fout in sintaksis kry.

Aansoek duidelike navrae in standaard

Dit is duidelik dat met behoorlike gebou struktuur tafels en binne 'n enkele tafel te vul uitgesluit die situasie wanneer daar absoluut identies snare. Daarom is die vraag uitvoering «Kies afsonderlike *» met 'n monster van 'n tafel is onprakties.

Dink aan 'n situasie wanneer ons nodig het om te weet watter tipe het ons agtergrond, net vir gerief, om te sorteer deur type:

SELECT Oboi.type

UIT Oboi orde deur die tipe

En kry die resultate:

tipe

papier

papier

papier dubbel-lae

papier dubbel-lae

vinyl

vinyl

doek

fleece

fleece

Soos gesien in die tafel is daar dubbele rye. As ons die voorstel te voeg Kies afsonderlike:

SELECT DISTINCT Oboi.type

UIT Oboi orde deur die tipe

ons kry die resultaat sonder herhaling:

tipe

papier

papier dubbel-lae

vinyl

doek

fleece

Dus, indien dit behoorlik data in te voer in 'n tabel, dan onmiddellik na 'n telefoonoproep of versoek van kopers wat ons kan beantwoord wat die vloeistof plakpapier, veselglas en akriel plakpapier beskikbaar in die winkel is nie. Gegee dat die omvang van die winkels gewoonlik nie beperk tot 'n honderd agtergrond, sien die lys van die nie-unieke tipes nogal arbeidsintensiewe sou wees.

Toepassing van verskillende totaal funksies binne

SQL duidelike argument kan gebruik word met enige totaal funksie. Maar vir die Min en Max sy aansoek sal geen effek hê nie, maar by die berekening van die bedrag of die gemiddelde waarde is selde 'n situasie waar niemand sal moet rekening hou met die herhalings.

Gestel ons wil die kapasiteit van ons pakhuis te gaan en om hierdie versoek te stuur, bere die totale aantal rolle in voorraad:

SELECT som (Ostatki.count)

UIT Ostatki

Versoek sal die antwoord 143. As, egter, sal ons verander om te gee:

SELECT som (afsonderlike Ostatki.count)

UIT Ostatki

ons kry die totale 119, as agtergrond vir 'n gedeelte nommers 3 en 7 is in voorraad in die dieselfde hoeveelheid. Dit is egter duidelik dat die antwoord is verkeerd.

Die meeste gebruik word in SQL duidelike funksie Telling. So, ons kan maklik uit te vind hoeveel unieke soorte agtergrond, het ons:

SELECT telling (afsonderlike Oboi.type)

UIT oboi

En kry die resultaat van 5 - gewone papier en dubbel-laag vinyl en nie-geweefde stof. Sekerlik al gesien die advertensies soos: "Slegs ons het meer as 20 verskillende soorte agtergrond," deur wat beteken dat hierdie winkel is nie net 'n paar dosyn rolletjies en 'n verskeidenheid van plakpapier moderne tipes.

Dit is interessant dat in dieselfde navraag, kan jy verskeie funksies spesifiseer soos Telling skryf DISTINCT, en sonder dit. Dit is die enigste situasie waar verskillende in Select'e teenwoordig 'n paar keer kan wees.

Wanneer die gebruik van die argument te laat vaar

Uit die gebruik van SQL duidelike argument moet laat vaar word in een van twee gevalle:

  1. Jy voer 'n seleksie van tafels en is vol vertroue in die unieke waarde elk. In hierdie geval, die gebruik van die argument is onvanpas, want dit is 'n bykomende las op die bediener of kliënt (afhangende van die tipe van DBMS).
  2. Is jy bang vir jou data verloor. Kom ons verduidelik.

Dink baas vra jou om 'n lys van die agtergrond wat jy het, met die aanduiding van slegs twee kolomme - die tipe en kleur. Uit gewoonte, jy 'n argument duidelike gee:

SELECT DISTINCT Oboi.type, Oboi.color

UIT oboi

ORDER BY Oboi.type

En - verloor sommige data:

tipe

kleur

papier

kleurige

papier dubbel-lae

beige

vinyl

bruin

vinyl

Orange

doek

pienk

fleece

beige

fleece

wit

Dit kan die indruk skep dat die papier agtergrond (konvensionele en 'n dubbele laag) ons het net een gedagte, in werklikheid, selfs in ons klein tafel van twee artikel (lei sonder duidelike) gee:

tipe

kleur

papier

kleurige

papier

kleurige

papier dubbel-lae

beige

papier dubbel-lae

beige

vinyl

bruin

vinyl

Orange

doek

pienk

fleece

wit

fleece

beige

Daarom, as in die skryf van 'n versoek met die argument duidelike behoefte versigtig en bevoeg is om te besluit oor die toepassing daarvan, na gelang van die taak te wees.

alternatiewe duidelike

In teenstelling met die argument duidelike - Alle argument. In sy aansoek dubbele rye gestoor. Maar as die verstek databasis en bevind dat dit nodig is om al die waardes, die argument Alle vertoon is - dit is eerder 'n kwalifiseerder as die werklike funksie argument. Ons hoop dat jy nou verstaan dat afsonderlike (SQL) gebruik word. Beskrywing gee jou volledige inligting oor die haalbaarheid van die gebruik van hierdie argument in die oplossing van verskillende probleme. Na alles, as dit blyk, selfs so 'n eenvoudige argument in sy aansoek huide baie tasbare moontlikheid van die verlies van 'n paar data en vertoon onakkurate inligting.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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