13 Vigtigste SQL-kommandoer Enhver programmerer skal vide

  • Mark Lucas
  • 0
  • 2681
  • 117
Reklame

Databaser driver det moderne web. Hvert stort eller dynamisk websted bruger en database på en eller anden måde og når den kombineres med Structured Query Language (SQL), mulighederne for at manipulere data er virkelig uendelige. Hvis du allerede kender SQL, skal du sørge for at tjekke disse programmeringsevner 7 Programmeringsevner Alle webstedsudviklere skal vide 7 Programmeringsevner Alle webstedsudviklere skal vide Webstedsdesign og -udvikling tilbyder god løn og fordele, anstændig arbejdstid og udsigten til at blive fremskreden. Vi viser dig, hvilke essentielle færdigheder du kan begynde at lære nu for at komme ind i dette spændende felt. alle webstedsudviklere skal vide det.

I dag viser jeg dig nogle af de kernekommandoer, du har brug for at kende som programmerer.

Der er mange navne på data, der returneres fra en databasetabel. Data kaldes almindeligvis rækker, Records, eller tupler. Jeg bruger disse udtryk om hverandre på tværs af denne artikel.

Forord

Alle eksemplerne i dag vil være baseret på fire fiktive tabeller. Det kunde tabel indeholder kundens navn og alder:

Det højder tabel indeholder navn og højde på enhver person:

Det personale tabel indeholder navn og alder på medarbejderne - nøjagtigt det samme som kundetabellen:

Den endelige tabel kaldes mennesker indeholder navn og alder på mennesker, ligesom kunde- og personaletabellerne:

1. Vælg

Det Vælg udsagn er den enkleste, og det er vigtigt, at du forstår det, da det understøtter næsten alle de andre kommandoer. Det betragtes som en bedste praksis for at skrive dine reserverede SQL-ord med store bogstaver, da det gør kommandoen lettere at læse og forstå.

Som navnet antyder, er select vant til Vælg data fra en database. Her er den enkleste anvendelse:

VÆLG * FRA tabel;

Der er to dele til dette. Den første del (VÆLG *) angiver, hvilke kolonner du vil vælge. Stjernen angiver, at du ønsker at vælge alle kolonner i tabellen. Den anden del (FRA bordet) fortæller din databasemotor, hvor du vil hente disse data fra. Erstatte “bord” med navnet på din databasetabel.

Dette valg kaldes “vælg stjerne.” Brug af stjerne er en god måde at finde ud af, hvilke data der findes i en tabel, men jeg anbefaler ikke, at du bruger dem til nogen produktionskode. Når du bruger en udvalgt stjerne, er det op til databasemotoren at præsentere dig de ønskede data. Du har ikke kontrol over den rækkefølge, dataene returneres, så hvis nogen tilføjer en ny kolonne til tabellen, kan du muligvis finde dine variabler på dit programmeringssprog ikke længere repræsentere de korrekte data. Heldigvis er der en løsning.

Du kan eksplicit angive, hvilke kolonner du gerne vil hente som sådan:

VÆLG alder, navn FRA folk;

Denne forespørgsel henter “alder” og “navn” kolonner fra “mennesker” bord. At være eksplicit kan være lidt kedelig, hvis du har en masse data, men at gøre det vil reducere problemer i fremtiden sammen med at gøre din SQL lettere at forstå af fremtidige programmerere.

Hvis du vil vælge et ekstra stykke data, men det ikke er gemt i nogen af ​​dine tabeller, kan du gøre det sådan:

VÆLG alder, '1234' FRA mennesker;

Enhver streng inden i enkeltcitater returneres i stedet for at matche et kolonnenavn.

2. Hvor

Select-kommandoen er fremragende til at hente data, men hvad nu hvis du ville filtrere resultaterne lidt mere? Hvad med kun at hente mennesker, der har blå øjne? Hvad med mennesker født i januar og arbejder som mekanik? Det er her, hvor kommando kommer ind. Dette giver dig mulighed for at anvende betingelser for markøren, og du tilføjer den blot til slutningen af ​​sætningen:

VÆLG alder, navn FRA personer HVOR alder> 10;

Denne forespørgsel er nu begrænset til personer, der er ældre end 10 år gamle. Du kan kombinere flere betingelser vha OG operatør:

VÆLG alder, navn FRA personer, HVOR alder> 10 OG alder < 20;

