Vad är SELECT-fråga i MySQL?
SELECT QUERY används för att hämta data från MySQL-databasen. Databaser lagrar data för senare hämtning. Syftet med MySQL Select är att återvända från databastabellerna, en eller flera rader som matchar ett visst kriterium. Välj fråga kan användas på skriptspråk som PHP, Ruby, eller så kan du utföra den via kommandotolken.
SQL SELECT-uttalande syntax
Det är det vanligaste 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
- SELECT är SQL-nyckelordet som låter databasen veta att du vill hämta data.
- [DISTINCT | ALL] är valfria nyckelord som kan användas för att finjustera resultaten som returneras från SQL SELECT-satsen. Om ingenting anges antas ALL som standard.
- {* | [fieldExpression [AS newName]} måste minst en del anges, "*" markerade alla fälten från det angivna tabellnamnet, fieldExpression utför vissa beräkningar på de angivna fälten som att lägga till siffror eller sätta ihop 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 sammanfogas med nyckelordet JOIN.
- VAR villkor är valfritt kan det användas för att ange kriterier i resultatuppsättningen som returneras från frågan.
- GROUP BY används för att sätta ihop poster som har samma fältvärden.
- HAVING- villkor används för att specificera kriterier när du arbetar med nyckelordet GROUP BY.
- ORDER BY används för att specificera sorteringsordningen för resultatuppsättningen.
*
Stjärnsymbolen används för att markera alla kolumner i tabellen. Ett exempel på ett enkelt SELECT-uttalande ser ut som det som visas nedan.
SELECT * FROM `members`;
Ovanstående uttalande markerar alla fält från medlemstabellen. Semikolon är ett uttalande avslutas. Det är inte obligatoriskt men anses vara en bra praxis att avsluta dina uttalanden så.
Praktiska exempel
Klicka för att ladda ner myflix DB som används för praktiska exempel.
Du kan lära dig att importera .sql-filen till MySQL WorkBench
Exemplen utförs i följande två tabeller
Tabell 1: medlemmar tabell
medlemsnummer | Fullständiga namn | kön | födelsedatum | fysisk adress | postadress | kont_nummer | e-post |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Kvinna | 21-07-1980 | First Street tomt nr 4 | Privat väska | 0759 253 542 | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
2 | Janet Smith Jones | Kvinna | 23-06-1980 | Melrose 123 | NULL | NULL | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
3 | Robert Phil | Manlig | 12-07-1989 | 3rd Street 34 | NULL | 12345 | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
4 | Gloria Williams | Kvinna | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Tabell 2: filmer tabell
movie_id | titel | direktör | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Glömmer Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Kodnamn Svart | Edgar Jimz | 2010 | NULL |
5 | Pappas små flickor | NULL | 2007 | 8 |
6 | Änglar och demoner | NULL | 2007 | 6 |
7 | Davinci-koden | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% skyldig | NULL | 2012 | NULL |
Få medlemslista
Låt oss anta att vi vill få en lista över alla registrerade biblioteksmedlemmar från vår databas, vi skulle använda skriptet nedan för att göra det.
SELECT * FROM `members`;
Att utföra ovanstående skript i MySQL-arbetsbänk ger följande resultat.
medlemsnummer | Fullständiga namn | kön | födelsedatum | fysisk adress | postadress | kont_nummer | e-post |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Kvinna | 21-07-1980 | First Street tomt nr 4 | Privat väska | 0759 253 542 | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
2 | Janet Smith Jones | Kvinna | 23-06-1980 | Melrose 123 | NULL | NULL | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
3 | Robert Phil | Manlig | 12-07-1989 | 3rd Street 34 | NULL | 12345 | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
4 | Gloria Williams | Kvinna | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Vår ovanstående fråga har returnerat alla rader och kolumner från medlemstabellen.
Låt oss säga att vi bara är intresserade av att bara få fullständiga namn, kön, fysisk adress och e-postfält. Följande manus skulle hjälpa oss att uppnå detta.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Att utföra ovanstående skript i MySQL-arbetsbänk ger följande resultat.
Fullständiga namn | kön | fysisk adress | e-post |
---|---|---|---|
Janet Jones | Kvinna | First Street tomt nr 4 | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
Janet Smith Jones | Kvinna | Melrose 123 | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
Robert Phil | Manlig | 3rd Street 34 | Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det. |
Gloria Williams | Kvinna | 2nd Street 23 | NULL |
Få filmer
Kom ihåg i vår diskussion ovan att vi nämner att uttryck har använts i SELECT-uttalanden. Låt oss säga att vi vill få en lista med film från vår databas. Vi vill ha filmtiteln och namnet på filmregissören i ett fält. Filmregissörens namn ska vara inom parentes. Vi vill också få året som filmen släpptes. Följande skript hjälper oss att göra det.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
HÄR
- Concat () MySQL-funktionen används för att sammanfoga kolumnvärdena.
- Raden "Concat (` title`, '(', `director ',') ') får titeln, lägger till en inledande parentes följt av regissörens namn och lägger sedan till den avslutande parentesen.
Strängdelar separeras med kommatecken i funktionen Concat ().
Utförande av ovanstående skript i MySQL-arbetsbänk ger följande resultatuppsättning.
Concat ('titel', '(', 'regissör', ')') | year_released |
---|---|
Pirates of the Caribean 4 (Rob Marshall) | 2011 |
Glömmer Sarah Marshal (Nicholas Stoller) | 2008 |
NULL | 2008 |
Kodnamn svart (Edgar Jimz) | 2010 |
NULL | 2007 |
NULL | 2007 |
NULL | 2007 |
Honey mooners (John Schultz) | 2005 |
NULL | 2012 |
Alias fältnamn
Ovanstående exempel returnerade sammankopplingskoden som fältnamn för våra resultat. Antag att vi vill använda ett mer beskrivande fältnamn i vår resultatuppsättning. Vi skulle använda kolumnaliasnamnet för att uppnå det. Följande är den grundläggande syntaxen för kolumnaliasnamnet
SELECT `column_name|value|expression` [AS] `alias_name`;
HÄR
- "SELECT` column_name | value | expression `" är det vanliga SELECT-uttalandet som kan vara ett kolumnnamn, värde eller uttryck.
- "[AS]" är det valfria nyckelordet innan aliasnamnet som anger uttrycket, värdet eller fältnamnet returneras som.
- "alias_name" är aliasnamnet som vi vill returnera i vår resultatuppsättning som fältnamn.
Ovanstående 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 |
Glömmer Sarah Marshal (Nicholas Stoller) | 2008 |
NULL | 2008 |
Kodnamn svart (Edgar Jimz) | 2010 |
NULL | 2007 |
NULL | 2007 |
NULL | 2007 |
Honey mooners (John Schultz) | 2005 |
NULL | 2012 |
Få medlemmar som visar födelseåret
Antag att vi vill få en lista över alla medlemmar som visar medlemsnummer, fullständiga namn och födelseår, vi kan använda VÄNSTER strängfunktionen för att extrahera födelseåret från födelsedatumet. Manuset som visas nedan hjälper oss att göra det.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
HÄR
- "VÄNSTER (` date_of_birth`, 4)" den strängfunktion VÄNSTER accepterar födelsedatum som parameter och endast återvänder 4 tecken från vänster.
- "AS` year_of_birth`" är kolumnaliasnamn som kommer att återlämnas i våra resultat. Observera att AS-nyckelordet är valfritt , du kan utesluta det och frågan kommer fortfarande att fungera.
Att utföra ovanstående fråga i MySQL-arbetsbänken 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 |
SQL med MySQL Workbench
Vi ska nu använda MySQL-arbetsbänken för att generera skriptet som visar alla fältnamn från vår kategoritabell.
1. Högerklicka på kategoritabellen. Klicka på "Välj rader - Limit 1000"
2. MySQL-arbetsbänken skapar automatiskt en SQL-fråga och klistrar in i redigeraren.
3. Frågeresultat visas
Lägg märke till att vi inte själv skrev SELECT-uttalandet. MySQL-arbetsbänken genererade den för oss.
Varför använda SELECT SQL-kommandot när vi har MySQL Workbench?
Nu kanske du funderar på varför lära dig SQL SELECT-kommandot för att fråga data från databasen när du helt enkelt kan använda ett verktyg som MySQL-arbetsbänk för att få samma resultat utan kunskap om SQL-språket. Naturligtvis är det möjligt, men att lära sig att använda kommandot SELECT ger dig mer flexibilitet och kontroll över dina SQL SELECT-uttalanden .
MySQL-arbetsbänk faller i kategorin " Query by Example " QBE-verktyg. Det är avsett att hjälpa till att generera SQL-uttalanden snabbare för att öka användarens produktivitet.
Att lära sig SQL SELECT-kommandot kan göra det möjligt för dig att skapa komplexa frågor som inte enkelt kan genereras med hjälp av Query av exempelverktyg som MySQL-arbetsbänk.
För att förbättra produktiviteten kan du generera koden med MySQL-arbetsbänk och sedan anpassa den för att uppfylla dina krav . Detta kan bara hända om du förstår hur SQL-uttalanden fungerar!
Sammanfattning
- SQL SELECT-nyckelordet används för att fråga data från databasen och det är det vanligaste kommandot.
- Den enklaste formen har syntaxen "SELECT * FROM tableName;"
- Uttryck kan också användas i select-uttalandet. Exempel "VÄLJ kvantitet + pris FRÅN försäljning"
- SQL SELECT-kommandot kan också ha andra valfria parametrar som WHERE, GROUP BY, HAVING, ORDER BY. De kommer att diskuteras senare.
- MySQL-arbetsbänken kan hjälpa till att utveckla SQL-uttalanden, utföra dem och producera resultatet i samma fönster.