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.

  • ๐Ÿ”Ž Osnovna svrha: SELECT dohvaฤ‡a pohranjene retke koji odgovaraju kriteriju, iz naredbenog retka ili iz PHP-a, Python, i drugim jezicima.
  • ๐Ÿงฉ Redoslijed sintakse: SELECT, FROM, WHERE, GROUP BY, HAVING i ORDER BY moraju se pojaviti u tom fiksnom redoslijedu.
  • โญ Preฤac sa zvjezdicom: SELECT * FROM `members`; vraฤ‡a svaki stupac, dok eksplicitno imenovanje stupaca odrลพava skupove rezultata manjim i brลพim.
  • ๐Ÿ”— Izrazi: Concat() spaja vrijednosti stupaca, a LEFT() skraฤ‡uje znakove, tako da se izraฤunata polja pojavljuju izravno u skupu rezultata.
  • ๐Ÿท๏ธ Aliasi stupaca: Neobavezna kljuฤna rijeฤ AS preimenuje bilo koji izraz, zamjenjujuฤ‡i neฤitljive zaglavlja poput Concat(`title`) jasnim oznakama.
  • ๐Ÿ–ฑ๏ธ Usporedba radnih stolova: MySQL Workbench vizualno generira upite, no rukom pisani SELECT izrazi ostaju neophodni za sloลพeno i precizno pretraลพivanje.

ล 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.

SELECT upit u MySQL

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 e-mail
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 e-mail
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 e-mail
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.

koriลกtenje SQL-a MySQL Radna tezga

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.

Razumijevanje MySQL SELECT izraz

Pitanja i odgovori

Obiฤno da. SELECT * ฤita svaki stupac, ukljuฤujuฤ‡i velika tekstualna i blob polja koja vam moลพda neฤ‡e trebati, i blokira prekrivanje indeksa. Imenovanje stupaca smanjuje skup rezultata i ubrzava upit.

Kljuฤne rijeฤi poput SELECT i FROM ne razlikuju velika i mala slova. Usporedbe stringova slijede sortiranje stupca, pa sortiranje koje nije osjetljivo na velika i mala slova, poput utf8mb4_0900_ai_ci, tretira "Janet" i "janet" kao jednake.

Nedostatak indeksa je uobiฤajeni uzrok. Pokrenite EXPLAIN prije upita kako biste vidjeli je li MySQL izvodi potpuno skeniranje tablice, zatim indeksira filtrirane ili spojene stupce i vraฤ‡a samo retke koji su vam potrebni.

Da. Text-to-SQL asistenti pretvaraju obiฤan zahtjev u SELECT naredbu nakon ลกto znaju vaลกu shemu. Revpogledajte generirane spojeve i filtere, jer AI model moลพe izmisliti nazive stupaca koji ne postoje.

Ne. AI brzo izraฤ‘uje upit, ali i dalje provjeravate logiku, spajanja i performanse u MySQL Radna tezgaPoznavanje SELECT-a vam omoguฤ‡uje uoฤavanje pogreลกnog rezultata prije nego ลกto doฤ‘e u produkciju.

Saลพmite ovu objavu uz: