Wat is een SELECT-query in MySQL?
SELECT QUERY wordt gebruikt om de gegevens uit de MySQL-database op te halen. Databases slaan gegevens op voor later gebruik. Het doel van MySQL Select is om uit de databasetabellen een of meer rijen te retourneren die voldoen aan een bepaald criterium. Selecteer query kan worden gebruikt in scripttaal zoals PHP, Ruby, of u kunt het uitvoeren via de opdrachtprompt.
Syntaxis van SQL SELECT-instructie
Het is de meest gebruikte SQL-opdracht 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-sleutelwoord waarmee de database weet dat u gegevens wilt ophalen.
- [DISTINCT | ALL] zijn optionele sleutelwoorden die kunnen worden gebruikt om de resultaten van de SQL SELECT-instructie te verfijnen. Als er niets is opgegeven, wordt ALL aangenomen als de standaardinstelling.
- [fieldExpression [AS newName]} ten minste één deel moet worden gespecificeerd, "*" selecteerde alle velden van de gespecificeerde tabelnaam, fieldExpression voert enkele berekeningen uit op de gespecificeerde velden zoals het optellen van getallen of het samenvoegen van twee stringvelden tot één.
- FROM tableName is verplicht en moet ten minste één tabel bevatten, meerdere tabellen moeten worden gescheiden met komma's of worden samengevoegd met het trefwoord JOIN.
- WHERE- voorwaarde is optioneel, het kan worden gebruikt om criteria op te geven in de resultaatset die door de query wordt geretourneerd.
- GROUP BY wordt gebruikt om records samen te stellen die dezelfde veldwaarden hebben.
- De voorwaarde HAVING wordt gebruikt om criteria op te geven bij het werken met het sleutelwoord GROUP BY.
- ORDER BY wordt gebruikt om de sorteervolgorde van de resultatenset te specificeren.
Het sterrensymbool wordt gebruikt om alle kolommen in de tabel te selecteren. Een voorbeeld van een eenvoudige SELECT-instructie ziet eruit zoals hieronder.
SELECT * FROM `members`;
De bovenstaande instructie selecteert alle velden uit de ledentabel. De puntkomma is een statement terminate. Het is niet verplicht, maar wordt als een goede gewoonte beschouwd om uw uitspraken zo te beëindigen.
Praktische voorbeelden
Klik om de myflix DB te downloaden die wordt gebruikt voor praktische voorbeelden.
U kunt leren hoe u het .sql-bestand in MySQL WorkBench kunt importeren
De voorbeelden worden uitgevoerd op de volgende twee tabellen
Tabel 1: leden table
lidmaatschapsnummer | volledige namen | geslacht | geboortedatum | fysiek adres | postadres | contct_ nummer | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Vrouw | 21-07-1980 | First Street Plot No 4 | Privétas | 0759253542 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
2 | Janet Smith Jones | Vrouw | 23-06-1980 | Melrose 123 | NUL | NUL | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
3 | Robert Phil | Mannetje | 12-07-1989 | 3e straat 34 | NUL | 12345 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
4 | Gloria Williams | Vrouw | 14-02-1984 | 2e straat 23 | NUL | NUL | NUL |
Tabel 2: films table
movie_id | titel | regisseur | year_released | categorie ID |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Sarah Marshal vergeten | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NUL | 2008 | NUL |
4 | Codenaam Zwart | Edgar Jimz | 2010 | NUL |
5 | Papa's kleine meisjes | NUL | 2007 | 8 |
6 | Engelen en duivels | NUL | 2007 | 6 |
7 | Davinci-code | NUL | 2007 | 6 |
9 | Honing Mooners | John Schultz | 2005 | 8 |
16 | 67% schuldig | NUL | 2012 | NUL |
Ledenlijst krijgen
Stel dat we een lijst van alle geregistreerde bibliotheekleden uit onze database willen halen, dan gebruiken we het onderstaande script om dat te doen.
SELECT * FROM `members`;
Het uitvoeren van het bovenstaande script in MySQL-workbench levert de volgende resultaten op.
lidmaatschapsnummer | volledige namen | geslacht | geboortedatum | fysiek adres | postadres | contct_ nummer | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Vrouw | 21-07-1980 | First Street Plot No 4 | Privétas | 0759253542 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
2 | Janet Smith Jones | Vrouw | 23-06-1980 | Melrose 123 | NUL | NUL | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
3 | Robert Phil | Mannetje | 12-07-1989 | 3e straat 34 | NUL | 12345 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
4 | Gloria Williams | Vrouw | 14-02-1984 | 2e straat 23 | NUL | NUL | NUL |
Onze bovenstaande zoekopdracht heeft alle rijen en kolommen uit de ledentabel geretourneerd.
Laten we zeggen dat we alleen geïnteresseerd zijn in het verkrijgen van alleen de velden volledige namen, geslacht, fysiek_adres en e-mail. Het volgende script zou ons daarbij helpen.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Het uitvoeren van het bovenstaande script in MySQL-workbench levert de volgende resultaten op.
volledige namen | geslacht | fysiek adres | |
---|---|---|---|
Janet Jones | Vrouw | First Street Plot No 4 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
Janet Smith Jones | Vrouw | Melrose 123 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
Robert Phil | Mannetje | 3e straat 34 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
Gloria Williams | Vrouw | 2e straat 23 | NUL |
Een lijst met films ophalen
Onthoud in onze bovenstaande discussie dat we expressies noemen die zijn gebruikt in SELECT-instructies. Laten we zeggen dat we een lijst met films uit onze database willen halen. We willen de filmtitel en de naam van de filmregisseur in één veld hebben. De naam van de filmregisseur moet tussen haakjes staan. We willen ook het jaar krijgen waarin de film is uitgebracht. Het volgende script helpt ons daarbij.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
HIER
- De Concat () MySQL-functie wordt gebruikt om de waarden van de kolommen samen te voegen.
- De regel "Concat (` title`, '(', `director`, ')') krijgt de titel, voegt een openingshaakje toe gevolgd door de naam van de regisseur en voegt vervolgens het sluithaakje toe.
Tekenreeksgedeelten worden gescheiden door komma's in de functie Concat ().
Het uitvoeren van het bovenstaande script in MySQL-workbench levert de volgende resultatenset op.
Concat (`titel`, '(',` regisseur`, ')') | year_released |
---|---|
Pirates of the Caribean 4 (Rob Marshall) | 2011 |
Sarah Marshal vergeten (Nicholas Stoller) | 2008 |
NUL | 2008 |
Codenaam Zwart (Edgar Jimz) | 2010 |
NUL | 2007 |
NUL | 2007 |
NUL | 2007 |
Honey Mooners (John Schultz) | 2005 |
NUL | 2012 |
Aliasveldnamen
Het bovenstaande voorbeeld retourneerde de aaneenschakelingscode als de veldnaam voor onze resultaten. Stel dat we een meer beschrijvende veldnaam willen gebruiken in onze resultatenset. We zouden de aliasnaam van de kolom gebruiken om dat te bereiken. Het volgende is de basissyntaxis voor de kolomaliasnaam
SELECT `column_name|value|expression` [AS] `alias_name`;
HIER
- "SELECT" kolomnaam | waarde | expressie "" is de reguliere SELECT-instructie die een kolomnaam, waarde of expressie kan zijn.
- "[AS]" is het optionele sleutelwoord voordat de aliasnaam die de uitdrukking aangeeft, waarde of veldnaam wordt geretourneerd als.
- "` alias_name` " is de aliasnaam die we willen retourneren in onze resultatenset als de veldnaam.
De bovenstaande zoekopdracht met een meer betekenisvolle kolomnaam
SELECT Concat(`title`, ' (', `director`, ')') AS 'Concat', `year_released` FROM `movies`;
We krijgen het volgende resultaat
Concat | year_released |
---|---|
Pirates of the Caribean 4 (Rob Marshall) | 2011 |
Sarah Marshal vergeten (Nicholas Stoller) | 2008 |
NUL | 2008 |
Codenaam Zwart (Edgar Jimz) | 2010 |
NUL | 2007 |
NUL | 2007 |
NUL | 2007 |
Honey Mooners (John Schultz) | 2005 |
NUL | 2012 |
Ledenlijst krijgen met het geboortejaar
Stel dat we een lijst willen krijgen van alle leden met het lidmaatschapsnummer, de volledige namen en het geboortejaar, dan kunnen we de LINKER tekenreeksfunctie gebruiken om het geboortejaar uit het geboortedatumveld te halen. Het onderstaande script helpt ons daarbij.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
HIER
- "LEFT (` date_of_birth`, 4) " de LEFT string-functie accepteert de geboortedatum als de parameter en retourneert slechts 4 tekens vanaf de linkerkant.
- "AS" year_of_birth "" is de aliasnaam van de kolom die zal worden geretourneerd in onze resultaten. Merk op dat het AS-sleutelwoord optioneel is , u kunt het weglaten en de zoekopdracht zal nog steeds werken.
Het uitvoeren van de bovenstaande query in MySQL-workbench tegen de myflixdb geeft ons de onderstaande resultaten.
lidmaatschapsnummer | volledige namen | geboortejaar |
---|---|---|
1 | Janet Jones | 1980 |
2 | Janet Smith Jones | 1980 |
3 | Robert Phil | 1989 |
4 | Gloria Williams | 1984 |
SQL met behulp van MySQL Workbench
We gaan nu MySQL-workbench gebruiken om het script te genereren dat alle veldnamen uit onze categorietabel weergeeft.
1. Klik met de rechtermuisknop op de categorietabel. Klik op "Rijen selecteren - Limiet 1000"
2. MySQL-workbench zal automatisch een SQL-query maken en in de editor plakken.
3. De resultaten van de zoekopdracht worden weergegeven
Merk op dat we de SELECT-instructie niet zelf hebben geschreven. MySQL-workbench heeft het voor ons gegenereerd.
Waarom de SELECT SQL-opdracht gebruiken als we MySQL Workbench hebben?
Nu denk je misschien, waarom zou je de SQL SELECT-opdracht leren om gegevens uit de database op te vragen, terwijl je eenvoudig een tool zoals MySQL-workbench's kunt gebruiken om dezelfde resultaten te krijgen zonder kennis van de SQL-taal. Dat is natuurlijk mogelijk, maar als je leert hoe je het SELECT-commando moet gebruiken , heb je meer flexibiliteit en controle over je SQL SELECT-statements .
MySQL-workbench valt in de categorie " Query by Example " QBE-tools. Het is bedoeld om sneller SQL-instructies te genereren om de productiviteit van de gebruiker te verhogen.
Door de SQL SELECT-opdracht te leren, kunt u complexe query's maken die niet eenvoudig kunnen worden gegenereerd met behulp van Query by Example-hulpprogramma's zoals MySQL-werkbank.
Om de productiviteit te verbeteren, kunt u de code genereren met MySQL-workbench en deze vervolgens aanpassen aan uw vereisten . Dit kan alleen gebeuren als u begrijpt hoe de SQL-instructies werken!
Overzicht
- Het SQL SELECT-sleutelwoord wordt gebruikt om gegevens uit de database op te vragen en is de meest gebruikte opdracht.
- De eenvoudigste vorm heeft de syntaxis "SELECT * FROM tableName;"
- Uitdrukkingen kunnen ook worden gebruikt in het select-statement. Voorbeeld "SELECTEER hoeveelheid + prijs UIT Verkoop"
- De SQL SELECT-opdracht kan ook andere optionele parameters hebben, zoals WHERE, GROUP BY, HAVING, ORDER BY. Ze zullen later worden besproken.
- MySQL-workbench kan helpen bij het ontwikkelen van SQL-instructies, deze uit te voeren en het outputresultaat in hetzelfde venster te produceren.