SQL različita: opis, primjeri, svojstva
Često, kada koristite SQL za preuzimanje podataka iz tablica, korisnik prima suvišne podatke, što se sastoji u prisutnosti apsolutno identičnih duplih redaka. Da biste izuzeli tu situaciju, upotrijebite SQL različit argument u odabiru klauzule. U ovom ćemo članku razmotriti primjere korištenja ovog argumenta, kao i situacije u kojima je bolje napustiti argument.
sadržaj
Prije nego što počnemo uzeti u obzir specifične primjere, izradit ćemo nekoliko potrebnih tablica u bazi podataka.
Priprema tablica
Zamislite da smo u bazi podataka pohranili podatke o pozadini, predstavljenim u dvije tablice. Ovo je Oboi stol (pozadina) s idovima polja (jedinstveni identifikator), vrstu (vrsta tapeta - papir, vinil, itd.), Boju, strukturu i cijenu. I ostatki stol (ostaci) s polja id_oboi (referenca na jedinstveni identifikator u tablici Oboi) i računati (broj role u skladištu).
Ispunite tablice s podacima. U tablici s pozadinom dodajte 9 unosa:
Oboi | ||||
id | vrsta | boja | struct | cijena |
1 | papir | šaren | isklesan | 56,9 |
2 | Dvoslojni papir | bež | glatko | 114,8 |
3 | vinil | narančasta | isklesan | 504 |
4 | Non-tkane rukavice od runo | bež | isklesan | 1020,9 |
5 | Dvoslojni papir | bež | glatko | 150,6 |
6 | papir | šaren | glatko | 95,4 |
7 | vinil | smeđ | glatko | 372 |
8 | Non-tkane rukavice od runo | bijela | isklesan | 980,1 |
9 | tkanina | roze | glatko | 1166,5 |
U tablici s ostatcima postoje devet zapisa:
Ostatki | |
id_oboi | računati |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Počnimo s opisom načina korištenja različitog u SQL-u.
Mjesto razlikuje u odabranoj klauzuli
Različiti argument treba postaviti odmah nakon odabira ključne riječi u upitu. Primjenjuje se odmah na sve stupce navedene u odjeljku Odabir jer će isključiti apsolutno identične retke od rezultata upita. Dakle, dovoljno je navesti "select distinct" prilikom pisanja SQL upita. Jedina iznimka je uporaba različitih unutar zbirnih funkcija, koje ćemo razmotriti malo kasnije.
Treba imati na umu da većina DBMS-a ne prepoznaje vaš zahtjev kao što je ovaj:
ODABIRjte različite Ostatki.Count, različite Oboi. * OD Oboja INNER JOIN Ostatki NA Oboi.id = Ostatki.id_oboi |
Ovdje argument je naveden nekoliko puta ili naveden jednom, ali prije drugog, trećeg ili drugog odabranog stupca. Dobit ćete pogrešku s pozivom na netočnosti u sintaksi.
Koristeći različite u standardnim uputama
Očito je da uz pravilnu izgradnju strukture stolova i njihovo punjenje u jednoj tablici isključeni situaciju kada postoji apsolutno identične žice. Stoga, izvršenje upit «Odaberite izrazitu *» na uzorku od jednog stola je nepraktično.
Zamislite situaciju u kojoj trebamo saznati koju vrstu pozadine imate, samo za praktičnost, sortirati po vrsti:
SELECT Oboi.type OD Oboja po vrsti |
I dobijemo rezultat:
vrsta |
papir |
papir |
Dvoslojni papir |
Dvoslojni papir |
vinil |
vinil |
tkanina |
Non-tkane rukavice od runo |
Non-tkane rukavice od runo |
Kao što vidite, u tablici su dva retka. Ako dodamo stavku Odaberi zasebnu klauzulu:
ODABIRjte različite Oboi.type OD Oboja po vrsti |
onda dobijemo rezultat bez ponavljanja:
vrsta |
papir |
Dvoslojni papir |
vinil |
tkanina |
Non-tkane rukavice od runo |
Dakle, ako su podaci ispravno uneseni u tablice, odmah nakon poziva ili zahtjeva kupaca moći ćemo odgovoriti da tekuća pozadina, stakleni zidovi i akrilna pozadina nisu dostupni u trgovini. S obzirom da asortiman u trgovinama obično nije ograničen na stotinu pozadina, bilo bi prilično radno intenzivno skenirati popis ne-jedinstvenih vrsta.
Koristeći različite funkcije agregata
SQL se može koristiti s bilo kojom agregatnom funkcijom. No, za Min i Max njegove primjene neće imati nikakvog učinka, ali kod izračuna iznos ili prosječna vrijednost je rijetko stanje u kojem nitko ne bi uzeti u obzir ponavljanja.
Pretpostavimo da želimo provjeriti kapacitet našeg skladišta i poslati taj zahtjev, izračunava ukupan broj navoja na lageru:
SELECT zbroj (Ostatki.count) OD Ostatki |
Upit će vratiti odgovor 143. Ako promijenimo:
SELECT zbroj (različit Ostatki.count) OD Ostatki |
onda dobijemo samo 119, jer je pozadina prema člancima 3 i 7 na zalihi u istoj količini. Međutim, očigledno je da taj odgovor nije točan.
Najčešće se SQL koristi s funkcijom Count. Dakle, bez poteškoća možemo saznati koliko jedinstvenih vrsta tapeta obično imamo:
Broj SELECT (različit Oboi.type) OD Oboja |
I dobiti rezultat 5 - papir obični i dvoslojni, vinil, tkanina i netkane. Sigurno su svi vidjeli oglas kao što je: "Imamo samo više od 20 vrsta različitih pozadina!", Što znači da u ovoj trgovini ne postoji nekoliko desetaka svitaka, već pozadina najrazličitijih modernih tipova.
Zanimljivo je da u jednom zahtjevu možete odrediti nekoliko funkcija Count s ili bez različitog atributa. To je, ovo je jedina situacija u kojoj se razlikuje u Select može biti prisutna nekoliko puta.
Kada trebam odbiti uporabu argumenta
Upotreba SQL različitog argumenta treba odbaciti na jedan od dva načina:
- Izaberite iz tablica i sigurni ste u jedinstvenost vrijednosti u svakoj. U tom je slučaju uporaba argumenta neprikladna jer je to dodatno opterećenje na poslužitelju ili klijentu (ovisno o vrsti DBMS-a).
- Bojite se gubitka potrebnih podataka. Objasnit ćemo.
Pretpostavimo da šef od vas traži da prikažete popis pozadina koje imate, što ukazuje samo na dva stupca - vrstu i boju. Prema naviku, određujete različit argument:
ODABERITE različite Oboi.type, Oboi.color OD Oboja NARUDŽBA Oboi.type |
I - izgubiti neke od podataka:
vrsta | boja |
papir | šaren |
Dvoslojni papir | bež |
vinil | smeđ |
vinil | narančasta |
tkanina | roze |
Non-tkane rukavice od runo | bež |
Non-tkane rukavice od runo | bijela |
Može se pojaviti da imamo samo jednu vrstu papirne pozadine (konvencionalna i dvoslojna), iako u našem malom stolu zapravo imaju dva članka (rezultat bez razlike):
vrsta | boja |
papir | šaren |
papir | šaren |
Dvoslojni papir | bež |
Dvoslojni papir | bež |
vinil | smeđ |
vinil | narančasta |
tkanina | roze |
Non-tkane rukavice od runo | bijela |
Non-tkane rukavice od runo | bež |
Stoga, kao u pisanju bilo kakvog upita, s različitim argumentom, moramo paziti i ispravno riješiti problem s njegovom primjenom, ovisno o zadatku u ruci.
Alternativna razlika
Suprotno različitom argumentu je sva argument. Kada ga koristite, spremljene su duple crte. No, kao i standardnoj bazi podataka i smatra da je potrebno prikazati sve vrijednosti, argument sve - to je prilično kvalifikacijska od stvarnog argumenta funkcije. Nadamo se da sada razumijete kada se koriste različiti (SQL). Opis vam je dao potpune informacije o preporuci primjene ovog argumenta pri rješavanju raznih problema. Uostalom, kao što se ispostavilo, čak i takav jednostavni argument u svojoj primjeni skriva vrlo opipljivu vjerojatnost gubitka podataka i zaključivanja netočnih informacija.
- Baza podataka je složen sustav
- Coalesce sql: opis, upotreba, primjeri
- Kako kombinirati dvije tablice u "Rijeci" vodoravno ili okomito
- Kako sastaviti SQL upite - detaljni primjeri
- Koji su podaci? Vrste podataka
- O tome kako prenijeti tablicu iz Excela u Word
- MySQL - što je to? Pogreška MySQL-a
- Što je identifikator i gdje se koristi?
- DB je ... Vrste i svojstva baze podataka
- MySQL - zahtjev u zahtjevu. MySQL: primjeri upita. Ugrađeni MySQL upiti
- SQL gdje: metode primjene i primjeri
- MySQL JOIN: opis, primjer upotrebe naredbi i preporuka
- SQL INNER JOIN izjava: primjeri, sintaksa i značajke
- Funkcija stvaranja tablice u SQL - Stvaranje tablice
- Funkcija tabulacije: kako napisati program?
- Što je SQL upit?
- Brisanje duplikata MySQL-a
- Pristup rezultatima uzorka putem MySQL fetch polja
- Tablica usmjeravanja je proračunska tablica. Tablica usmjeravanja: opis, izgradnja, naredba i…
- Pojedinosti o povezivanju tablica za pristup
- Statistička obrada podataka i njegovih značajki