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.



