MySQL SELECT-instructie met voorbeelden
โก Slimme samenvatting
De MySQL Een SELECT-instructie haalt rijen op uit een of meer tabellen, en elk voorbeeld hieronder wordt uitgevoerd op de myflix-voorbeelddatabase, van de eenvoudige STAR-query tot expressies, kolomaliassen en tekenreeksfuncties.

Wat is een SELECT-query in MySQL?
SELECT-query wordt gebruikt om gegevens op te halen van de MySQL database. Databases slaan gegevens op voor later gebruik. Het doel van MySQL Een SELECT-query retourneert een of meer rijen uit de databasetabellen die aan bepaalde criteria voldoen. Een SELECT-query kan worden gebruikt in een scripttaal zoals PHP of Ruby, of je kunt deze uitvoeren vanuit de opdrachtprompt.
Omdat SELECT het commando is dat je het vaakst zult gebruiken, is het verstandig om de syntaxis ervan te leren voordat je met de voorbeeldgegevens aan de slag gaat.
Syntaxis van een SQL SELECT-instructie
SELECT is het meest gebruikte SQL-commando en heeft de volgende algemene syntaxis:
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
HIER
- SELECT is het SQL-trefwoord waarmee de database weet dat u gegevens wilt ophalen.
- [ONDERSCHEID | ALLE] Dit zijn optionele trefwoorden die de resultaten van de SQL SELECT-instructie verfijnen. Als er niets is opgegeven, wordt ALL als standaardwaarde aangenomen.
- {*| [veldExpressie [AS nieuweNaam]} Er moet ten minste รฉรฉn onderdeel worden gespecificeerd. "*" selecteert alle velden uit de opgegeven tabelnaam; fieldExpression voert berekeningen uit op de opgegeven velden, zoals het optellen van getallen of het samenvoegen van twee tekenreeksvelden tot รฉรฉn.
- NU De tabelnaam is verplicht en moet ten minste รฉรฉn tabel bevatten. Meerdere tabellen moeten worden gescheiden door komma's of worden samengevoegd met het trefwoord JOIN.
- WAAR De voorwaarde is optioneel. Deze specificeert criteria voor de resultaten die door de query worden geretourneerd.
- GROEP DOOR wordt gebruikt om records samen te stellen die dezelfde veldwaarden hebben.
- HEBBEN De parameter 'condition' wordt gebruikt om criteria te specificeren bij het werken met het trefwoord 'GROUP BY'.
- BESTELLING DOOR wordt gebruikt om de sorteervolgorde van de resultatenset op te geven.
*
Het sterretje selecteert alle kolommen in een tabel. Een eenvoudige SELECT-instructie ziet eruit zoals hieronder weergegeven.
SELECT * FROM `members`;
De bovenstaande instructie selecteert alle velden uit de tabel 'members'. De puntkomma dient als afsluiting van de instructie. Het is niet verplicht, maar het wordt als goede gewoonte beschouwd om instructies op deze manier af te sluiten.
SELECT DISTINCT en LIMIT in MySQL
Twee optionele trefwoorden in de syntaxis verdienen een nadere beschouwing, omdat beginners ze tegenkomen zodra een tabel groeit.
DISTINCT Verwijdert dubbele rijen uit de resultaten. De tabel met films bevat meerdere films die in 2007 zijn uitgebracht, dus een gewone query herhaalt dat jaar. DISTINCT retourneert elke waarde slechts รฉรฉn keer.
SELECT DISTINCT `year_released` FROM `movies`;
LIMIT Het aantal geretourneerde rijen wordt beperkt, waardoor de client wordt beschermd tegen een query die anders miljoenen records zou ophalen.
SELECT * FROM `movies` LIMIT 5;
| Keyword | Wat het doet | Wanneer u het moet gebruiken |
|---|---|---|
| ALLES (standaard) | Geeft alle overeenkomende rijen terug, inclusief duplicaten. | Het tellen of opsommen van ruwe gegevens |
| DISTINCT | Voegt dubbele rijen samen tot รฉรฉn rij. | Een lijst met unieke waarden samenstellen |
| LIMIT | Geeft alleen de eerste N rijen terug. | Gegevens bekijken of resultaten pagineren |
Nu de syntaxis vastligt, brengt de voorbeelddatabase deze clausules tot leven.
Praktische voorbeelden van de SELECT-instructie
Klik om te downloaden De MyFlix-database werd gebruikt voor de praktische voorbeelden.
Je kunt leren hoe je het .sql-bestand importeert in MySQL Werkbank.
De voorbeelden worden uitgevoerd aan de hand van de volgende twee tabellen.
Tabel 1: leden tafel
| lidmaatschapsnummer | volledige namen | geslacht | geboortedatum | fysiek adres | postadres | contact_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Vrouwen | 21-07-1980 | Eerste straatkavel nr. 4 | Privรฉ tas | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smit Jones | Vrouwen | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Fil | Mannen | 12-07-1989 | 3e Straat 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Vrouwen | 14-02-1984 | 2e Straat 23 | NULL | NULL | NULL |
Tabel 2: bioscoop tafel
| film_id | titel | directeur | jaar_uitgebracht | categorie ID |
|---|---|---|---|---|
| 1 | Piraten van het Caribisch gebied 4 | Rob Marshall | 2011 | 1 |
| 2 | Sarah Marshal vergeten | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Naam Zwart | Edgar Jimz | 2010 | NULL |
| 5 | Papa's kleine meisjes | NULL | 2007 | 8 |
| 6 | Engelen en duivels | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schulz | 2005 | 8 |
| 16 | 67% Schuldig | NULL | 2012 | NULL |
Ledenlijst ophalen
Stel dat we een lijst willen van alle geregistreerde bibliotheekleden uit onze database. Daarvoor gebruiken we het onderstaande script.
SELECT * FROM `members`;
Het script uitvoeren in MySQL Workbench levert de volgende resultaten op.
| lidmaatschapsnummer | volledige namen | geslacht | geboortedatum | fysiek adres | postadres | contact_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Vrouwen | 21-07-1980 | Eerste straatkavel nr. 4 | Privรฉ tas | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smit Jones | Vrouwen | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Fil | Mannen | 12-07-1989 | 3e Straat 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Vrouwen | 14-02-1984 | 2e Straat 23 | NULL | NULL | NULL |
De query retourneerde alle rijen en kolommen uit de tabel 'members'.
Specifieke kolommen selecteren
Stel dat we alleen geรฏnteresseerd zijn in de velden full_names, gender, physical_address en email. Het volgende script doet dat.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Het script uitvoeren in MySQL Workbench levert de volgende resultaten op.
| volledige namen | geslacht | fysiek adres | |
|---|---|---|---|
| Janet Jones | Vrouwen | Eerste straatkavel nr. 4 | janetjones@yagoo.cm |
| Janet Smit Jones | Vrouwen | Melrose 123 | jj@fstreet.com |
| Robert Fil | Mannen | 3e Straat 34 | rm@tstreet.com |
| Gloria Williams | Vrouwen | 2e Straat 23 | NULL |
Filmlijst ophalen met uitdrukkingen
Expressies kunnen ook in SELECT-statements worden gebruikt. Stel dat we een lijst met films willen, waarbij de titel en de naam van de regisseur in รฉรฉn veld staan, de regisseur tussen haakjes, plus het jaar waarin de film is uitgebracht. Het volgende script doet dat.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
HIER
- De Concat()-functie MySQL Deze functie voegt kolomwaarden samen.
- De regel โConcat(`title`, ' (', `director`, ')')โ haalt de titel op, voegt een openingshaakje toe, gevolgd door de naam van de regisseur, en voegt vervolgens het sluitingshaakje toe.
- Binnen de functie Concat() worden tekenreeksdelen gescheiden door komma's.
Het script uitvoeren in MySQL Workbench produceert de volgende resultaten.
| Concat(`titel`, ' (', `regisseur`, ')') | jaar_uitgebracht |
|---|---|
| Pirates of the Caribbean 4 (Rob Marshall) | 2011 |
| Sarah Marshal (Nicholas Stoller) vergeten | 2008 |
| NULL | 2008 |
| Code Naam Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Let op: Concat() retourneert NULL wanneer een van de argumenten NULL is. Daarom wordt bij films zonder regisseur hierboven NULL weergegeven.
Alias โโveldnamen
Het bovenstaande voorbeeld gaf de concatenatiecode als veldnaam weer. Om een โโmeer beschrijvende veldnaam in de resultaatset te gebruiken, kunt u een kolomalias toepassen. De basissyntaxis is als volgt.
SELECT `column_name|value|expression` [AS] `alias_name`;
HIER
- โSELECT `column_name|value|expression`โ Dit is de reguliere SELECT-instructie, die een kolomnaam, waarde of expressie kan bevatten.
- "[ALS]" is het optionele trefwoord vรณรณr de aliasnaam.
- โ`alias_naam`โ is de alias die in de resultaatset wordt geretourneerd als veldnaam.
Dezelfde query met een meer betekenisvolle kolomnaam:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
We krijgen het volgende resultaat.
| Conflict | jaar_uitgebracht |
|---|---|
| Pirates of the Caribbean 4 (Rob Marshall) | 2011 |
| Sarah Marshal (Nicholas Stoller) vergeten | 2008 |
| NULL | 2008 |
| Code Naam Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Ledenlijst opvragen met vermelding van geboortejaar
Stel dat we een lijst willen van alle leden, inclusief lidmaatschapsnummer, volledige naam en geboortejaar. We kunnen hiervoor de stringfunctie LEFT gebruiken.tract het geboortejaar uit het geboortedatumveld.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
HIER
- โLINKS(`geboortedatum`,4)โ the LINKER snaarfunctie De functie accepteert de geboortedatum als parameter en retourneert slechts 4 tekens vanaf links.
- โAS `geboortejaar`โ is de kolomaliasnaam teruggevonden in onze resultaten. De AS-trefwoord is optioneelJe kunt het weglaten en de query werkt nog steeds.
De query uitvoeren in MySQL Workbench heeft de myflixdb-database op de onderstaande resultaten gebaseerd.
| lidmaatschapsnummer | volledige namen | geboortejaar |
|---|---|---|
| 1 | Janet Jones | 1980 |
| 2 | Janet Smit Jones | 1980 |
| 3 | Robert Fil | 1989 |
| 4 | Gloria Williams | 1984 |
Handgeschreven query's zijn slechts รฉรฉn manier om een โโresultaatset te verkrijgen. Workbench kan de query ook voor u samenstellen.
SQL gebruiken MySQL Werkbank
Wij gaan nu gebruiken MySQL Workbench gebruikt om het script te genereren dat alle veldnamen uit onze categorieรซntabel weergeeft.
1. Klik met de rechtermuisknop op de tabel Categorieรซn. Klik op 'Rijen selecteren - Beperken tot 1000'.
2. MySQL Workbench genereert automatisch een SQL-query en plakt deze in de editor.
3. De zoekresultaten worden weergegeven in het raster onder de editor.
Zoals de schermafbeelding laat zien, hebben we de SELECT-instructie niet zelf geschreven. MySQL Workbench heeft het voor ons gegenereerd.
Waarom de SQL-opdracht SELECT gebruiken als we die ook hebben? MySQL Werkbank?
Je vraagt โโje misschien af โโwaarom je het SQL SELECT-commando zou moeten leren als er een tool zoals MySQL Workbench levert dezelfde resultaten op zonder enige kennis van de SQL-taal. Die kortere weg is mogelijk, maar Het SELECT-commando leren geeft je meer flexibiliteit en onder controle te houden over je SQL SELECT-instructies.
MySQL Werkbank valt in de categorie "Vraag per voorbeeldโ (QBE) tools. Het is bedoeld om sneller SQL-statements te genereren en de productiviteit van de gebruiker te verhogen.
Door het SQL SELECT-commando te leren, kunt u het volgende creรซren: complexe vragen die niet gemakkelijk gegenereerd kunnen worden door Query by Example-hulpprogramma's zoals MySQL Werkbank.
Om de productiviteit te verbeteren, kunt u genereer de code in MySQL Werkbankdan aan te passen het aan aan uw eisen voldoenDat is alleen mogelijk als je begrijpt hoe SQL-instructies werken.



