KompiuteriaiFailų tipai

SQL skiriasi: aprašymas, pavyzdžiai, savybės

Dažnai, kai jūs naudojate SQL gauti duomenis iš lentelių, vartotojas gauna nereikalingas duomenys yra absoliučiai identiški pasikartojančių eilučių egzistavimas. Norėdami išvengti šios situacijos, naudoti SQL atskirą argumentą sakinyje Rinktis. Šiame straipsnyje bus aptarti pavyzdžius šio argumento naudoti, taip pat situacijas, kurios taikymas turėtų būti atsisakyta argumentas.

Prieš mes pereisime prie apsvarstyti konkrečius pavyzdžius, kurti duomenų bazę, reikalingą lentelių pora.

paruošimo lentelėje

Įsivaizduokite, kad mes turime duomenų bazės parduotuvių informacija apie pateiktą dviejų lentelių tapetai. Šioje lentelėje oboi (ekrano užsklanda) su id srityse (unikalus identifikatorius), tipą (tipo tapetai -. Popierius, vinilo, ir tt), spalva (spalvos) A struct (struktūra), o kaina (kaina). Ir stalo Ostatki (likučiai) su id_oboi srityse (nuoroda į unikalų identifikatorių Oboi stalo) ir kiekis (ritiniuose skaičius sandėlyje).

Užpildykite duomenų lentelę. Lentelėje pridėti tapetai 9 įrašų:

Oboi

tapatybės

tipas

spalva

struct

kaina

1

popierius

daugiaspalvis

reljefiškas

56,9

2

popieriaus dukart sluoksniuotos

rusvai gelsvas

sklandžiai

114,8

3

vinilo

oranžinis

reljefiškas

504

4

vilnos

rusvai gelsvas

reljefiškas

1020,9

5

popieriaus dukart sluoksniuotos

rusvai gelsvas

sklandžiai

150.6

6

popierius

daugiaspalvis

sklandžiai

95.4

7

vinilo

rudas

sklandžiai

372

8

vilnos

baltas

reljefiškas

980,1

9

audinys

rožinis

sklandžiai

1166,5

Lentelėje su palaikais - ir devynių įrašų:

Ostatki

id_oboi

skaičiuoti

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Mes toliau su atskira tvarka SQL aprašymas.

Vieta išskirtinė Pasirinkti sąlygos

skiriasi argumentas turėtų būti iš karto po Pasirinkite raktinį žodį užklausomis. Jis kreipėsi į visų nurodytų sakinio pasirinkti stulpelius, nes jis bus pašalintas iš galutinio užklausos rezultatas yra visiškai identiški eilutes. Taigi, kai yra pakankamai nurodyti rašant SQL «pasirinkti atskirą» prašymą. Išimtis yra atskiras viduje užpildo funkcijas, kad pažvelgti šiek tiek vėlesniam naudojimui.

Reikėtų nepamiršti, kad dauguma duomenų bazėje ir nepripažįsta savo rūšies prašymu:

Pasirinkti atskirą Ostatki.Count, atskirą Oboi. *

IŠ oboi

VIDINIS JOIN Ostatki APIE Oboi.id = Ostatki.id_oboi

Nebuvo laikoma kelis kartus argumentas arba kartą nurodyta, bet prieš antroje, trečioje ar kitą pasirinktą stulpelį. Jūs gausite nuoroda į klaidą sintaksės klaida.

Taikymo skirtingų užklausų standartas

Akivaizdu, kad su tinkamu statinio lentelių ir jų pildymo vienoje stalo atmesti situaciją, kai yra absoliučiai identiški eilutes. Todėl užklausa vykdymas «Pasirinkite atskirą *» su vieno stalo mėginyje yra nepraktiška.

Aptarkime situaciją, kai mes turime žinoti, kokio tipo mes turime tapetai, tiesiog dėl patogumo, rūšiuoti pagal tipą:

PASIRINKITE Oboi.type

IŠ Oboi kad pagal tipą

Ir gauti rezultatus:

tipas

popierius

popierius

popieriaus dukart sluoksniuotos

popieriaus dukart sluoksniuotos

vinilo

vinilo

audinys

vilnos

vilnos

Kaip matyti lentelėje yra pasikartojančių eilučių. Jei mes pridėti pasiūlymą Pasirinkite skiriasi:

Pasirinkti atskirą Oboi.type

IŠ Oboi kad pagal tipą

mes gauname rezultatą, be pasikartojimų:

tipas

popierius

popieriaus dukart sluoksniuotos

vinilo

audinys

vilnos

Taigi, jei tinkamai įvesti duomenis į lentelę, tada iš karto po telefono skambučio ar prašymu pirkėjų mes galime atsakyti, kad skysti tapetai, stiklo ir akrilo tapetai laisvų parduotuvėje nėra. Atsižvelgiant į tai, kad parduotuvių asortimentą paprastai neapsiriboja viena šimtai tapetai, peržiūrėti iš Neunikalus tipų sąrašas būtų gana daug darbo jėgos.

Taikymas skirtingų suvestinius funkcijų viduje

"SQL skiriasi argumentas gali būti naudojamas su bet kokia bendra funkcija. Bet MIN ir MAX jos taikymo neturės įtakos, bet kai apskaičiuojant sumą arba vidutinę vertę retai situacija, kai niekas turite atsižvelgti į pakartojimų.

Tarkime, mes norime patikrinti mūsų sandėlyje pajėgumus ir siųsti šį prašymą, apskaičiuoja vijų skaičius vnt:

PASIRINKTI suma (Ostatki.count)

IŠ Ostatki

Prašymas duos atsakymą 143. Tačiau, jei mes pakeisime į:

PASIRINKTI suma (skiriasi Ostatki.count)

IŠ Ostatki

mes gauti bendrą 119, kaip foną Dalių numerių 3 ir 7 yra sandėlyje tokio paties dydžio. Tačiau akivaizdu, kad atsakymas yra klaidingas.

Dažniausiai naudojami SQL skiriasi funkcija grafo. Taigi, mes galime lengvai sužinoti, kiek unikalių rūšių tapetai, mes turime:

Pasirinkite COUNT (skiriasi Oboi.type)

IŠ oboi

Ir gauti 5 rezultatas - paprastų popieriaus ir dukart sluoksnių vinilo ir neaustiniai audiniai. Žinoma, visi matė skelbimus, kaip antai: "Tik mes turime daugiau nei 20 skirtingų rūšių tapetai", pagal kurį yra skirtas, kad ši parduotuvė yra ne tik pora dešimčių rulonai bei tapetų šiuolaikinių tipų įvairovė.

Įdomu tai, kad toje pačioje užklausoje, galite nurodyti keletą funkcijų, kaip Grafas atributas skirtingas, ir be jo. Tai yra vienintelis atvejis, kai išskirtinė Select'e gali būti kelis kartus.

Kada atsisakyti argumento naudojimas

Nuo SQL atskiras argumentas naudojimo, turėtų būti atsisakyta vienu iš dviejų atvejų:

  1. Jūs atlikti lentelių pasirinkimą ir yra įsitikinę, unikalaus vertės kiekvieno. Šiuo atveju argumento naudojimas yra netinkamas, nes tai papildoma apkrova serverio ar kliento (priklausomai nuo DBVS tipo).
  2. Ar bijo prarasti savo duomenis. Leiskite mums paaiškinti.

Tarkime bosas prašo jums sąrašą tapetai, kad jūs turite, su tik du stulpelius nuoroda - tipo ir spalvos. Iš įpročio, jūs suteikiate argumentas atskirą:

Pasirinkti atskirą Oboi.type, Oboi.color

IŠ oboi

ORDER BY Oboi.type

Ir - prarasti kai kuriuos duomenis:

tipas

spalva

popierius

daugiaspalvis

popieriaus dukart sluoksniuotos

rusvai gelsvas

vinilo

rudas

vinilo

oranžinis

audinys

rožinis

vilnos

rusvai gelsvas

vilnos

baltas

Gali susidaryti įspūdis, kad popieriaus ekrano užsklanda (įprastinis ir dvigubo sluoksnio) mes tik vieną protą, tiesą sakant, net mūsų mažoje lentelėje dviejų straipsnyje (atsirasti be skiriasi):

tipas

spalva

popierius

daugiaspalvis

popierius

daugiaspalvis

popieriaus dukart sluoksniuotos

rusvai gelsvas

popieriaus dukart sluoksniuotos

rusvai gelsvas

vinilo

rudas

vinilo

oranžinis

audinys

rožinis

vilnos

baltas

vilnos

rusvai gelsvas

Todėl, kaip rašo bet kokį prašymą argumentu atskira turite būti atsargūs ir kompetentingas priimti sprendimą dėl jo taikymo, priklausomai nuo užduoties.

alternatyva skiriasi

Priešingai nei teigia skiriasi - Visi argumentas. Savo ieškinyje pasikartojančių eilučių yra saugomi. Bet kaip numatytasis duomenų bazėje ir nustato, kad tai yra būtina, kad būtų rodomas visas vertybes, argumentas Visi - ji yra gana skiriamasis nei faktinis funkcija argumentas. Tikimės, kad Jūs dabar suprantate, kad skiriasi (SQL) yra naudojamas. Aprašymas suteikti jums visą informaciją apie naudojant šį argumentą sprendžiant įvairias problemas, galimybes. Galų gale, kaip paaiškėjo, net toks paprastas argumentas jos taikymo slepia labai apčiuopiamą galimybę prarasti kai kuriuos duomenis ir rodyti netikslią informaciją.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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