Kompiuteriai, Failų 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ų:
- 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).
- 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.
Similar articles
Trending Now