MySQL VÄLJ uttalande med exempel
⚡ Smart sammanfattning
Ocuco-landskapet MySQL SELECT-satsen hämtar rader från en eller flera tabeller, och varje exempel nedan körs mot myflix-exempeldatabasen, och går från den vanliga stjärnfrågan till uttryck, kolumnalias och strängfunktioner.

Vad är en SELECT-fråga i MySQL?
SELECT-fråga används för att hämta data från MySQL databas. Databaser lagrar data för senare hämtning. Syftet med MySQL SELECT returnerar en eller flera rader från databastabellerna som matchar ett givet kriterium. En SELECT-fråga kan användas i ett skriptspråk som PHP eller Ruby, eller så kan du köra den från kommandotolken.
Eftersom SELECT är det kommando du kör oftast lönar det sig att lära sig dess syntax innan du vidrör exempeldata.
SQL SELECT-satssyntax
SELECT är det mest använda SQL-kommandot och har följande allmänna syntax:
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
HÄR
- VÄLJA är SQL-nyckelordet som låter databasen veta att du vill hämta data.
- [DISTINKT | ALLT] är valfria nyckelord som finjusterar resultaten som returneras från SQL SELECT-satsen. Om inget anges antas ALL vara standard.
- {*| [fieldExpression [AS newName]} Minst en del måste anges. "*" väljer alla fält från det angivna tabellnamnet; fieldExpression utför beräkningar på de angivna fälten, till exempel att lägga till tal eller sammanfoga två strängfält till ett.
- FRÅN Tabellnamn är obligatoriskt och måste innehålla minst en tabell. Flera tabeller måste separeras med kommatecken eller kopplas samman med nyckelordet JOIN.
- VAR Villkoret är valfritt. Det anger kriterier i resultatmängden som returneras från frågan.
- GRUPP AV används för att sätta ihop poster som har samma fältvärden.
- HAR Villkor används för att ange kriterier när man arbetar med GROUP BY-nyckelordet.
- SORTERA EFTER används för att ange sorteringsordningen för resultatuppsättningen.
*
Stjärnsymbolen markerar alla kolumner i en tabell. En enkel SELECT-sats ser ut som den som visas nedan.
SELECT * FROM `members`;
Satsen ovan väljer alla fält från medlemstabellen. Semikolon är en satsens avslutning. Det är inte obligatoriskt, men att avsluta dina satsen på detta sätt anses vara god praxis.
VÄLJ DISTINCT och LIMIT i MySQL
Två valfria nyckelord i syntaxen förtjänar en närmare titt, eftersom nybörjare stöter på dem så fort en tabell växer.
TYDLIG tar bort dubbletter av rader från resultatmängden. Filmtabellen lagrar flera filmer som släpptes 2007, så en vanlig fråga upprepas det året. DISTINCT returnerar varje värde en gång.
SELECT DISTINCT `year_released` FROM `movies`;
BEGRÄNSA begränsar antalet returnerade rader, vilket skyddar klienten från en fråga som annars skulle hämta miljontals poster.
SELECT * FROM `movies` LIMIT 5;
| Nyckelord | Vad den gör | När ska du använda den |
|---|---|---|
| ALLA (standard) | Returnerar varje matchande rad, inklusive dubbletter | Räkna eller lista råa poster |
| TYDLIG | Minimerar duplicerade rader till en | Skapa en lista med unika värden |
| BEGRÄNSA | Returnerar endast de första N raderna | Förhandsgranska data eller sökresultat |
När syntaxen är fastställd väcker exempeldatabasen dessa klausuler till liv.
Praktiska exempel på SELECT-satser
Klicka för att ladda ner myflix-databasen som används för de praktiska exemplen.
Du kan lära dig hur du importerar .sql-filen till MySQL Arbetsbänk.
Exemplen utförs på följande två tabeller.
Tabell 1: medlemmar bord
| medlemsnummer | Fullständiga namn | kön | födelsedatum | fysisk adress | postadress | kontakt_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Kvinna | 21-07-1980 | First Street Tomt nr 4 | Privat väska | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Kvinna | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | man | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Kvinna | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Tabell 2: filmer bord
| movie_id | rubricerade | direktör | year_released | kategori_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Att glömma Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Män | NULL | 2008 | NULL |
| 4 | Code Namn Svart | Edgar Jimz | 2010 | NULL |
| 5 | Pappas små flickor | NULL | 2007 | 8 |
| 6 | Änglar och demoner | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67 % skyldig | NULL | 2012 | NULL |
Hämta medlemslista
Anta att vi vill ha en lista över alla registrerade biblioteksmedlemmar från vår databas. Vi skulle använda skriptet som visas nedan för att göra det.
SELECT * FROM `members`;
Kör skriptet i MySQL Workbench ger följande resultat.
| medlemsnummer | Fullständiga namn | kön | födelsedatum | fysisk adress | postadress | kontakt_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Kvinna | 21-07-1980 | First Street Tomt nr 4 | Privat väska | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Kvinna | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | man | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Kvinna | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Frågan returnerade alla rader och kolumner från medlemstabellen.
Välja specifika kolumner
Säg att vi bara är intresserade av fälten full_names, gender, physical_address och email. Följande skript åstadkommer detta.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Kör skriptet i MySQL Workbench ger följande resultat.
| Fullständiga namn | kön | fysisk adress | |
|---|---|---|---|
| Janet Jones | Kvinna | First Street Tomt nr 4 | janetjones@yagoo.cm |
| Janet Smith Jones | Kvinna | Melrose 123 | jj@fstreet.com |
| Robert Phil | man | 3rd Street 34 | rm@tstreet.com |
| Gloria Williams | Kvinna | 2nd Street 23 | NULL |
Hämta filmlistor med uttryck
Uttryck kan också användas i SELECT-satser. Säg att vi vill ha en lista över filmer med titeln och regissörens namn i ett fält, regissören inom parentes, plus året då filmen släpptes. Följande skript gör det.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
HÄR
- Konkaten() MySQL Funktionen kopplar samman kolumnvärden.
- Raden ”Concat(`title`, ' (', `director`, ')')” hämtar titeln, lägger till en inledande hakparentes följt av regissörens namn och lägger sedan till den avslutande hakparentesen.
- Strängdelar separeras med kommatecken i Concat()-funktionen.
Kör skriptet i MySQL Workbench producerar följande resultatuppsättning.
| Concat(`titel`, '(', `direktör`, ')') | year_released |
|---|---|
| Pirates of the Caribean 4 (Rob Marshall) | 2011 |
| Att glömma Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Namn Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Obs: Concat() returnerar NULL när något argument är NULL, vilket är anledningen till att filmer utan regissör visar NULL ovan.
Aliasfältnamn
Exemplet ovan returnerade sammanfogningskoden som fältnamn. För att använda ett mer beskrivande fältnamn i resultatmängden, använd ett kolumnalias. Grundsyntaxen följer.
SELECT `column_name|value|expression` [AS] `alias_name`;
HÄR
- "SELECT `kolumnnamn|värde|uttryck`" är den vanliga SELECT-satsen, som kan vara ett kolumnnamn, värde eller uttryck.
- "[SOM]" är det valfria nyckelordet före aliasnamnet.
- "alias_name" är det aliaset som returneras i resultatmängden som fältnamn.
Samma fråga med ett mer meningsfullt kolumnnamn:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
Vi får följande resultat.
| Concat | year_released |
|---|---|
| Pirates of the Caribean 4 (Rob Marshall) | 2011 |
| Att glömma Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Namn Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Hämta medlemslista som visar födelseår
Anta att vi vill ha en lista över alla medlemmar som visar medlemsnummer, fullständiga namn och födelseår. Vi kan använda strängfunktionen VÄNSTER för att t.ex.tracfödelseåret från fältet för födelsedatum.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
HÄR
- "LEFT(`födelsedatum`,4)" d VÄNSTER strängfunktion accepterar födelsedatumet som parameter och returnerar endast 4 tecken från vänster.
- "SOM `födelseår`" är kolumn alias namn återkom i våra resultat. Den AS-nyckelord är valfritt; du kan utelämna den och frågan fungerar fortfarande.
Kör frågan i MySQL Workbench mot myflixdb ger oss resultaten som visas nedan.
| medlemsnummer | Fullständiga namn | födelseår |
|---|---|---|
| 1 | Janet Jones | 1980 |
| 2 | Janet Smith Jones | 1980 |
| 3 | Robert Phil | 1989 |
| 4 | Gloria Williams | 1984 |
Handskrivna frågor är bara en väg till en resultatuppsättning. Workbench kan också bygga satsen åt dig.
SQL med hjälp av MySQL Arbetsbänk
Vi ska nu använda MySQL Arbetsbänk för att generera skriptet som visar alla fältnamn från vår kategoritabell.
1. Högerklicka på tabellen Kategorier. Klicka på "Välj rader – Begränsa 1000".
2. MySQL Workbench skapar automatiskt en SQL-fråga och klistrar in den i redigeraren.
3. Frågeresultaten visas i rutnätet under redigeraren.
Som skärmdumpen visar skrev vi inte SELECT-satsen själva. MySQL Workbench genererade den åt oss.
Varför använda SELECT SQL-kommandot när vi har MySQL Arbetsbänk?
Du kanske undrar varför du borde lära dig SQL SELECT-kommandot när ett verktyg som MySQL Workbench returnerar samma resultat utan någon kunskap om SQL-språket. Den genvägen är möjlig, men lära sig SELECT-kommandot ger dig mer flexibilitet och kontroll över din SQL SELECT-satser.
MySQL Arbetsbänken faller inom kategorin "Fråga efter exempel” (QBE) verktyg. Det är avsett att generera SQL-satser snabbare och öka användarproduktiviteten.
Genom att lära dig SQL SELECT-kommandot kan du skapa komplexa frågor som inte enkelt kan genereras av Query by Example-verktyg som till exempel MySQL Arbetsbänk.
För att förbättra produktiviteten kan du generera koden i MySQL Arbetsbänkoch sedan skräddarsy den till uppfylla dina kravDet är bara möjligt när du förstår hur SQL-satserna fungerar.



