MySQL Instrucțiunea SELECT cu exemple
⚡ Rezumat inteligent
MySQL Instrucțiunea SELECT preia rânduri dintr-unul sau mai multe tabele, iar fiecare exemplu de mai jos rulează pe baza de date exemplu myflix, trecând de la interogarea simplă de tip stea la expresii, aliasuri de coloană și funcții șir de caractere.

Ce este o interogare SELECT în MySQL?
Interogare SELECT este utilizat pentru a prelua date de la MySQL baza de date. Bazele de date stochează date pentru recuperarea ulterioară. Scopul MySQL Interogarea SELECT returnează unul sau mai multe rânduri din tabelele bazei de date care corespund unor criterii date. O interogare SELECT poate fi utilizată într-un limbaj de scripting precum PHP sau Ruby sau o puteți executa din promptul de comandă.
Deoarece SELECT este comanda pe care o veți executa cel mai des, este important să îi învățați sintaxa înainte de a accesa datele eșantion.
Sintaxa instrucțiunii SQL SELECT
SELECT este comanda SQL cea mai frecvent utilizată și are următoarea sintaxă generală:
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
AICI
- SELECT este cuvântul cheie SQL care informează baza de date că doriți să preluați date.
- [DIstinct | TOATE] sunt cuvinte cheie opționale care ajustează fin rezultatele returnate de instrucțiunea SQL SELECT. Dacă nu se specifică nimic, atunci ALL este considerat implicit.
- {*| [fieldExpression [AS newName]} Cel puțin o parte trebuie specificată. „*” selectează toate câmpurile din numele tabelului specificat; fieldExpression efectuează calcule asupra câmpurilor specificate, cum ar fi adunarea numerelor sau unirea a două câmpuri de tip șir de caractere într-unul singur.
- DIN tableName este obligatoriu și trebuie să conțină cel puțin un tabel. Tabelele multiple trebuie separate prin virgule sau unite folosind cuvântul cheie JOIN.
- UNDE Condiția este opțională. Specifică criteriile din setul de rezultate returnat de interogare.
- A SE GRUPA CU este folosit pentru a pune împreună înregistrări care au aceleași valori de câmp.
- AVÂND Condiția este utilizată pentru a specifica criteriile atunci când se lucrează cu cuvântul cheie GROUP BY.
- COMANDA DE este folosit pentru a specifica ordinea de sortare a setului de rezultate.
*
Simbolul steluță selectează toate coloanele dintr-un tabel. O instrucțiune SELECT simplă arată ca cea de mai jos.
SELECT * FROM `members`;
Instrucțiunea de mai sus selectează toate câmpurile din tabelul membrilor. Punctul și virgula este un semn de terminare a instrucțiunilor. Nu este obligatoriu, dar încheierea instrucțiunilor în acest fel este considerată o practică bună.
SELECTAȚI DISTINCT și LIMITĂ în MySQL
Două cuvinte cheie opționale din sintaxă merită o analiză mai atentă, deoarece începătorii le întâlnesc imediat ce un tabel crește.
DISTINCT elimină rândurile duplicate din setul de rezultate. Tabelul filme stochează mai multe filme lansate în 2007, astfel încât o interogare simplă se repetă în acel an. DISTINCT returnează fiecare valoare o dată.
SELECT DISTINCT `year_released` FROM `movies`;
LIMITĂ limitează numărul de rânduri returnate, ceea ce protejează clientul de o interogare care altfel ar extrage milioane de înregistrări.
SELECT * FROM `movies` LIMIT 5;
| Cuvânt cheie | Ce face | Când să-l folosiți |
|---|---|---|
| TOATE (implicit) | Returnează fiecare rând corespondent, inclusiv duplicatele | Numărarea sau listarea înregistrărilor brute |
| DISTINCT | Restrânge rândurile duplicate într-unul singur | Construirea unei liste de valori unice |
| LIMITĂ | Returnează doar primele N rânduri | Previzualizarea datelor sau a rezultatelor paginii |
Odată ce sintaxa a fost stabilită, baza de date exemplu dă viață acestor clauze.
Exemple practice de instrucțiuni SELECT
Faceți clic pentru a descărca baza de date myflix utilizată pentru exemplele practice.
Puteți afla cum să importați fișierul .sql în MySQL Banc de lucru.
Exemplele sunt realizate pe următoarele două tabele.
Tabelul 1: membrii tabel
| numar de membru | nume complete | sex | data nașterii | adresă fizică | adresa postala | contct_ număr | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Femeie | 21-07-1980 | Primul teren stradal nr. 4 | Geantă privată | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Femeie | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Masculin | 12-07-1989 | Strada a 3-a 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Femeie | 14-02-1984 | Strada 2 23 | NULL | NULL | NULL |
Tabelul 2: filme tabel
| movie_id | titlu | director | year_released | categorie_id |
|---|---|---|---|---|
| 1 | Piratii din Caraibe 4 | Rob Marshall | 2011 | 1 |
| 2 | Uitând-o pe Sarah Marshal | Nicolae Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Nume Black | Edgar Jimz | 2010 | NULL |
| 5 | Fetițele lui Tati | NULL | 2007 | 8 |
| 6 | ingeri si Demoni | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schultz | 2005 | 8 |
| 16 | 67% vinovat | NULL | 2012 | NULL |
Obținerea unei liste de membri
Să presupunem că dorim o listă cu toți membrii înregistrați ai bibliotecii din baza noastră de date. Am folosi scriptul prezentat mai jos pentru a face acest lucru.
SELECT * FROM `members`;
Executarea scriptului în MySQL Workbench produce următoarele rezultate.
| numar de membru | nume complete | sex | data nașterii | adresă fizică | adresa postala | contct_ număr | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Femeie | 21-07-1980 | Primul teren stradal nr. 4 | Geantă privată | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Femeie | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Masculin | 12-07-1989 | Strada a 3-a 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Femeie | 14-02-1984 | Strada 2 23 | NULL | NULL | NULL |
Interogarea a returnat toate rândurile și coloanele din tabelul membrilor.
Selectarea coloanelor specifice
Să presupunem că suntem interesați doar de câmpurile full_names, gender, physical_address și email. Următorul script realizează acest lucru.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Executarea scriptului în MySQL Workbench produce următoarele rezultate.
| nume complete | sex | adresă fizică | |
|---|---|---|---|
| Janet Jones | Femeie | Primul teren stradal nr. 4 | janetjones@yagoo.cm |
| Janet Smith Jones | Femeie | Melrose 123 | jj@fstreet.com |
| Robert Phil | Masculin | Strada a 3-a 34 | rm@tstreet.com |
| Gloria Williams | Femeie | Strada 2 23 | NULL |
Obținerea unei liste de filme cu expresii
Expresiile pot fi folosite și în instrucțiunile SELECT. Să presupunem că dorim o listă de filme cu titlul și numele regizorului într-un câmp, regizorul între paranteze, plus anul lansării filmului. Următorul script face acest lucru.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
AICI
- Concat() MySQL Funcția unește valorile coloanelor.
- Linia „Concat(`title`, ' (', `director`, ')')” preia titlul, adaugă o paranteză de deschidere urmată de numele regizorului, apoi adaugă paranteza de închidere.
- Porțiunile de șir de caractere sunt separate folosind virgule în cadrul funcției Concat().
Executarea scriptului în MySQL Workbench produce următorul set de rezultate.
| Concat(`titlu`, '(', `director`, ')') | year_released |
|---|---|
| Piratii din Caraibe 4 ( Rob Marshall) | 2011 |
| Uitând-o pe Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Numele Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Notă: Concat() returnează NULL când oricare argument este NULL, motiv pentru care filmele fără regizor afișează NULL mai sus.
Nume de câmpuri Alias
Exemplul de mai sus a returnat codul de concatenare drept nume de câmp. Pentru a utiliza un nume de câmp mai descriptiv în setul de rezultate, aplicați un alias de coloană. Sintaxa de bază este următoarea.
SELECT `column_name|value|expression` [AS] `alias_name`;
AICI
- „SELECT `nume_coloană|valoare|expresie`” este instrucțiunea SELECT obișnuită, care poate fi un nume de coloană, o valoare sau o expresie.
- "[LA FEL DE]" este cuvântul cheie opțional dinaintea numelui alias.
- „`alias_name`” este aliasul returnat în setul de rezultate ca nume de câmp.
Aceeași interogare cu un nume de coloană mai semnificativ:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
Obținem următorul rezultat.
| Concat | year_released |
|---|---|
| Piratii din Caraibe 4 ( Rob Marshall) | 2011 |
| Uitând-o pe Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Numele Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Obținerea unei liste de membri care arată anul nașterii
Să presupunem că dorim o listă cu toți membrii, care să arate numărul de membru, numele complete și anul nașterii. Putem folosi funcția șir LEFT pentru a exemplificatracanul nașterii din câmpul datei nașterii.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
AICI
- „STÂNGA(`data_nașterii`,4)” il Funcția șir STÂNGA acceptă data nașterii ca parametru și returnează doar 4 caractere de la stânga.
- „AS `an_nașterii`” este numele alias al coloanei returnat în rezultatele noastre. Cel/Cea/Cele Cuvântul cheie AS este opțional; îl poți omite și interogarea va funcționa în continuare.
Executarea interogării în MySQL Workbench-ul pentru myflixdb ne oferă rezultatele de mai jos.
| numar de membru | nume complete | anul nașterii |
|---|---|---|
| 1 | Janet Jones | 1980 |
| 2 | Janet Smith Jones | 1980 |
| 3 | Robert Phil | 1989 |
| 4 | Gloria Williams | 1984 |
Interogările scrise de mână sunt doar o rută către un set de rezultate. Workbench poate, de asemenea, să construiască instrucțiunea pentru dvs.
SQL folosind MySQL Banc de lucru
Acum vom folosi MySQL Workbench pentru a genera scriptul care afișează toate numele câmpurilor din tabelul nostru de categorii.
1. Faceți clic dreapta pe tabelul Categorii. Faceți clic pe „Selectați rânduri – Limită 1000”.
2. MySQL Workbench creează automat o interogare SQL și o lipește în editor.
3. Rezultatele interogării sunt afișate în grila de sub editor.
După cum arată captura de ecran, nu am scris noi înșine instrucțiunea SELECT. MySQL Workbench l-a generat pentru noi.
De ce să folosim comanda SQL SELECT când avem MySQL Banc de lucru?
Poate vă întrebați de ce ar trebui să învățați comanda SQL SELECT când un instrument precum MySQL Workbench returnează aceleași rezultate fără a avea cunoștințe de limbajul SQL. Această scurtătură este posibilă, dar învățarea comenzii SELECT iti ofera mai mult flexibilitate și Control peste dvs. Instrucțiuni SQL SELECT.
MySQL Bancul de lucru se încadrează în categoria „Interogare prin exemplu„(QBE). Este destinat să genereze instrucțiuni SQL mai rapid și să crească productivitatea utilizatorilor.”
Învățarea comenzii SQL SELECT vă permite să creați interogări complexe care nu pot fi generate cu ușurință de utilitarele Query by Example, cum ar fi MySQL Banc de lucru.
Pentru a îmbunătăți productivitatea, puteți generați codul în MySQL Banc de lucru, Apoi personaliza l satisface cerințele dumneavoastrăAcest lucru este posibil doar după ce înțelegi cum funcționează instrucțiunile SQL.



