Natrag na blog

Pregled upita u MySQL-u

Pregled upita u MySQL-u

Održivost u poslovanju teška je bez pravilnog upravljanja podacima. Izgradnja dobro definiranog sustava ključna je za upravljanje internim i vanjskim operacijama. Detaljan uvid u poslovne podatke pomaže u razumijevanju cjelokupnog tijeka rada i mjerenju učinkovitosti. Štoviše, korištenje baza podataka štedi vrijeme i omogućuje jednostavan pristup informacijama.

Što je baza podataka?

A baza podataka je organizirani sustav koji se koristi za sigurno pohranjivanje informacija. Nudi kategorizaciju i omogućuje stvaranje tablica za razvrstavanje sličnih vrsta stavki pod jednu grupu. Tablice pružaju opcije za popis informacija u više redaka i stupaca. Kao rezultat toga, poboljšava se kvaliteta i dosljednost podataka. Osim mogućnosti pohrane i jednostavnog pristupa, baze podataka igraju značajnu ulogu u zaštiti privatnosti i osiguravanju sustava. Bilo da se radi o ad hoc pristupu ili dijelu procesa kodiranog u aplikaciju, dohvaćanje podataka jedan je od najkritičnijih aspekata upravljanja bazom podataka.

A upit u relacijskom DMS-u je svaka naredba koja se koristi za dohvaćanje podataka iz tablice. SELECT naredbe se gotovo uvijek koriste u Structured Query Language (SQL) upitima. Postoji nekoliko metoda za dohvaćanje informacija iz baze podataka. Općenito, programeri preferiraju opciju naredbenog retka jer je brza i učinkovita. Omogućuje neometano slanje upita.

U ovom vodiču, predstavit ćemo vam MySQL i raspraviti kako raditi s upitima u MySQL-u. Počnimo!

Preduvjeti

Kako biste pratili ovaj vodič, trebat će vam sljedeće:

Korak 1 — Stvaranje i postavljanje baze podataka

Prije nego što počnemo i napišemo svoj prvi SQL upit, moramo stvoriti bazu podataka i dodati joj tablice. Nakon toga ćemo tablice popuniti oglednim podacima. Rad s bazama podataka pomoći će vam da razumijete osnovno postavljanje i ulije vam samopouzdanje u radu s upitima.

Praktično iskustvo najučinkovitiji je način za izgradnju koncepata i razumijevanje važnosti baza podataka. U ovom vodiču provest ćemo vas kroz korištenje baza podataka i njihov značaj za rješavanje stvarnih problema. Pogledajmo scenarij kako bismo razumjeli kako baze podataka mogu pomoći u organiziranju zapisa na strukturiran način.

Scenarij: Stvorit ćemo bazu podataka u kojoj grupa studenata odlazi na odmor kako bi proslavili svoje rođendane. Prije odlaska na odmor planiraju sudjelovati u prijateljskom natjecanju u plivanju. Također, svaki prijatelj u grupi planira popis aktivnosti koje treba obaviti kako bi njihovo putovanje bilo uzbudljivo i ugodno.

Prvo otvorite MySQL kao root korisnik:

Zatim stvorite bazu podataka pokretanjem sljedeće naredbe:

Zatim upotrijebimo našu bazu podataka pomoću sljedeće naredbe:

Nakon toga ćemo stvoriti tablice u našoj bazi podataka. Nazovite prvu tablicu celebration. Naša tablica imat će stupce za imena naših prijatelja (name), turnire koje su osvojili (wins) i također stupac za njihovo najbolje vrijeme (time):

Zatim ćemo našu tablicu popuniti podacima:

Zatim stvorite još jednu tablicu unutar naše baze podataka kako biste pohranili informacije o njihovim omiljenim rođendanskim aktivnostima. Stvorit ćemo tablicu pod nazivom vacation i imati sljedeće stupce:

Popis

Pojedinost

name:

Pohranite ime svakog prijatelja.

birthdate:

Prati datum rođenja svakog pojedinca.

activity:

Vodi evidenciju o njihovoj omiljenoj aktivnosti.

Destination:

Pohranjuje informacije o omiljenom odredištu svakog pojedinca.

meal:

Prati omiljeno jelo koje pojedinac voli.

Popunite tablicu podacima:

Sada ste završili s postavljanjem svoje baze podataka.

Korak 2 — Započnite s naredbama SELECT

Upiti u SQL-u obično počinju s SELECT. Koristi se u upitima za određivanje koji stupci u tablici trebaju biti vraćeni s rezultatima. Upit također mora uvijek uključivati FROM, što se koristi za određivanje tablice koju će naredba pretraživati.

Upiti slijede sintaksu u nastavku:

Upotrijebit ćemo sintaksu upita za vraćanje stupca meal iz tablice vacation :

Naš izlaz bit će sljedeći:

Također možete odabrati više stupaca koristeći stupac za njihovo razdvajanje:

Izlaz:

Također možete koristiti asterisk (*) ako želite prikazati sve stupce u tablici:

Izlaz:

Ako želite filtrirati zapise koji zadovoljavaju određeni uvjet, koristite WHERE. Redovi koji ne zadovoljavaju navedeni uvjet uklanjaju se iz rezultata. Klauzula WHERE koristi sljedeću sintaksu:

To je operator usporedbe koji definira kako bi se navedeni stupac trebao usporediti s vrijednošću. Uobičajeni SQL operatori usporedbe uključuju:

Operator

Upotreba

=

Jednakost

!=

Nejednakost

<

Manje od

>

Veće od

<=

Manje od ili jednako

>=

Veće od ili jednako

BETWEEN

Provjerava leži li vrijednost unutar zadanog raspona.

IN

Provjerava je li vrijednost reda sadržana u skupu određenih vrijednosti.

EXISTS

Provjerava postoji li red

LIKE

Provjerava podudara li se vrijednost s navedenim nizom znakova

IS NULL

Provjerava ima li null vrijednosti

IS NOT NULL

Provjerava sve vrijednosti osim NULL

Ako biste željeli pronaći Aishino omiljeno odredište, mogli biste upotrijebiti upit u nastavku:

Upit će zatim vratiti:

SQL podržava upotrebu zamjenskih znakova, koji su posebno korisni u WHERE klauzulama. Znakovi postotka ( %) označavaju nula ili više nepoznatih znakova, dok podvlake ( _) označavaju jedan nepoznati znak. Oni su korisni ako želite pronaći određeni unos u tablici, ali niste sigurni u vezi tog unosa.

Na primjer, ako ste zaboravili omiljeno odredište prijatelja i znali samo slovo kojim počinje, na primjer, “m.” Naziv odredišta možete pronaći pomoću sljedećeg upita:

Upit će vratiti:

Kada radite s bazama podataka, možete naići na stupce ili tablice s relativno dugim nazivima ili nazivima koji su teški za čitanje. U tim slučajevima nazive možete učiniti čitljivijima pomoću ključne riječi AS za stvaranje alijasa. Alijasi stvoreni pomoću AS vrijede samo za vrijeme trajanja upita za koji su stvoreni:

Korak 3 — Uvod u agregatne funkcije

Kada radite s podacima, ne želite uvijek vidjeti same podatke. Radije biste imali informacije o podacima. Slanjem SELECT upita, možete interpretirati ili izvoditi izračune na svojim podacima koristeći SQL sintaksu. Oni se nazivaju agregatnim funkcijama.

Funkcija COUNT broji i vraća broj redaka koji zadovoljavaju određeni skup kriterija. Na primjer, ako želite znati koliko prijatelja radije ide na Maldive, možete koristiti sljedeći upit:

Vratit će se sljedeći rezultati:

MIN se koristi za pronalaženje najmanje vrijednosti unutar određenog stupca:

Upit će ispisati:

MAX se koristi za pronalaženje najveće numeričke vrijednosti u zadanom stupcu:

Očekivani izlaz je:

Obje funkcije, MIN i MAX, mogu se koristiti na numeričkim i abecednim podacima. Kada se primijene na stupac tekstualnih vrijednosti, funkcija MIN vraća prvu vrijednost po abecednom redu.

Funkcija MIN vraća prvu vrijednost po abecednom redu:

Evo kako će izgledati izlaz:

Funkcija MAX vraća zadnju vrijednost po abecednom redu:

Ovo će biti izlaz:

Korak 4 — Manipuliranje izlazima upita

Još jedna popularna klauzula koja se koristi je GROUP BY klauzula. Koristi se pri izvođenju agregatne funkcije na jednom stupcu, ali u odnosu na podudarne vrijednosti u drugom:

Izlaz će biti:

Za sortiranje rezultata upita koristite ORDER BY klauzulu. Brojčane vrijednosti se prema zadanim postavkama sortiraju uzlazno, dok se tekstualne vrijednosti sortiraju abecednim redom. Upit u nastavku navodi stupce name i birthdate, ali sortira rezultate prema birthdate:

Izlaz će biti sljedeći:

Izlaz je u uzlaznom redoslijedu; za sortiranje u silaznom redoslijedu zatvorite upit riječju DESC:

Pogledajte izlaz:

Klauzula HAVING dodana je u SQL kako bi pružila sličnu funkcionalnost kao i klauzula WHERE dok je istovremeno kompatibilna s agregatnim funkcijama. Razlika između ove dvije klauzule je u tome što se WHERE odnosi na pojedinačne zapise, a HAVING se odnosi na grupne zapise. U tu svrhu, klauzula GROUP BY mora biti prisutna kad god se koristi klauzula HAVING:

Upit će dati izlaz:

Vrijednost COUNT je 1 za sve jer niti jedno dvoje prijatelja ne voli istu aktivnost.

Korak 5 — Upit nad više tablica

Klauzula JOIN može se koristiti u rezultatu upita za kombiniranje redaka iz dviju ili više tablica. To postiže pronalaženjem povezanog stupca između tablica i odgovarajućim sortiranjem izlaza.

SELECT naredbe koje uključuju klauzulu JOIN slijede sintaksu u nastavku:

Ako biste željeli kupiti svakom od svojih prijatelja trofej za njihove pobjede u plivanju na njihove rođendane, mogli biste stvoriti upit koji će spojiti obje tablice kako bi vam pomogao pronaći sve informacije koje želite jednim upitom:

Izlaz će biti:

Ovo je unutarnji JOIN izraz. To je zato što odabire sve zapise koji imaju podudarne vrijednosti u obje tablice i ispisuje ih u skup rezultata. Zapisi koji ne odgovaraju upitu nisu uključeni. Možemo uključiti novi redak u naše tablice koji ne odgovara nijednom unosu:

Zatim ponovno pokrenite SELECT naredbu s JOIN izrazom:

Budući da tablica celebration nema unos za Petera, a tablica vacation nema unos za Ellu, ti zapisi nedostaju.

Možemo vratiti sve zapise iz jedne od tablica pomoću vanjskog JOIN izraza. To može biti ili LEFT JOIN ili RIGHT JOIN. LEFT JOIN vraća sve zapise iz lijeve tablice i samo podudarne zapise iz desne tablice. Lijeva tablica u kontekstu vanjskih spajanja je ona na koju se odnosi FROM izraz, a desna tablica je bilo koja tablica na koju se odnosi nakon JOIN naredbe.

Ponovno pokrenite upit, ali upotrijebite LEFT JOIN izraz:

Naredba će vratiti sve zapise iz lijeve tablice ( celebration) čak i ako nema odgovarajući zapis u desnoj tablici. Kada nema podudarnog zapisa u desnoj tablici, on se vraća kao NULL:

Ovo je sada RIGHT JOIN izraz:

Sve vrijednosti iz desne tablice bit će vraćene (vacation). Budući da je Peterov birthdate zabilježen u desnoj tablici, a ne u lijevoj tablici, stupci name i wins će vratiti NULL vrijednosti u tim redcima:

Možete koristiti UNION klauzulu umjesto JOIN za dohvaćanje zapisa iz više tablica. Operator UNION se razlikuje od klauzule JOIN po tome što kombinira rezultate dvaju SELECT iskaza u jedan stupac, umjesto da ispisuje rezultate iz više tablica kao jedinstvene stupce pomoću jednog SELECT iskaza.

Možete pokrenuti ovaj upit za ilustraciju:

Upit uklanja duplicirane unose. Ovo je zadano ponašanje operatora UNION:

Za vraćanje svih unosa (plus duplikata) koristite operator UNION ALL:

Izlaz:

Podupiti su još jedna metoda za upite nad više tablica. Podupiti su upiti koji su zatvoreni unutar drugog upita (također poznati kao unutarnji ili ugniježđeni upiti). Oni su korisni kada želite usporediti rezultate upita s rezultatima zasebne agregatne funkcije.

Koristit ćemo primjer pokušaja pronalaženja koji je prijatelj osvojio više plivačkih turnira od Elle. Umjesto da ispitujete koliko je mečeva Ella osvojila, a zatim pokrećete drugi upit da biste vidjeli tko je osvojio više igara od toga, oboje možete izračunati jednim upitom:

Upit će vratiti:

Ako biste željeli odvesti svoje prijatelje na iznenadni odmor, možete upotrijebiti upit kako biste vidjeli tko ima najviše pobjeda i vratili njihovo odredište:

Upit će vratiti:

Ovaj iskaz sadrži podupit unutar podupita.

Zaključak

Generiranje upita jedan je od najčešćih zadataka u upravljanju bazama podataka. Postoji nekoliko alata za administraciju baza podataka poput phpMyAdmin i pgAdmin koje možete koristiti za rad s upitima i vizualizaciju njihovih rezultata. Međutim, SELECT iskaz iz naredbenog retka najpoželjniji je izbor zbog jednostavnosti korištenja i izvrsne kontrole.

Nadalje, postoji mnogo vodiča o bazama podataka koje možete istražiti na našem blogu:

Ugodan rad na računalu!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.