MySQL SELECT izjava s primjerima
โก Pametni saลพetak
The MySQL Naredba SELECT dohvaฤa retke iz jedne ili viลกe tablica, a svaki primjer u nastavku izvrลกava se na myflix primjeru baze podataka, prelazeฤi s obiฤnog zvjezdastog upita na izraze, aliase stupaca i funkcije stringova.

ล to je SELECT upit u MySQL?
SELECT upit koristi se za dohvaฤanje podataka iz MySQL baza podataka. Baze podataka pohranjuju podatke za kasnije dohvaฤanje. Svrha od MySQL SELECT upit vraฤa jedan ili viลกe redaka iz tablica baze podataka koji odgovaraju zadanom kriteriju. SELECT upit se moลพe koristiti u skriptnom jeziku poput PHP-a ili Rubyja ili ga moลพete izvrลกiti iz naredbenog retka.
Buduฤi da ฤete najฤeลกฤe pokretati naredbu SELECT, isplati se nauฤiti njezinu sintaksu prije nego ลกto se dotaknete uzoraka podataka.
Sintaksa SQL SELECT naredbe
SELECT je najฤeลกฤe koriลกtena SQL naredba i ima sljedeฤu opฤu sintaksu:
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
OVDJE
- SELECT je SQL kljuฤna rijeฤ koja bazi podataka daje do znanja da ลพelite dohvatiti podatke.
- [DISTINKTNO | SVI] su opcionalne kljuฤne rijeฤi koje fino podeลกavaju rezultate vraฤene iz SQL SELECT naredbe. Ako niลกta nije navedeno, tada se ALL pretpostavlja kao zadana vrijednost.
- {*| [fieldExpression [AS newName]} Barem jedan dio mora biti naveden. "*" odabire sva polja iz navedenog naziva tablice; fieldExpression izvodi izraฤune na navedenim poljima, kao ลกto je zbrajanje brojeva ili spajanje dva polja niza znakova u jedno.
- IZ Naziv tablice je obavezan i mora sadrลพavati barem jednu tablicu. Viลกe tablica mora biti odvojeno zarezima ili spojeno kljuฤnom rijeฤi JOIN.
- GDJE Uvjet je opcionalan. Odreฤuje kriterije u skupu rezultata vraฤenom iz upita.
- GROUP BY koristi se za sastavljanje zapisa koji imaju iste vrijednosti polja.
- IMAJUฤI Uvjet se koristi za odreฤivanje kriterija pri radu s kljuฤnom rijeฤi GROUP BY.
- NARUฤITE PO koristi se za odreฤivanje redoslijeda sortiranja skupa rezultata.
*
Simbol zvjezdice odabire sve stupce u tablici. Jednostavna SELECT naredba izgleda kao ona prikazana dolje.
SELECT * FROM `members`;
Gornja naredba odabire sva polja iz tablice ฤlanova. Toฤka-zarez je terminator naredbe. Nije obavezan, ali zavrลกavanje naredbi na ovaj naฤin smatra se dobrom praksom.
ODABERI RAZLIฤITO i OGRANIฤI u MySQL
Dvije opcionalne kljuฤne rijeฤi u sintaksi zasluลพuju detaljniji pogled, jer ih poฤetnici susreฤu ฤim tablica naraste.
DISTINCT uklanja duplicirane retke iz skupa rezultata. Tablica filmova pohranjuje nekoliko filmova objavljenih 2007., pa obiฤan upit ponavlja tu godinu. DISTINCT vraฤa svaku vrijednost jednom.
SELECT DISTINCT `year_released` FROM `movies`;
OGRANIฤAVA ograniฤava broj vraฤenih redaka, ลกto ลกtiti klijenta od upita koji bi inaฤe izvukao milijune zapisa.
SELECT * FROM `movies` LIMIT 5;
| Rijeฤ | Ono ลกto se takoฤer | Kada ga koristiti |
|---|---|---|
| SVE (zadano) | Vraฤa svaki odgovarajuฤi redak, ukljuฤujuฤi duplikate | Brojanje ili popisivanje sirovih zapisa |
| DISTINCT | Saลพima duplicirane retke u jedan | Izrada popisa jedinstvenih vrijednosti |
| OGRANIฤAVA | Vraฤa samo prvih N redaka | Pregled podataka ili rezultati podjele na stranice |
Nakon ลกto je sintaksa utvrฤena, uzorak baze podataka oลพivljava ove klauzule.
Praktiฤni primjeri naredbe SELECT
Kliknite za preuzimanje myflix baza podataka koriลกtena za praktiฤne primjere.
Moลพete nauฤiti kako uvesti .sql datoteku u MySQL Radna tezga.
Primjeri su izvedeni na sljedeฤe dvije tablice.
Tablica 1: ฤlanovi stol
| ฤlanski broj | puna_imena | rod | Datum roฤenja | fiziฤka adresa | poลกtanska adresa | kontakt_ broj | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | ลพenski | 21-07-1980 | Prva ulica Parcela broj 4 | Privatna torba | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | ลพenski | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Muลกki | 12-07-1989 | 3. ulica 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | ลพenski | 14-02-1984 | 2. ulica 23 | NULL | NULL | NULL |
Tablica 2: filmovi stol
| film_id | naslov | direktor | godina_izdana | kategorija_id |
|---|---|---|---|---|
| 1 | Pirati s Kariba 4 | Rob Marshall | 2011 | 1 |
| 2 | Zaboravljam Saru Marshal | Nicholas stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Ime Crno | Edgar Jimz | 2010 | NULL |
| 5 | Tatine djevojฤice | NULL | 2007 | 8 |
| 6 | Anฤeli i demoni | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67% kriv | NULL | 2012 | NULL |
Dobivanje popisa ฤlanova
Pretpostavimo da ลพelimo popis svih registriranih ฤlanova knjiลพnice iz naลกe baze podataka. Za to bismo upotrijebili skriptu prikazanu u nastavku.
SELECT * FROM `members`;
Izvrลกavanje skripte u MySQL Workbench daje sljedeฤe rezultate.
| ฤlanski broj | puna_imena | rod | Datum roฤenja | fiziฤka adresa | poลกtanska adresa | kontakt_ broj | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | ลพenski | 21-07-1980 | Prva ulica Parcela broj 4 | Privatna torba | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | ลพenski | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Muลกki | 12-07-1989 | 3. ulica 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | ลพenski | 14-02-1984 | 2. ulica 23 | NULL | NULL | NULL |
Upit je vratio sve retke i stupce iz tablice ฤlanova.
Odabir odreฤenih stupaca
Recimo da nas zanimaju samo polja puna_imena, spol, fiziฤka_adresa i e-poลกta. Sljedeฤi skript to postiลพe.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Izvrลกavanje skripte u MySQL Workbench daje sljedeฤe rezultate.
| puna_imena | rod | fiziฤka adresa | |
|---|---|---|---|
| Janet Jones | ลพenski | Prva ulica Parcela broj 4 | janetjones@yagoo.cm |
| Janet Smith Jones | ลพenski | Melrose 123 | jj@fstreet.com |
| Robert Phil | Muลกki | 3. ulica 34 | rm@tstreet.com |
| Gloria Williams | ลพenski | 2. ulica 23 | NULL |
Dobivanje popisa filmova pomoฤu izraza
Izrazi se takoฤer mogu koristiti u SELECT naredbama. Recimo da ลพelimo popis filmova s โโnaslovom i imenom redatelja u jednom polju, redateljem u zagradama i godinom izlaska filma. Sljedeฤi skript to radi.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
OVDJE
- Concat() MySQL Funkcija spaja vrijednosti stupaca.
- Redak โConcat(`title`, ' (', `director`, ')')โ dohvaฤa naslov, dodaje poฤetnu zagradu nakon koje slijedi ime redatelja, a zatim dodaje zatvorenu zagradu.
- Dijelovi niza znakova odvojeni su zarezima unutar funkcije Concat().
Izvrลกavanje skripte u MySQL Workbench proizvodi sljedeฤi skup rezultata.
| Concat(`naslov`, ' (', `redatelj`, ')') | godina_izdana |
|---|---|
| Pirati s Kariba 4 (Rob Marshall) | 2011 |
| Forgetting Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Ime Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooneri (John Schultz) | 2005 |
| NULL | 2012 |
Biljeลกka: Concat() vraฤa NULL kada je bilo koji argument NULL, zbog ฤega filmovi bez redatelja gore prikazuju NULL.
Nazivi polja aliasa
Gornji primjer vratio je kod spajanja kao naziv polja. Za koriลกtenje opisnijeg naziva polja u skupu rezultata primijenite pseudonim stupca. Slijedi osnovna sintaksa.
SELECT `column_name|value|expression` [AS] `alias_name`;
OVDJE
- "SELECT `naziv_stupca|vrijednost|izraz`" je regularna SELECT naredba, koja moลพe biti naziv stupca, vrijednost ili izraz.
- "[KAO]" je opcionalna kljuฤna rijeฤ prije pseudonima.
- โ`alias_name`โ je pseudonim koji se vraฤa u skupu rezultata kao naziv polja.
Isti upit s smislenijim nazivom stupca:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
Dobivamo sljedeฤi rezultat.
| Konkat | godina_izdana |
|---|---|
| Pirati s Kariba 4 (Rob Marshall) | 2011 |
| Forgetting Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Ime Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooneri (John Schultz) | 2005 |
| NULL | 2012 |
Dobivanje popisa ฤlanova s โโgodinom roฤenja
Pretpostavimo da ลพelimo popis svih ฤlanova koji prikazuje ฤlanski broj, puna imena i godinu roฤenja. Moลพemo koristiti funkciju LEFT string za primjertracgodina roฤenja iz polja za datum roฤenja.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
OVDJE
- โLEFT(`datum_roฤenja`,4)โ o LIJEVA funkcija niza prihvaฤa datum roฤenja kao parametar i vraฤa samo 4 znaka s lijeva.
- โKAO `godina_roฤenja`โ je ime stupca alias vraฤeno u naลกim rezultatima. Kljuฤna rijeฤ AS nije obavezna; moลพete ga izostaviti i upit ฤe i dalje raditi.
Izvrลกavanje upita u MySQL Workbench u odnosu na myflixdb daje nam rezultate prikazane u nastavku.
| ฤlanski broj | puna_imena | godina roฤenja |
|---|---|---|
| 1 | Janet Jones | 1980 |
| 2 | Janet Smith Jones | 1980 |
| 3 | Robert Phil | 1989 |
| 4 | Gloria Williams | 1984 |
Rukom pisani upiti samo su jedan put do skupa rezultata. Workbench takoฤer moลพe izraditi naredbu za vas.
Koriลกtenje SQL-a MySQL Radna tezga
Sada ฤemo koristiti MySQL Workbench za generiranje skripte koja prikazuje sva imena polja iz naลกe tablice kategorija.
1. Desnom tipkom miลกa kliknite tablicu Kategorije. Kliknite na "Odaberi retke โ Ograniฤi na 1000".
2. MySQL Workbench automatski kreira SQL upit i lijepi ga u editor.
3. Rezultati upita prikazani su u mreลพi ispod ureฤivaฤa.
Kao ลกto snimka zaslona pokazuje, nismo sami napisali SELECT naredbu. MySQL Workbench ga je generirao za nas.
Zaลกto koristiti SQL naredbu SELECT kada imamo MySQL Radni stol?
Moลพda se pitate zaลกto biste trebali nauฤiti SQL naredbu SELECT kada alat poput MySQL Workbench vraฤa iste rezultate bez ikakvog znanja SQL jezika. Taj preฤac je moguฤ, ali uฤenje naredbe SELECT daje vam viลกe fleksibilnost i kontrola preko vaลกeg SQL SELECT naredbe.
MySQL Radni stol spada u kategoriju "Upit prema primjeruโ (QBE) alati. Namijenjen je brลพem generiranju SQL naredbi i poveฤanju produktivnosti korisnika.
Uฤenje SQL naredbe SELECT omoguฤuje vam stvaranje sloลพeni upiti koje se ne mogu lako generirati pomoฤu usluลพnih programa Query by Example kao ลกto su MySQL Radni stol.
Za poboljลกanje produktivnosti moลพete generirajte kod u MySQL Radna tezga, A zatim prilagoditi to zadovoljiti vaลกe zahtjeveTo je moguฤe samo kada shvatite kako SQL naredbe funkcioniraju.



