Hva er SELECT-spørring i MySQL?
SELECT QUERY brukes til å hente dataene fra MySQL-databasen. Databaser lagrer data for senere henting. Formålet med MySQL Select er å returnere fra databasetabellene, en eller flere rader som samsvarer med et gitt kriterium. Velg spørring kan brukes på skriptspråk som PHP, Ruby, eller du kan utføre det via ledeteksten.
SQL SELECT-setningssyntaks
Det er den mest brukte SQL-kommandoen og har følgende generelle syntaks
SELECT [DISTINCT|ALL ] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition][GROUP BY fieldName(s)] [HAVING condition] ORDER BY fieldName(s)HER
- SELECT er SQL-nøkkelordet som lar databasen vite at du vil hente data.
- [DISTINCT | ALL] er valgfrie nøkkelord som kan brukes til å finjustere resultatene som returneres fra SQL SELECT-setningen. Hvis ingenting er spesifisert, antas ALL som standard.
- {* | [fieldExpression [AS newName]} minst en del må spesifiseres, "*" valgte alle feltene fra det angitte tabellnavnet, fieldExpression utfører noen beregninger på de angitte feltene, for eksempel å legge til tall eller sette sammen to strengfelt i ett.
- FRA tableName er obligatorisk og må inneholde minst én tabell, flere tabeller må skilles fra hverandre med komma eller sammenføyes ved hjelp av JOIN-nøkkelordet.
- HVOR tilstanden er valgfri, kan den brukes til å spesifisere kriterier i resultatsettet som returneres fra spørringen.
- GROUP BY brukes til å sette sammen poster som har samme feltverdier.
- HAVING- tilstand brukes til å spesifisere kriterier når du arbeider med søkeordet GROUP BY.
- ORDER BY brukes til å spesifisere sorteringsrekkefølgen for resultatsettet.
*
Stjernesymbolet brukes til å velge alle kolonnene i tabellen. Et eksempel på en enkel SELECT-setning ser ut som den som er vist nedenfor.
SELECT * FROM `members`;
Ovennevnte uttalelse velger alle feltene fra medlemstabellen. Semikolonet er en uttalelse som avsluttes. Det er ikke obligatorisk, men regnes som en god praksis for å avslutte uttalelsene dine slik.
Praktiske eksempler
Klikk for å laste ned myflix DB brukt for praktiske eksempler.
Du kan lære å importere .sql-filen til MySQL WorkBench
Eksemplene er utført på de følgende to tabellene
Tabell 1: Medlemmer tabellen
medlemsnummer | fullnavn | kjønn | fødselsdato | fysisk adresse | postadresse | kont.nr | e-post |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Hunn | 21-07-1980 | First Street Plot No 4 | Privat veske | 0759 253 542 | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
2 | Janet Smith Jones | Hunn | 23-06-1980 | Melrose 123 | NULL | NULL | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
3 | Robert Phil | Mann | 12-07-1989 | 3. gate 34 | NULL | 12345 | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
4 | Gloria Williams | Hunn | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Tabell 2: filmer tabellen
movie_id | tittel | regissør | år utgitt | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Glemmer Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X menn | NULL | 2008 | NULL |
4 | Kodenavn Svart | Edgar Jimz | 2010 | NULL |
5 | Pappas småjenter | NULL | 2007 | 8 |
6 | engler og demoner | NULL | 2007 | 6 |
7 | Davinci-koden | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% skyldig | NULL | 2012 | NULL |
Få medlemsliste
La oss anta at vi ønsker å få en liste over alle registrerte biblioteksmedlemmer fra databasen vår, vi bruker skriptet vist nedenfor for å gjøre det.
SELECT * FROM `members`;
Å utføre skriptet ovenfor i MySQL arbeidsbenk gir følgende resultater.
medlemsnummer | fullnavn | kjønn | fødselsdato | fysisk adresse | postadresse | kont.nr | e-post |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Hunn | 21-07-1980 | First Street Plot No 4 | Privat veske | 0759 253 542 | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
2 | Janet Smith Jones | Hunn | 23-06-1980 | Melrose 123 | NULL | NULL | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
3 | Robert Phil | Mann | 12-07-1989 | 3. gate 34 | NULL | 12345 | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
4 | Gloria Williams | Hunn | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Forespørselen vår har returnert alle radene og kolonnene fra medlemstabellen.
La oss si at vi bare er interessert i å få bare fullnavn, kjønn, fysisk adresse og e-postfelt. Følgende skript vil hjelpe oss med å oppnå dette.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Å utføre skriptet ovenfor i MySQL arbeidsbenk gir følgende resultater.
fullnavn | kjønn | fysisk adresse | e-post |
---|---|---|---|
Janet Jones | Hunn | First Street Plot No 4 | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
Janet Smith Jones | Hunn | Melrose 123 | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
Robert Phil | Mann | 3. gate 34 | Denne e-postadressen er beskyttet mot programmer som samler e-postadresser. Du må aktivere JavaScript for å kunne se den. |
Gloria Williams | Hunn | 2nd Street 23 | NULL |
Få filmoppføring
Husk i diskusjonen ovenfor at vi nevner uttrykk som ble brukt i SELECT-setninger. La oss si at vi ønsker å få en liste over film fra databasen vår. Vi ønsker å ha filmtittelen og navnet på filmregissøren i ett felt. Navnet på filmregissøren skal være i parentes. Vi ønsker også å få året at filmen ble utgitt. Følgende skript hjelper oss med å gjøre det.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
HER
- Concat () MySQL-funksjonen brukes sammenkoble kolonneverdiene sammen.
- Linjen "Concat (` title`, '(', `director ',') ') får tittelen, legger til en åpningsbrakett etterfulgt av navnet på regissøren og legger deretter til avslutningsbraketten.
Strengdeler skilles fra ved hjelp av komma i funksjonen Concat ().
Å utføre det ovennevnte skriptet i MySQL arbeidsbenk gir følgende resultatsett.
Concat (`` tittel '', '(', 'regissør', ')') | år utgitt |
---|---|
Pirates of the Caribean 4 (Rob Marshall) | 2011 |
Glemmer Sarah Marshal (Nicholas Stoller) | 2008 |
NULL | 2008 |
Kodenavn svart (Edgar Jimz) | 2010 |
NULL | 2007 |
NULL | 2007 |
NULL | 2007 |
Honey Mooners (John Schultz) | 2005 |
NULL | 2012 |
Alias feltnavn
Ovenstående eksempel returnerte sammenføyningskoden som feltnavnet for resultatene våre. Anta at vi vil bruke et mer beskrivende feltnavn i resultatsettet vårt. Vi bruker kolonnealiasnavnet for å oppnå det. Følgende er den grunnleggende syntaksen for kolonnealiasnavnet
SELECT `column_name|value|expression` [AS] `alias_name`;
HER
- "SELECT` column_name | value | expression `" er den vanlige SELECT-setningen som kan være et kolonnenavn, verdi eller uttrykk.
- "[AS]" er det valgfrie nøkkelordet før aliasnavnet som betegner uttrykket, verdien eller feltnavnet, returneres som.
- "` alias_name` " er aliasnavnet som vi ønsker å returnere i vårt resultatsett som feltnavnet.
Ovenstående spørring med et mer meningsfylt kolonnenavn
SELECT Concat(`title`, ' (', `director`, ')') AS 'Concat', `year_released` FROM `movies`;
Vi får følgende resultat
Concat | år utgitt |
---|---|
Pirates of the Caribean 4 (Rob Marshall) | 2011 |
Glemmer Sarah Marshal (Nicholas Stoller) | 2008 |
NULL | 2008 |
Kodenavn svart (Edgar Jimz) | 2010 |
NULL | 2007 |
NULL | 2007 |
NULL | 2007 |
Honey Mooners (John Schultz) | 2005 |
NULL | 2012 |
Få medlemmer som viser fødselsår
Anta at vi ønsker å få en liste over alle medlemmene som viser medlemsnummer, fulle navn og fødselsår, vi kan bruke VENSTRE strengfunksjon for å trekke ut fødselsåret fra fødselsdato-feltet. Skriptet vist nedenfor hjelper oss med å gjøre det.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
HER
- "LEFT ( 'date_of_birth`, 4)" den VENSTRE streng funksjonen aksepterer fødselsdato som den parameter og returnerer bare 4 tegn fra venstre.
- "AS` year_of_birth "" er kolonnealiasnavnet som returneres i resultatene våre. Legg merke til at AS-nøkkelordet er valgfritt , du kan utelate det og spørringen vil fortsatt fungere.
Å utføre spørringen ovenfor i MySQL arbeidsbenk mot myflixdb gir oss resultatene vist nedenfor.
medlemsnummer | fullnavn | fødselsår |
---|---|---|
1 | Janet Jones | 1980 |
2 | Janet Smith Jones | 1980 |
3 | Robert Phil | 1989 |
4 | Gloria Williams | 1984 |
SQL ved hjelp av MySQL Workbench
Vi skal nå bruke MySQL arbeidsbenk til å generere skriptet som vil vise alle feltnavnene fra kategoritabellen.
1. Høyreklikk på Kategoritabellen. Klikk på "Velg rader - Limit 1000"
2. MySQL arbeidsbenk vil automatisk opprette et SQL-spørsmål og lime inn i redigeringsprogrammet.
3. Spørringsresultater vises
Legg merke til at vi ikke skrev SELECT-setningen selv. MySQL arbeidsbenk genererte det for oss.
Hvorfor bruke SELECT SQL-kommandoen når vi har MySQL Workbench?
Nå tenker du kanskje hvorfor lære SQL SELECT-kommandoen å spørre om data fra databasen når du bare kan bruke et verktøy som MySQL arbeidsbenk for å få de samme resultatene uten kunnskap om SQL-språket. Selvfølgelig er det mulig, men å lære å bruke SELECT-kommandoen gir deg mer fleksibilitet og kontroll over SQL SELECT-setningene .
MySQL arbeidsbenk faller i kategorien " Query by Example " QBE-verktøy. Det er ment å bidra til å generere SQL-setninger raskere for å øke brukerens produktivitet.
Å lære SQL SELECT-kommandoen kan gjøre det mulig å opprette komplekse spørsmål som ikke lett kan genereres ved hjelp av Query av eksempelverktøy som MySQL arbeidsbenk.
For å forbedre produktiviteten kan du generere koden ved hjelp av MySQL arbeidsbenk og deretter tilpasse den til dine behov . Dette kan bare skje hvis du forstår hvordan SQL-setningene fungerer!
Sammendrag
- SQL SELECT-nøkkelordet brukes til å spørre om data fra databasen, og det er den mest brukte kommandoen.
- Den enkleste formen har syntaksen "SELECT * FROM tableName;"
- Uttrykk kan også brukes i seleksjonsuttalelsen. Eksempel "VELG antall + pris FRA salg"
- SQL SELECT-kommandoen kan også ha andre valgfrie parametere som WHERE, GROUP BY, HAVING, ORDER BY. De vil bli diskutert senere.
- MySQL arbeidsbenk kan hjelpe deg med å utvikle SQL-setninger, utføre dem og produsere resultatet i samme vindu.