OqPoWah.com

SQL različen: opis, primeri, lastnosti

Pogosto pri uporabi SQL za pridobivanje informacij iz tabel uporabnik prejema odvečne podatke, ki so sestavljeni iz popolnoma identičnih podvojenih vrstic. Če želite izključiti to stanje, uporabite ločen argument SQL v klavzuli Select. V tem članku bomo preučili primere uporabe tega argumenta in primerov, v katerih je bolje opustiti argument.

Preden začnemo razmišljati o konkretnih primerih, bomo v bazo podatkov ustvarili nekaj potrebnih tabel. sql različen

Priprava miz

Predstavljajte si, da imamo v bazi podatkov shranjene informacije o ozadju, predstavljene v dveh tabelah. To je tabela Oboi (ozadje) s poljem id (posebni identifikator), vrsto (vrsta ozadja - papir, vinil itd.), Barvo, strukturo in ceno. In tabelo Ostatki (ostanki) s polji id_oboi (sklicevanje na edinstveni identifikator v tabeli Oboi) in štetje (število zvitkov v skladišču).

Izpolnite tabele s podatki. V tabeli z ozadjem dodajte 9 vnosov:

Oboi

id

tip

barva

struct

cena

1

Papir

Večbarvna

Embossed

56.9

2

Dvoslojni papir

Bež

Gladko

114.8

3

Vinil

Oranžna

Embossed

504

4

Netkane fleece rokavice

Bež

Embossed

1020.9

5

Dvoslojni papir

Bež

Gladko

150.6

6

Papir

Večbarvna

Gladko

95.4

7

Vinil

Rjava

Gladko

372

8. mesto

Netkane fleece rokavice

Bela

Embossed

980.1

9

Fabric

Pink

Gladko

1166.5

V tabeli z ostanki je tudi devet zapisov:

Ostatki

id_oboi

šteje

1

8. mesto

2

12. mesto

3

24

4

9

5

16

6

7

7

24

8. mesto

32

9

11

Začnimo z opisom uporabe ločenega v SQL-ju.

Postavite se ločeno v klavzulo Izberi

Poseben argument je treba postaviti takoj po ključni besedi Izbira v poizvedbah. Uporabi se takoj za vse stolpce, ki so opredeljeni v klavzuli Select, ker izključi popolnoma identične vrstice iz rezultata poizvedbe. Tako je pri pisanju poizvedbe SQL dovolj, da se pri pisanju poizvedbe SQL navede »izberite ločeno«. Edina izjema je uporaba razločnih znotraj skupnih funkcij, ki jih bomo obravnavali malo kasneje. sql izberite ločeno

Upoštevati je treba, da večina DBMS ne prepozna vašega zahtevka, kot je ta:

SELECT ločen Ostatki.Count, različni Oboi. *

IZ Oboja

INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi

Tukaj je argument določen večkrat ali določen enkrat, vendar pred drugim, tretjim ali drugim izbirnim stolpcem. Prišlo je do napake pri sklicevanju na netočnosti v sintaksi.

Uporaba ločenih standardnih poizvedb




Očitno je, da se pri pravilni konstrukciji strukture tabel in njihovega polnjenja v posameznih situacijah tabele izključijo, ko se pojavijo popolnoma identični nizi. Zato je izvedba poizvedbe »Izberite ločeno *« z izbiro iz ene tabele praktično nepraktična. razločen v sql

Predstavljajte si situacijo, v kateri moramo ugotoviti, kakšne vrste ozadij imamo, samo za udobje, razvrstite po vrsti:

SELECT Oboi.type

IZ Oboi vrstnega reda

Dobimo rezultat:

tip

Papir

Papir

Dvoslojni papir

Dvoslojni papir

Vinil

Vinil

Fabric

Netkane fleece rokavice

Netkane fleece rokavice

Kot vidite, v tabeli so podvojene vrstice. Če dodamo stavku Select distinct:

SELECT razločno Oboi.type

IZ Oboi vrstnega reda

potem dobimo rezultat brez ponavljanja:

tip

Papir

Dvoslojni papir

Vinil

Fabric

Netkane fleece rokavice

Tako, če so bili podatki pravilno vneseni v tabelah, nato pa takoj po pozivu ali zahtevi kupcev bomo lahko odgovorili, da v trgovini niso na voljo tekoče ozadje, steklene stene in akrilne ozadje. Glede na to, da je izbor v trgovinah ponavadi omejen na sto ozadij, bi bilo precej delovno intenzivno, da bi skenirali seznam ne edinstvenih vrst.

