MySQL VÆLG erklæring med eksempler
⚡ Smart opsummering
MySQL SELECT-sætningen henter rækker fra en eller flere tabeller, og alle eksempler nedenfor kører mod myflix-eksempeldatabasen og bevæger sig fra den almindelige stjerneforespørgsel til udtryk, kolonnealiasser og strengfunktioner.

Hvad er en SELECT-forespørgsel i MySQL?
SELECT-forespørgsel bruges til at hente data fra MySQL database. Databaser gemmer data til senere hentning. Formålet med MySQL SELECT returnerer en eller flere rækker fra databasetabellerne, der matcher et givet kriterium. En SELECT-forespørgsel kan bruges i et scriptsprog som PHP eller Ruby, eller du kan udføre den fra kommandoprompten.
Da SELECT er den kommando, du kører oftest, er det en god idé at lære dens syntaks at kende, før du rører ved eksempeldataene.
SQL SELECT-sætningssyntaks
SELECT er den mest anvendte SQL-kommando, og den 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 det SQL-nøgleord, der lader databasen vide, at du vil hente data.
- [SÆRLIGE | ALLE] er valgfrie nøgleord, der finjusterer de resultater, der returneres fra SQL SELECT-sætningen. Hvis intet er angivet, antages ALL at være standardværdien.
- {*| [fieldExpression [AS newName]} Mindst én del skal angives. "*" vælger alle felterne fra det angivne tabelnavn; fieldExpression udfører beregninger på de angivne felter, f.eks. at tilføje tal eller sammenflette to strengfelter til ét.
- FRA TableName er obligatorisk og skal indeholde mindst én tabel. Flere tabeller skal adskilles med kommaer eller sammenføjes med nøgleordet JOIN.
- HVOR Betingelsen er valgfri. Den angiver kriterier i det resultatsæt, der returneres fra forespørgslen.
- GROUP BY bruges til at sammensætte poster, der har de samme feltværdier.
- SOM Betingelsen bruges til at angive kriterier, når man arbejder med GROUP BY-nøgleordet.
- BESTIL BY bruges til at angive sorteringsrækkefølgen for resultatsættet.
*
Stjernesymbolet markerer alle kolonnerne i en tabel. En simpel SELECT-sætning ser ud som den, der er vist nedenfor.
SELECT * FROM `members`;
Ovenstående sætning vælger alle felterne fra medlemstabellen. Semikolon er en sætningsafslutning. Det er ikke obligatorisk, men at afslutte dine sætninger på denne måde betragtes som god praksis.
VÆLG DISTINCT og LIMIT i MySQL
To valgfrie nøgleord i syntaksen fortjener et nærmere kig, fordi begyndere støder på dem, så snart en tabel vokser.
DISTINCT fjerner dubletterækker fra resultatsættet. Filmtabellen gemmer flere film udgivet i 2007, så en almindelig forespørgsel gentages det år. DISTINCT returnerer hver værdi én gang.
SELECT DISTINCT `year_released` FROM `movies`;
GRÆNSE sætter en grænse for antallet af returnerede rækker, hvilket beskytter klienten mod en forespørgsel, der ellers ville trække millioner af poster.
SELECT * FROM `movies` LIMIT 5;
| Søgeord | Hvad gør den | Hvornår skal du bruge det? |
|---|---|---|
| ALLE (standard) | Returnerer alle matchende rækker, inklusive dubletter | Optælling eller oplistning af rå poster |
| DISTINCT | Skjuler dublerede rækker til én | Opbygning af en liste over unikke værdier |
| GRÆNSE | Returnerer kun de første N rækker | Forhåndsvisning af data eller sidevisningsresultater |
Når syntaksen er på plads, bringer eksempeldatabasen disse klausuler til live.
Praktiske eksempler på SELECT-sætninger
Klik for at downloade myflix-databasen, der bruges til de praktiske eksempler.
Du kan lære, hvordan du importerer .sql-filen til MySQL Workbench.
Eksemplerne er udført på de følgende to tabeller.
Tabel 1: medlemmer bord
| medlemsnummer | fulde_navne | køn | fødselsdato | fysisk adresse | postadresse | kontakt_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Kvinde | 21-07-1980 | First Street Plot nr. 4 | Privat taske | +0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Kvinde | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mand | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Kvinde | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Tabel 2: film bord
| film_id | titel | direktør | år_udgivet | kategori_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Glemte Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Navn Sort | Edgar Jimz | 2010 | NULL |
| 5 | Daddy's Little Girls | NULL | 2007 | 8 |
| 6 | Engle og dæmoner | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67 % skyldig | NULL | 2012 | NULL |
Hentning af medlemsfortegnelse
Antag, at vi ønsker en liste over alle registrerede biblioteksmedlemmer fra vores database. Vi ville bruge scriptet vist nedenfor til at gøre det.
SELECT * FROM `members`;
Udførelse af scriptet i MySQL Workbench producerer følgende resultater.
| medlemsnummer | fulde_navne | køn | fødselsdato | fysisk adresse | postadresse | kontakt_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Kvinde | 21-07-1980 | First Street Plot nr. 4 | Privat taske | +0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Kvinde | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mand | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Kvinde | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Forespørgslen returnerede alle rækker og kolonner fra medlemstabellen.
Valg af specifikke kolonner
Lad os sige, at vi kun er interesserede i felterne for fulde_navne, køn, fysisk_adresse og e-mail. Følgende script opnår dette.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Udførelse af scriptet i MySQL Workbench producerer følgende resultater.
| fulde_navne | køn | fysisk adresse | |
|---|---|---|---|
| Janet Jones | Kvinde | First Street Plot nr. 4 | janetjones@yagoo.cm |
| Janet Smith Jones | Kvinde | Melrose 123 | jj@fstreet.com |
| Robert Phil | Mand | 3rd Street 34 | rm@tstreet.com |
| Gloria Williams | Kvinde | 2nd Street 23 | NULL |
Hent filmlister med udtryk
Udtryk kan også bruges i SELECT-sætninger. Lad os sige, at vi ønsker en liste over film med titlen og instruktørens navn i ét felt, instruktøren i parentes, plus det år, filmen blev udgivet. Følgende script gør det.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
HER
- Konkaten() MySQL Funktionen forbinder kolonneværdier.
- Linjen “Concat(`title`, ' (', `director`, ')')” henter titlen, tilføjer en indledende parentes efterfulgt af instruktørens navn og tilføjer derefter den afsluttende parentes.
- Strengdele adskilles med kommaer i Concat()-funktionen.
Udførelse af scriptet i MySQL Workbench producerer følgende resultatsæt.
| Concat(`title`, '(', `instruktør`, ')') | år_udgivet |
|---|---|
| Pirates of the Caribean 4 (Rob Marshall) | 2011 |
| At glemme Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Navn Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey moonere (John Schultz) | 2005 |
| NULL | 2012 |
Bemærk: Concat() returnerer NULL, når et argument er NULL, hvilket er grunden til, at film uden instruktør viser NULL ovenfor.
Aliasfeltnavne
Ovenstående eksempel returnerede sammenkædningskoden som feltnavn. For at bruge et mere beskrivende feltnavn i resultatsættet skal du anvende et kolonnealias. Den grundlæggende syntaks følger.
SELECT `column_name|value|expression` [AS] `alias_name`;
HER
- "VÆLG `kolonnenavn|værdi|udtryk`" er den almindelige SELECT-sætning, som kan være et kolonnenavn, en værdi eller et udtryk.
- "[SOM]" er det valgfrie nøgleord før aliasnavnet.
- "`alias_navn`" er det alias, der returneres i resultatsættet som feltnavn.
Den samme forespørgsel med et mere meningsfuldt kolonnenavn:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
Vi får følgende resultat.
| Concat | år_udgivet |
|---|---|
| Pirates of the Caribean 4 (Rob Marshall) | 2011 |
| At glemme Sarah Marshal (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Navn Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey moonere (John Schultz) | 2005 |
| NULL | 2012 |
Hent medlemsliste med fødselsår
Antag, at vi ønsker en liste over alle medlemmer med medlemsnummer, fulde navne og fødselsår. Vi kan bruge strengfunktionen VENSTRE til f.eks.tracfødselsåret fra feltet fødselsdato.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
HER
- "LEFT(`fødselsdato`,4)" og VENSTRE streng funktion accepterer fødselsdatoen som parameter og returnerer kun 4 tegn fra venstre.
- "SOM `fødselsår`" er kolonne alias navn returneret i vores resultater. Den AS nøgleord er valgfrit; du kan udelade det, og forespørgslen virker stadig.
Udførelse af forespørgslen i MySQL Workbench mod myflixdb giver os resultaterne vist nedenfor.
| medlemsnummer | fulde_navne | fødsels år |
|---|---|---|
| 1 | Janet Jones | 1980 |
| 2 | Janet Smith Jones | 1980 |
| 3 | Robert Phil | 1989 |
| 4 | Gloria Williams | 1984 |
Håndskrevne forespørgsler er kun én vej til et resultatsæt. Workbench kan også opbygge sætningen for dig.
SQL Brug MySQL Workbench
Vi skal nu bruge MySQL Arbejdsbænk til at generere scriptet, der viser alle feltnavnene fra vores kategoritabel.
1. Højreklik på tabellen Kategorier. Klik på “Vælg rækker – Begræns 1000”.
2. MySQL Workbench opretter automatisk en SQL-forespørgsel og indsætter den i editoren.
3. Forespørgselsresultaterne vises i gitteret under editoren.
Som skærmbilledet viser, skrev vi ikke SELECT-sætningen selv. MySQL Workbench genererede det for os.
Hvorfor bruge SELECT SQL-kommandoen, når vi har MySQL Arbejdsbord?
Du undrer dig måske over, hvorfor du skal lære SQL SELECT-kommandoen, når et værktøj som f.eks. MySQL Workbench returnerer de samme resultater uden kendskab til SQL-sproget. Den genvej er mulig, men at lære SELECT-kommandoen giver dig mere fleksibilitet og kontrol over din SQL SELECT-sætninger.
MySQL Arbejdsbænken falder ind under kategorien "Forespørgsel efter eksempel"(QBE) værktøjer. Det er beregnet til at generere SQL-sætninger hurtigere og øge brugerproduktiviteten.
Ved at lære SQL SELECT-kommandoen kan du oprette komplekse forespørgsler som ikke nemt kan genereres af Query by Example-værktøjer som f.eks. MySQL Arbejdsbænk.
For at forbedre produktiviteten kan du generere koden i MySQL Workbench, derefter tilpasse det til opfylde dine kravDet er kun muligt, når du forstår, hvordan SQL-sætningerne fungerer.