Det OG kommandoen fungerer nøjagtigt som på det engelske sprog: den anvender en anden betingelse for udsagnet. I dette eksempel vil de returnerede data være alle poster med en alder mellem 10 og 20. Da der ikke er matchende resultater, returneres ingen data.

En anden kommando, der kan bruges i forbindelse med dette, er ELLER. Her er et eksempel:

VÆLG alder, navn FRA personer HVOR alder> 10 ELLER navn = 'Joe';

Denne forespørgsel returnerer poster, hvor alderen er mere end 10, eller navnet er lig med “Joe”. Læg mærke til, hvordan der kun er et lige tegn? De fleste programmeringssprog bruger dobbelt lig (==) til at kontrollere for ækvivalens. Dette er ikke nødvendigt for langt de fleste databasemotorer (men det kan meget pr. Miljø, så dobbeltkontrol først).

3. Bestil

Det bestille kommando bruges til at sortere de returnerede resultater. Det er en anden nem at bruge. Vedhæft det blot til slutningen af ​​din erklæring:

VÆLG navn, alder FRA personer BESTILLING AF ALDERBESKRIVNING;

Du skal specificere kolonnen og den rækkefølge, der kan være ASC til stigende eller DESC til faldende. Du kan bestille efter flere kolonner som dette:

VÆLG navn, alder FRA personer BESTILLING AF navn ASC, alder DESC

BESTILLING AF er måske det mest nyttige, når det kombineres med andre kommandoer. Ikke alle forespørgsler returnerer data på en logisk eller ordnet måde - med denne kommando kan du ændre det.

4. Deltag

Det tilslutte kommando er vant til tilslutte relaterede data, der er gemt i en eller flere tabeller. Du tilslutte den anden tabel til den første tabel, og angiv, hvordan dataene er forbundet. Her er et grundlæggende eksempel:

VÆLG alder, navn, højde FRA folk VENSTRE JOIN højder BRUG (navn);

Der sker et par ting her. Du skal starte med “VENSTRE Deltag” syntaks, som specificerer, at du vil slutte dig til en tabel ved hjælp af en sammenføjning af venstre type. Dernæst skal du angive den tabel, du vil tilslutte dig (højder). Det BRUGER (navn) syntaks angiver, at kolonnen “navn” findes i begge tabeller, og at dette skal bruges som en nøgle til at sammenføje tabellerne.

Bare rolig, hvis dine kolonner har forskellige navne i hver tabel. Du kan bruge “PÅ” i stedet for “VED BRUG AF”:

VÆLG alder, navn, højde FRA MENNES VENSTRE JOIN højder TIL (namea = nameb);

On-erklæringen angiver eksplicit hvilke kolonner der skal indtastes. Der er mange typer sammenføjning, og det vil tage lang tid at gå ind på detaljer for hver enkelt, så her er en hurtig oversigt over deres anvendelser:

  • (INDRE) BLI MEDLEM - Returnerer rækker med en kamp i begge tabeller.
  • VENSTRE (YDRE) BLI MED - Returnerer alle rækker fra venstre tabel med eventuelle kampe fra højre tabel. Hvis der ikke er nogen kampe, returneres de venstre tabelposter stadig.
  • HØJRE (YDRE) BLI MED - Dette er det modsatte af en venstre sammenføjning: alle rækker fra det højre bord returneres sammen med eventuelle kampe i venstre tabel.
  • FULL (YDRE) BLI MED - Returnerer alle poster med en kamp i begge tabeller.

Det “INDRE” eller “YDRE” syntaks er valgfri. Det kan gøre tingene lettere at forstå, men du behøver ikke at specificere det i det store flertal af tiden.

5. Alias

Nu kender du det grundlæggende, lad os se på alias kommando. Dette bruges til midlertidigt at omdøbe en tabel - mere af et kaldenavn end noget andet, da dette nye navn kun findes i den individuelle transaktion, du kører. Sådan bruger du det:

VÆLG A.GANG FRA mennesker A;

Du kan bruge ethvert gyldigt navn, du kan lide, men jeg kan godt lide at bruge bogstaver i alfabetet. Før hvert kolonnenavn er aliaset præfikseret. Dette alias tildeles tabellen umiddelbart efter, at det er erklæret. Dette er nøjagtigt det samme som at gøre dette:

VÆLG folk.age FRA mennesker;

I stedet for at skulle indtaste et langt bordnavn, kan du skrive et enkelt og let at huske bogstav - men hvad er meningen? Hvis du vælger fra mere end en tabel, er det let at forveksle, hvilke kolonner der hører til hvilken tabel. Hvis begge dine tabeller tilfældigvis har kolonner med samme navn, kan din databaseforespørgsel endda undlade at køre uden eksplicit at henvise til tabelnavnet eller aliaset. Her er et eksempel med to tabeller:

VÆLG personal.age, personale.navn, kunder.age, kunder.navn FRA personale, kunder;

Og her er den samme forespørgsel med aliaser:

VÆLG A.age, A.navn, B.age, B.navn FRA personale A, kunder B;

Personaletabellen får aliaset af “EN”, og kundetabellen får aliaset af “B”. Aliasing-tabeller hjælper virkelig med at gøre din kode lettere at forstå og reducerer mængden af ​​maskinskrivning, du skal gøre.

Du kan også omdøbe en kolonne med et alias ved hjælp af “SOM” kommando:

VÆLG alder som person FRA folk;

Når denne forespørgsel køres, kaldes nu kolonnen “person_age” i stedet for “alder”.

6. Union

Union er en stor kommando. Det giver dig mulighed for at tilføje rækker til hinanden. I modsætning til sammenføjninger, der tilføjer matchende kolonner, kan union tilføje ikke-relaterede rækker, forudsat at de har samme antal og navn på kolonner. Sådan bruger du det:

VÆLG alder, navn FRA kunder UNION VÆLG alder, navn FRA personale;

Du kan tænke på union som en måde at kombinere resultaterne af to forespørgsler på. En fagforening returnerer kun resultater, hvor der er en unik række mellem de to forespørgsler. Du kan bruge “UNION ALLE” syntaks for at returnere alle data, uanset duplikater:

VÆLG alder, navn FRA kunder UNION ALLE VÆLG alder, navn FRA personale;

Bemærk, hvordan rækkefølgen af ​​rækkerne ændres? Union fungerer på den mest effektive måde, så de returnerede data kan variere i rækkefølge.

En mulig brugssag for union er et subtotal: du kan forene en forespørgsel om summen til en forespørgsel om de enkelte totaler for et bestemt scenarie.

7. Indsæt

Du ved nu alt om hentning af data fra en database, men hvad med at indsætte dem? Det er her, indsætte kommando kommer ind. Her er et eksempel:

INDSÆT I Mennesker (navn, alder) VÆRDIER ('Joe', 102);

Du skal angive tabelnavnet (personer) og de kolonner, du vil bruge (navn og alder). Det “VÆRDIER” syntaks bruges derefter til at angive de værdier, der skal indsættes. Disse skal være i samme rækkefølge som de kolonner, der tidligere blev specificeret.

Du kan ikke angive en hvor-klausul for indsatser, og du skal sikre dig, at du følger de nødvendige tabelbegrænsninger, der er til stede.

8. Opdatering

Efter indsættelse af nogle data er det kun naturligt at skulle ændre specifikke rækker. Her er opdatering kommandosyntaks:

UPDATE personer SET name = 'Joe', alder = 101;

Du skal angive den tabel, du vil ændre, og derefter bruge “SÆT” syntaks for at specificere kolonnerne og deres nye værdier. Dette eksempel er godt, men det vil opdatere hver enkelt post - noget, der ikke altid er ønskeligt!

For at være mere specifik kan du bruge “HVOR” klausuler ligesom når du vælger:

UPDATE personer SET name = 'Joe', alder = 101 WHERE name = 'James';

Du kan endda specificere flere betingelser vha “OG” og “ELLER”:

UPDATE personer SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) ELLER name = 'Ryan';

Bemærk, hvordan konsollerne bruges til at begrænse betingelserne.

9. Upsert

Upsert er et underligt klingende ord, men det er en utrolig nyttig kommando. Lad os sige, at du har en begrænsning på dit bord, og du har specificeret, at du kun nogensinde vil have poster med unikke navne - du vil for eksempel ikke gemme to rækker med samme navn. Hvis du prøvede at indsætte flere værdier af 'Joe', ville din databasemotor kaste en fejl og nægte at gøre det (helt rigtigt). En UPSERT giver dig mulighed for at opdatere en post, hvis den allerede findes. Dette er utroligt nyttigt! Uden denne kommando skulle du skrive en masse logik for først at kontrollere, om der findes en post, indsæt hvis den ikke gør det, ellers hente den korrekte primære nøgle og derefter opdatere.

Desværre implementeres opsætninger forskelligt i forskellige databasemotorer. PostgreSQL har først for nylig opnået denne evne, hvorimod MySQL har haft det i ret lang tid. Her er MySQL-syntaks til reference:

INDSÆT I Mennesker (navn, alder) VÆRDIER ('Joe', 101) PÅ DUPLIKAT Nøgleappdatering alder = 101;

Bemærk, hvordan dette hovedsageligt er en opdatering og en indsætningserklæring, som kan opsummeres som “opdater, hvis indsatsen mislykkedes.”

10. Slet

Slet bruges til at fjerne poster helt - det kan være ret ødelæggende, hvis det misbruges! Den grundlæggende syntaks er meget let at bruge:

SLET FRA folk;

Som de fleste andre kommandoer, slettes dette alt! Du skal bruge et sted for at begrænse det til et lidt mere fornuftigt antal rækker - ideelt en:

SLET FRA folk HVOR navn = 'Joe';

Hvis du udvikler et system, er det ofte klogt at implementere en “blød sletning.” Du kører faktisk aldrig slette-kommandoen, snarere opretter du en slettet kolonne, og kontrollerer derefter den kolonne i dine markeringer - den kan undgå en masse potent forlegenhed, hvis du hurtigt og nemt kan hente angiveligt slettede poster. Dette er dog ingen erstatning for ordentlig sikkerhedskopiering.

11. Opret tabel

Det oprette tabel kommando bruges til at oprette tabeller. Det er en anden meget enkel:

Opret TABEL personer (navn TEKST, alder, INTEGER, PRIMÆR Nøgle (navn));

Bemærk, hvordan kolonnenavne og begrænsninger er inden for parenteser, og kolonnerne får en passende datatype. En primær nøgle er specificeret, som det kræves i enhver god databasedesign.

12. Alter Tabel

Det ændre bord kommando bruges til at ændre strukturen i en tabel. Dette er lidt begrænset, da din database ikke lader dig ændre en tabel, hvis de eksisterende data vil forårsage en konflikt - for eksempel at ændre en streng til et heltal. I disse tilfælde skal dataene rettes først, og derefter ændres tabellen. Her er et eksempel:

ALTER TABEL personer TILFØJ Højde heltal;

Dette eksempel tilføjer en kaldet kolonne “højde” af typen heltal til folketabellen. Der er ikke rigtig en grænse for, hvad du kan ændre.

13. Drop Table

Den endelige kommando er drop tabel. Tænk på dette som sletning, men snarere end at slette en enkelt post, fjerner det hver enkelt post sammen med tabellen! Sådan bruger du det:

DROP TABEL personer;

Det er en ganske drastisk kommando, og der er ingen grund til, at det skal programmeres til dit system. Det skal kun udføres manuelt i langt de fleste tilfælde, og det kan være det meget Destruktiv.

Det er alt for i dag. Jeg håber du lærte nogle nyttige tricks! Du kan lære, hvordan man opretter et websted Sådan oprettes et websted: For begyndere Hvordan man laver et websted: For begyndere I dag vil jeg guide dig gennem processen med at oprette et komplet websted fra bunden. Bare rolig, hvis dette lyder svært. Jeg vil guide dig gennem det hvert skridt på vejen. , og brug derefter dine nyfundne evner til at gøre det dynamisk - bare sørg for, at du ikke laver disse fejl. 9 Fejl, du ikke skal foretage, når du bygger en webside. fejl er lette at lave, men hvis du tager dem af tidligere snarere end senere, vil din side se bedre ud, være lettere at vedligeholde og fungere, hvordan du vil have den. eller lad det være sårbart over for SQL-injektion Hvad er en SQL-injektion? [MakeUseOf Explains] Hvad er en SQL-injektion? [MakeUseOf Explains] En verden af ​​internetsikkerhed er plaget med åbne havne, bagdøre, sikkerhedshuller, trojanere, orme, firewall sårbarheder og en række andre problemer, der holder os alle på tæerne hver dag. For private brugere,…. Hvis du ikke er sikker på, at du har brug for at lære SQL, har du overvejet en statisk stedgenerator 7 grunde til at grøfte dit CMS og overveje en statisk stedgenerator 7 grunde til at grøfte dit CMS og overveje en statisk stedgenerator I mange år skal du udgive et websted var svært for mange brugere. CMS'er som WordPress ændrede det, men de kan stadig være forvirrende. Et andet alternativ er en statisk stedgenerator. ?

Hvorfor ikke efterlade en kommentar nedenfor med dine foretrukne SQL-tip og -tricks?

Billedkreditter: HYS_NP / Shutterstock




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.