Uporaba ločenih znotraj skupnih funkcij

SQL se lahko uporablja z vsemi agregatnimi funkcijami. Toda za Min in Max njegova uporaba ne bo vplivala in pri izračunu vsote ali povprečne vrednosti je redko mogoče predstavljati situacijo, v kateri ni treba upoštevati ponovitev.

Recimo, želimo vedeti, koliko je naše skladišče polno, zato smo poslali zahtevo, ki izračuna skupno število zvitkov v skladišču:

SELECT vsota (Ostatki.count)

FROM Ostatki

Poizvedba bo vrnila odgovor 143. Če se spremenimo v:

Izberi vsoto (razločen Ostatki.count)

FROM Ostatki

potem dobimo le 119, saj so ozadje iz 3. in 7. člena na zalogi v isti količini. Vendar je očitno, da je ta odgovor napačen.

Najpogosteje se SQL uporablja s funkcijo Count. Torej, brez težav lahko ugotovimo, koliko enotnih vrst ozadij imamo na splošno:

Izberi število (različna Oboi.type)

IZ Oboja

In dobili rezultat 5 - papir navaden in dvoslojni, vinil, tkanine in netkanih. Gotovo vsi so videli oglas, kot je: "Samo imamo več kot 20 vrst različnih ozadij!", Kar pomeni, da v tej trgovini ni več ducat zvitkov vsega, ampak ozadje najbolj raznolikih sodobnih tipov.

Zanimivo je, da lahko v eni zahtevi določite več funkcij Count z ali brez posebnega atributa. To pomeni, da je to edina situacija, v kateri je lahko večkrat prisoten izraz Select.

Kdaj naj zavrnem uporabo argumenta?

Uporaba ločenega argumenta SQL je treba zavreči na enega od dveh načinov:

  1. Izbirate med tabelami in ste prepričani v edinstvenost vrednosti v vsakem. V tem primeru je uporaba argumenta neustrezna, ker je to dodatna obremenitev strežnika ali odjemalca (odvisno od vrste DBMS-ja).
  2. Bojiš se izgubiti potrebne podatke. Razložili bomo.

Predpostavimo, da vas šef zahteva, da prikažete seznam ozadij, ki jih imate, kar označuje samo dva stolpca - vrsto in barvo. S navado določite argument, ki je ločen:

SELECT razločno Oboi.type, Oboi.color

IZ Oboja

ORDER BY Oboi.type

In - izgubite nekaj podatkov:

tip

barva

Papir

Večbarvna

Dvoslojni papir

Bež

Vinil

Rjava

Vinil

Oranžna

Fabric

Pink

Netkane fleece rokavice

Bež

Netkane fleece rokavice

Bela

Morda se zdi, da imamo samo eno vrsto papirnatih ozadij (konvencionalnih in dvoplastnih), čeprav v resnici tudi v naši mizi imajo dva člena (rezultat brez jasnega):

tip

barva

Papir

Večbarvna

Papir

Večbarvna

Dvoslojni papir

Bež

Dvoslojni papir

Bež

Vinil

Rjava

Vinil

Oranžna

Fabric

Pink

Netkane fleece rokavice

Bela

Netkane fleece rokavice

Bež

Zato, kot pri pisanju kakršne koli poizvedbe, z ločenim argumentom moramo biti previdni in pravilno rešiti problem s svojo aplikacijo, odvisno od naloge v roki.

Alternativno ločeno

Nasprotno od ločenega argumenta je argument All. Ko jo uporabljate, se kopirajo podvojene vrstice. Ker pa DBMS po privzetku meni, da je treba natisniti vse vrednosti, je argument All bolj specifični kot pravi funkcijski argument. poseben opis sqlUpamo, da boste zdaj razumeli, kdaj se uporablja poseben (SQL). Opis je podaril popolne informacije o priporočljivosti uporabe tega argumenta pri reševanju različnih težav. Konec koncev, kot se je izkazalo, tudi tak preprost argument v svoji vlogi skriva zelo očitno verjetnost izgube nekaterih podatkov in sklepanje netočnih informacij.

Zdieľať na sociálnych sieťach:

Príbuzný