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.

  • 🔎 Scop principal: SELECT preia rândurile stocate care corespund unor criterii, din promptul de comandă sau din PHP, Python, și alte limbi.
  • 🧩 Ordinea sintaxei: SELECT, FROM, WHERE, GROUP BY, HAVING și ORDER BY trebuie să apară în acea secvență fixă.
  • ⭐ Comandă rapidă Stea: SELECT * FROM `members`; returnează fiecare coloană, în timp ce denumirea coloanelor menține seturile de rezultate mai mici și mai rapide.
  • 🔗 Expresii: Concat() unește valorile coloanelor, iar LEFT() elimină caracterele, astfel încât câmpurile calculate apar direct în setul de rezultate.
  • 🏷️ Aliasuri de coloană: Cuvântul cheie opțional AS redenumește orice expresie, înlocuind anteturile ilizibile, cum ar fi Concat(`title`), cu etichete clare.
  • 🖱️ Comparație banc de lucru: MySQL Workbench generează interogări vizual, însă instrucțiunile SELECT scrise de mână rămân necesare pentru o regăsire complexă și precisă.

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

interogarea SELECT în MySQL

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

SQL folosind MySQL Banc de lucru

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.

Înțelegerea MySQL instrucțiunea SELECT

Întrebări frecvente

De obicei da. SELECT * citește fiecare coloană, inclusiv textul mare și câmpurile blob de care s-ar putea să nu aveți nevoie și blochează acoperirea indexurilor. Denumirea coloanelor menține setul de rezultate mai mic și interogarea mai rapidă.

Cuvintele cheie precum SELECT și FROM nu sunt sensibile la majuscule/minuscule. Comparațiile de șiruri de caractere urmează aranjarea coloanei, așadar o aranjare insensibilă la majuscule/minuscule, cum ar fi utf8mb4_0900_ai_ci, tratează „Janet” și „janet” ca fiind egale.

Lipsa unui index este cauza obișnuită. Executați EXPLAIN înaintea interogării pentru a vedea dacă MySQL efectuează o scanare completă a tabelului, apoi indexează coloanele filtrate sau unite și returnează doar rândurile de care aveți nevoie.

Da. Asistenții Text-to-SQL convertesc o cerere simplă într-o instrucțiune SELECT odată ce cunosc schema dvs. RevVizualizați joncțiunile și filtrele generate, deoarece un model de inteligență artificială poate inventa nume de coloane care nu există.

Nu. Inteligența artificială redactează rapid o interogare, dar tu verifici în continuare logica, joncțiunile și performanța. MySQL Banc de lucruCunoașterea funcției SELECT vă permite să identificați un rezultat greșit înainte ca acesta să ajungă în producție.

Rezumați această postare cu: