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.

  • 🔎 Kerneformål: SELECT henter gemte rækker, der matcher et kriterium, fra kommandoprompten eller fra PHP, Pythonog andre sprog.
  • 🧩 Syntaksrækkefølge: SELECT, FROM, WHERE, GROUP BY, HAVING og ORDER BY skal vises i den faste rækkefølge.
  • Stjernegenvej: SELECT * FROM `medlemmer`; returnerer hver kolonne, mens eksplicit navngivning af kolonner holder resultatsættene mindre og hurtigere.
  • 🔗 Udtryk: Concat() forbinder kolonneværdier, og LEFT() fjerner tegn, så beregnede felter vises direkte i resultatsættet.
  • 🏷️ Kolonnealiaser: Det valgfrie AS-nøgleord omdøber ethvert udtryk og erstatter ulæselige overskrifter som f.eks. Concat(`title`) med tydelige etiketter.
  • 🖱️ Sammenligning af arbejdsbænk: MySQL Workbench genererer forespørgsler visuelt, men håndskrevne SELECT-sætninger er stadig nødvendige for kompleks og præcis hentning.

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.

VÆLG forespørgsel i MySQL

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

SQL ved hjælp af MySQL Workbench

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.

Forståelse af MySQL SELECT erklæring

Ofte Stillede Spørgsmål

Normalt ja. SELECT * læser alle kolonner, inklusive store tekstfelter og blobfelter, som du muligvis ikke har brug for, og det blokerer for at dække indekser. Navngivning af kolonnerne holder resultatsættet mindre og forespørgslen hurtigere.

Nøgleord som SELECT og FROM skelner ikke mellem store og små bogstaver. Strengsammenligninger følger sorteringen af ​​kolonnen, så en sortering uden forskel på store og små bogstaver, som f.eks. utf8mb4_0900_ai_ci, behandler "Janet" og "janet" som ligeværdige.

Et manglende indeks er den sædvanlige årsag. Kør EXPLAIN før forespørgslen for at se om MySQL udfører en fuld tabelscanning, indekserer derefter de filtrerede eller sammenføjede kolonner og returnerer kun de rækker, du har brug for.

Ja. Tekst-til-SQL-assistenter konverterer en almindelig anmodning til en SELECT-sætning, når de kender dit skema. RevSe de genererede joins og filtre, fordi en AI-model kan opfinde kolonnenavne, der ikke findes.

Nej. AI udarbejder en forespørgsel hurtigt, men du verificerer stadig logikken, joinforbindelserne og ydeevnen i MySQL WorkbenchAt kende SELECT er det, der giver dig mulighed for at spotte et forkert resultat, før det når produktionsstart.

Opsummer dette indlæg med: