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.

  • 🔎 Kärnsyfte: SELECT hämtar lagrade rader som matchar ett kriterium, från kommandotolken eller från PHP, Pythonoch andra språk.
  • 🧩 Syntaxordning: SELECT, FROM, WHERE, GROUP BY, HAVING och ORDER BY måste visas i den fasta ordningen.
  • Stjärngenväg: SELECT * FROM `medlemmar`; returnerar varje kolumn, medan explicit namngivning av kolumner håller resultatmängderna mindre och snabbare.
  • 🔗 Uttryck: Concat() kopplar samman kolumnvärden och LEFT() trimmar tecken, så beräknade fält visas direkt i resultatmängden.
  • 🏷️ Kolumnalias: Det valfria nyckelordet AS byter namn på alla uttryck och ersätter oläsliga rubriker som Concat(`title`) med tydliga etiketter.
  • 🖱️ Jämförelse av arbetsbänk: MySQL Workbench genererar frågor visuellt, men handskrivna SELECT-satser är fortfarande nödvändiga för komplex och exakt hämtning.

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.

VÄLJ fråga i MySQL

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

SQL använder MySQL Arbetsbänk

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.

Förstå MySQL SELECT-sats

Vanliga frågor

Vanligtvis ja. SELECT * läser varje kolumn, inklusive stor text och blobfält som du kanske inte behöver, och det blockerar täckande index. Att namnge kolumnerna håller resultatmängden mindre och frågan snabbare.

Nyckelord som SELECT och FROM är inte skiftlägeskänsliga. Strängjämförelser följer kolumnens sortering, så en skiftlägesobegränsande sortering som utf8mb4_0900_ai_ci behandlar "Janet" och "janet" som lika.

Ett saknat index är den vanliga orsaken. Kör EXPLAIN före frågan för att se om MySQL utför en fullständig tabellskanning, indexerar sedan de filtrerade eller kopplade kolumnerna och returnerar endast de rader du behöver.

Ja. Text-till-SQL-assistenter konverterar en vanlig begäran till en SELECT-sats när de känner till ditt schema. RevVisa de genererade kopplingarna och filtren, eftersom en AI-modell kan uppfinna kolumnnamn som inte finns.

Nej. AI utarbetar en fråga snabbt, men du verifierar fortfarande logiken, kopplingarna och prestandan i MySQL ArbetsbänkAtt känna till SELECT är det som gör att du kan upptäcka ett felaktigt resultat innan det når produktionsstadiet.

Sammanfatta detta inlägg med: