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.

  • ๐Ÿ”Ž Kerndoel: SELECT haalt opgeslagen rijen op die aan bepaalde criteria voldoen, zowel vanuit de opdrachtprompt als vanuit PHP. Python, en andere talen.
  • ๐Ÿงฉ Syntaxisvolgorde: SELECT, FROM, WHERE, GROUP BY, HAVING en ORDER BY moeten in die vaste volgorde voorkomen.
  • โญ Snelkoppeling met sterren: SELECT * FROM `members`; retourneert elke kolom, terwijl het expliciet benoemen van kolommen de resultaten kleiner en sneller houdt.
  • ๐Ÿ”— uitdrukkingen: Concat() voegt kolomwaarden samen en LEFT() verwijdert tekens, zodat berekende velden direct in de resultaatset verschijnen.
  • ???? ๏ธ Kolomaliassen: Het optionele trefwoord AS hernoemt elke expressie en vervangt onleesbare kopteksten zoals Concat(`title`) door duidelijke labels.
  • ๏ธ Vergelijking van werkbanken: MySQL Workbench genereert query's visueel, maar handgeschreven SELECT-instructies blijven nodig voor complexe, nauwkeurige zoekopdrachten.

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.

SELECT-vraag in MySQL

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

SQL-gebruik MySQL Werkbank

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.

Inzicht in de MySQL SELECT-instructie

Veelgestelde vragen

Meestal wel. SELECT * leest elke kolom, inclusief grote tekst- en blobvelden die je mogelijk niet nodig hebt, en het blokkeert de dekkende indexen. Door de kolommen een naam te geven, blijft de resultaatset kleiner en de query sneller.

Trefwoorden zoals SELECT en FROM zijn niet hoofdlettergevoelig. Stringvergelijkingen volgen de sortering van de kolom, dus een niet-hoofdlettergevoelige sortering zoals utf8mb4_0900_ai_ci behandelt "Janet" en "janet" als gelijk.

Een ontbrekende index is meestal de oorzaak. Voer EXPLAIN uit vรณรณr de query om te zien of MySQL Voert een volledige tabelscan uit, indexeert vervolgens de gefilterde of gekoppelde kolommen en retourneert alleen de rijen die u nodig hebt.

Ja. Tekst-naar-SQL-assistenten zetten een eenvoudig verzoek om in een SELECT-instructie zodra ze uw schema kennen. RevBekijk de gegenereerde joins en filters, want een AI-model kan kolomnamen verzinnen die niet bestaan.

Nee. AI stelt snel een query op, maar je controleert nog steeds de logica, de joins en de prestaties. MySQL WerkbankKennis van SELECT stelt je in staat om een โ€‹โ€‹foutief resultaat te herkennen voordat het in productie wordt genomen.

Vat dit bericht samen met: