Tölvur, Skráargerðir
SQL greinilegur: lýsing, dæmi, eiginleikar
Oft þegar þú notar SQL til að sækja gögn frá borðum, sem notandinn fær að óþarfi gögn er tilvist algerlega eins afrit raðir. Til að koma í veg fyrir þetta ástand, nota SQL sérstakt rök í setningunni Veldu. Þessi grein mun fjalla dæmi um notkun þessa röksemdafærslu, auk aðstæður þar sem umsóknin ætti að vera yfirgefin af rifrildi.
Áður en við getum haldið áfram að fjalla um tiltekin dæmi, búa til gagnagrunn sem þarf nokkra borðum.
undirbúningur borð
Ímyndaðu þér að við höfum gagnasafn geymir upplýsingar um veggfóður fram í tveimur töflum. Þessi tafla oboi (veggfóður) með auðkennareitum (einkvæmt kennimerki), af gerðinni (tegund veggfóður -. Pappír, vinyl, osfrv), lit (lit), a struct (uppbygging) og verð (price). Og borð Ostatki (leifar) með id_oboi sviðum (tilvísun í sérstakt kennimerki í töflunni oboi) og fjölda (fjöldi rúlla á lager).
Fylla gögn borð. Í töflunni bæta veggfóðri 9 færslur:
Oboi | ||||
id | tegund | litur | struct | verð |
1 | pappír | multicolor | upphleyptan | 56,9 |
2 | pappír tvöfaldur-lagskipt | beige | slétt | 114,8 |
3 | Vinyl | Orange | upphleyptan | 504 |
4 | Flís | beige | upphleyptan | 1020,9 |
5 | pappír tvöfaldur-lagskipt | beige | slétt | 150,6 |
6 | pappír | multicolor | slétt | 95,4 |
7 | Vinyl | Brown | slétt | 372 |
8 | Flís | hvítur | upphleyptan | 980,1 |
9 | klút | bleikur | slétt | 1166,5 |
Taflan með leifar - og níu færslur:
Ostatki | |
id_oboi | telja |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Við halda áfram að lýsingu á greinilegur röð í SQL.
Setja greinilegur í Select ákvæði
greinilegur rök ættu að vera sett strax eftir Select leitarorð í fyrirspurnir. Hann beita öllum dálkum sem tilgreindar eru í setningu Select, því það verður að vera útilokaðir frá endanlegri fyrirspurn vegna er algerlega eins strengi. Svona, þegar er nóg að tilgreina þegar þú skrifar SQL «valið sérstakt» beiðninni. Undantekningin er að nota mismunandi inni samanlögðum aðgerðir sem líta á smá seinna.
Það ætti að hafa í huga að flest gagnagrunninum og þekkir ekki tegund af beiðni:
SELECT greinilegur Ostatki.Count, greinilegur oboi. * fRÁ Oboi INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
Það var ekki talið rök nokkrum sinnum eða einu sinni fram, en áður en annað, þriðja eða öðru valinn dálki. Þú vilja fá villu vísa villu í setningafræði.
Umsókn mismunandi fyrirspurnir í Standard
Það er augljóst að með réttri uppbyggingu uppbyggingu borðum og fylla þau í einu borði útiloka ástandið þegar það eru alveg sömu strengi. Því fyrirspurn framkvæmd «Veldu greinilegur *» með úrtaki eitt borð er óhagkvæm.
Íhuga aðstæður þegar við þurfum að vita hvaða tegund sem við höfum veggfóður, bara fyrir þægindi, til að raða eftir tegund:
SELECT Oboi.type FRÁ oboi röð eftir tegund |
Og fá niðurstöður:
tegund |
pappír |
pappír |
pappír tvöfaldur-lagskipt |
pappír tvöfaldur-lagskipt |
Vinyl |
Vinyl |
klút |
Flís |
Flís |
Eins og sést í töflunni eru afrit raðir. Ef við bætum við tillögu Velja greinilegur:
SELECT greinilegur Oboi.type FRÁ oboi röð eftir tegund |
við fáum niðurstöðu án endurtekninga:
tegund |
pappír |
pappír tvöfaldur-lagskipt |
Vinyl |
klút |
Flís |
Svona, ef rétt slá inn gögn í töflu, þá strax eftir símtali eða beiðni kaupenda við getum svarað því að fljótandi veggfóður, trefjaplasti og akríl veggfóður í boði í versluninni eru það ekki. Í ljósi þess að ýmsum verslunum er yfirleitt ekki takmörkuð við eitt hundrað veggfóður, skoða lista yfir utan einstaka tegundum væri alveg vinnu-ákafur.
Umsókn um greinilegur samanlögðum hlutverka innan
SQL greinilegur rök geta að nota með hvaða samanlagt virka. En fyrir Min og Max beitingu hennar mun ekki hafa nein áhrif, en við útreikning samtölu eða meðalgildi er sjaldan ástand þar sem enginn þyrfti að taka tillit til endurtekningar.
Segjum að við viljum athuga getu vöruhús okkar og senda þessa beiðni, reiknar heildarfjöldi vafningum á lager:
SELECT summa (Ostatki.count) fRÁ Ostatki |
Beiðni gefur svarið 143. Ef, hins vegar, munum við breyta til:
SELECT summa (aðskilin Ostatki.count) fRÁ Ostatki |
við fá heildar 119, eins og veggfóður fyrir þátt númer 3 og 7 eru til á lager í sama magni. Hins vegar er það augljóst að svarið er rangt.
Oftast notuð í SQL greinilegur virka telja. Svo getum við auðveldlega fundið út hvernig á marga einstaka gerðir af veggfóður, höfum við:
SELECT telja (aðskilin Oboi.type) fRÁ Oboi |
Og fá niðurstöðu í 5 - venjulegt pappír og tvöfaldur-lag vinyl og ekki ofinn dúkur. Víst öll séð auglýsingar eins og: "Aðeins við höfum yfir 20 mismunandi tegundir af veggfóðri," sem er ætlað að þetta búð er ekki bara par tugi rúllur og ýmsar veggfóður nútíma gerðum.
Það er athyglisvert að á sama fyrirspurn er hægt að tilgreina margar aðgerðir eins og Count eiginleiki greinilegur, og án þess. Það er eina ástandið þar greinilegur í Select'e geta verið til staðar nokkrum sinnum.
Hvenær á að yfirgefa notkun rök
Frá notkun SQL sérstaks rifrildi ætti að vera yfirgefin í einni af tveimur tilvikum:
- Þú framkvæma úrval af borðum og ert öruggur í einstakri gildi hvor. Í þessu tilviki, að nota rök er óviðeigandi, því það er til viðbótar álag á miðlara eða biðlara (fer eftir gerð Gagnasafnskerfið).
- Ert þú hræddur um að missa gögnin þín. Leyfðu okkur að útskýra.
Segjum stjóri biður þig að skrá veggfóður sem þú hefur, með upplýsingum um aðeins tvö dálkum - tegund og lit.. Út af vana, gefa þér rifrildi greinilegur:
SELECT greinilegur Oboi.type, Oboi.color fRÁ Oboi ORDER BY Oboi.type |
Og - missa nokkur gögn:
tegund | litur |
pappír | multicolor |
pappír tvöfaldur-lagskipt | beige |
Vinyl | Brown |
Vinyl | Orange |
klút | bleikur |
Flís | beige |
Flís | hvítur |
Það kann að gefa til kynna að pappír veggfóður (hefðbundin og tvískiptur-lag) Við höfum aðeins einn hugur, í raun, jafnvel í litlu borði okkar tveggja greinar (leitt án greinilegur):
tegund | litur |
pappír | multicolor |
pappír | multicolor |
pappír tvöfaldur-lagskipt | beige |
pappír tvöfaldur-lagskipt | beige |
Vinyl | Brown |
Vinyl | Orange |
klút | bleikur |
Flís | hvítur |
Flís | beige |
Því, eins og í að skrifa hvaða beiðni með rök greinilegur þarft að vera varkár og hæfir til að taka ákvörðun um beitingu hennar, eftir verkefni.
val greinilegur
Í bága við rök sérstaks - All rifrildi. Í umsókn sinni afrit raðir eru geymdar. En eins og sjálfgefið gagnagrunn og telur að það sé nauðsynlegt til að sýna öll þau gildi, rök öllu - það er frekar undankeppni en raunverulegur virka rök.
Similar articles
Trending Now