13 viktigste SQL -kommandoer enhver programmerer burde vite

13 viktigste SQL -kommandoer enhver programmerer burde vite

Databaser driver det moderne nettet. Hvert stort eller dynamisk nettsted bruker en database på en eller annen måte, og når det kombineres med Structured Query Language (SQL) , mulighetene for å manipulere data er virkelig uendelige. Hvis du allerede kjenner SQL, må du kontrollere disse programmeringskunnskapene alle nettstedutviklere burde vite.





I dag skal jeg vise deg noen av de kjerne -SQL -kommandoer du trenger å vite som programmerer.





Det er mange navn på data som returneres fra en databasetabell. Data blir ofte referert til som Rader , Rekorder , eller Tupler . Jeg kommer til å bruke disse begrepene om hverandre gjennom denne artikkelen.





Forord

Alle eksemplene i dag vil være basert på fire skjønnlitterære tabeller. De kunde tabellen inneholder navn og alder på kundene:

De høyder tabellen inneholder navn og høyde på enhver person:



De personale tabellen inneholder navn og alder på medarbeiderne - nøyaktig det samme som kundetabellen:

Det siste bordet ble kalt mennesker inneholder navn og alder på mennesker, akkurat som kunde- og personalbordene:





1. Velg

De plukke ut setningen er den enkleste, og det er viktig at du forstår det, ettersom det underbygger nesten alle de andre kommandoene. Det regnes som en god praksis å skrive de reserverte SQL -ordene i store bokstaver, da det gjør kommandoen lettere å lese og forstå.

Som navnet tilsier, er select vant til plukke ut data fra en database. Her er den enkleste bruken:





SELECT * FROM table;

Det er to deler til dette. Den første delen ( PLUKKE UT * ) angir hvilke kolonner du vil velge. Stjernen indikerer at du ønsker å velge alle kolonnene i tabellen. Den andre delen ( FRA bordet ) forteller databasemotoren hvor du vil hente disse dataene fra. Erstatt 'tabell' med navnet på databasetabellen.

Dette valget er kjent som 'velg stjerne'. Å bruke stjernen er en god måte å finne ut hvilke data som er i en tabell, men jeg anbefaler ikke at du bruker den til noen produksjonskode. Når du bruker en valgt stjerne, er det opp til databasemotoren å presentere deg dataene du vil ha. Du har ingen kontroll over rekkefølgen dataene returneres, så hvis noen legger til en ny kolonne i tabellen, kan det hende at variablene i programmeringsspråket ikke lenger representerer de riktige dataene. Heldigvis finnes det en løsning.

Du kan eksplisitt angi hvilke kolonner du vil hente, slik:

SELECT age, name FROM people;

Denne spørringen henter kolonnene 'alder' og 'navn' fra tabellen 'folk'. Å være så eksplisitt kan være litt kjedelig hvis du har mye data, men det vil redusere problemer i fremtiden, sammen med å gjøre din SQL lettere å forstå av alle fremtidige programmerere.

Hvis du vil velge et ekstra stykke data, men det ikke er lagret i noen av tabellene dine, kan du gjøre det slik:

SELECT age, '1234' FROM people;

Enhver streng inne i enkelt anførselstegn blir returnert i stedet for å matche et kolonnenavn.

2. Hvor

Velg -kommandoen er utmerket for å hente data, men hva om du ville filtrere resultatene litt mer? Hva med å hente bare folk som har blå øyne? Hva med folk født i januar som jobber som mekanikere? Det er her hvor kommandoen kommer inn. Dette lar deg anvende betingelser for utvalgte, og du legger den bare til slutten av setningen:

SELECT age, name FROM people WHERE age > 10;

Denne forespørselen er nå begrenset til personer som er eldre enn 10 år. Du kan kombinere flere forhold ved å bruke OG operatør:

SELECT age, name FROM people WHERE age > 10 AND age <20;

De OG kommandoen fungerer akkurat som den gjør på det engelske språket: den gjelder en annen betingelse for setningen. I dette eksemplet vil dataene som returneres være alle poster med en alder mellom 10 og 20. Siden det ikke er noen matchende resultater, blir ingen data returnert.

Hvordan laste ned musikk fra ipod til itunes

En annen kommando som kan brukes i forbindelse med dette er ELLER . Her er et eksempel:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

Denne spørringen returnerer poster der alderen er over 10 år, eller navnet er lik 'Joe'. Legg merke til hvordan det bare er ett likhetstegn? De fleste programmeringsspråk bruker dobbel likhet (==) for å se etter ekvivalens. Dette er ikke nødvendig for de aller fleste databasemotorer (men det kan veldig per miljø, så dobbeltsjekk først).

3. Bestill

De rekkefølge kommandoen brukes til å sortere resultatene som returneres. Det er en annen enkel å bruke. Bare legg den til slutten av uttalelsen din:

SELECT name, age FROM people ORDER BY age DESC;

Du må spesifisere kolonnen og rekkefølgen, som kan være ASC for stigende eller DESC for synkende. Du kan bestille flere kolonner slik:

SELECT name, age FROM people ORDER BY name ASC, age DESC

REKKEFØLGE ETTER er kanskje den mest nyttige når den kombineres med andre kommandoer. Ikke alle forespørsler returnerer data på en logisk eller ordnet måte - denne kommandoen lar deg endre det.

4. Bli med

De bli med kommandoen er vant til bli med relaterte data lagret i en eller flere tabeller. Du bli med den andre tabellen til den første tabellen, og spesifiser hvordan dataene er koblet sammen. Her er et grunnleggende eksempel:

beste videoredigerer for android 2016
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Det er noen ting som skjer her. Du må starte med 'VENSTRE JOIN' -syntaksen, som angir at du vil bli med i en tabell ved å bruke en sammenføyning av typen venstre. Angi deretter tabellen du ønsker å bli med på (høyder). De BRUK (navn) syntaks sier at kolonnen 'navn' finnes i begge tabellene, og at denne skal brukes som en nøkkel for å koble bordene sammen.

Ikke bekymre deg hvis kolonnene dine har forskjellige navn i hver tabell. Du kan bruke 'PÅ' i stedet for 'BRUK':

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

På -setningen angir eksplisitt hvilke kolonner som skal tastes inn. Det er mange typer delta, og det vil ta lang tid å gå inn på detaljer for hver enkelt, så her er en rask oppsummering av bruken av dem:

  • (INNE) BLI MED - Returnerer rader med en treff i begge tabellene.
  • VENSTRE (YTRE) BLI MED - Returnerer alle radene fra tabellen til venstre, med alle treff fra den høyre tabellen. Hvis det ikke er noen treff, returneres fortsatt tabellpostene til venstre.
  • HØYRE (YTRE) BLI MED - Dette er det motsatte av en venstre sammenføyning: alle radene fra den høyre tabellen returneres, sammen med eventuelle treff i den venstre tabellen.
  • HELE (YTRE) BLI MED - Returnerer alle poster med en kamp i begge tabellene.

Syntaksen 'INNER' eller 'YTRE' er valgfri. Det kan gjøre ting lettere å forstå, men du trenger ikke å spesifisere det for det store flertallet av tiden.

5. Alias

Nå vet du det grunnleggende, la oss se på alias kommando. Dette brukes til midlertidig å gi nytt navn til en tabell - mer et kallenavn enn noe annet, ettersom dette nye navnet bare eksisterer inne i den enkelte transaksjonen du kjører. Slik bruker du det:

SELECT A.age FROM people A;

Du kan bruke et hvilket som helst gyldig navn du liker, men jeg liker å bruke bokstaver i alfabetet. Før hvert kolonnenavn har aliaset et prefiks. Dette aliaset tildeles tabellen umiddelbart etter at det er deklarert. Dette er akkurat det samme som å gjøre dette:

SELECT people.age FROM people;

I stedet for å måtte skrive inn et langt bordnavn, kan du skrive en enkel og lett å huske bokstav - men hva er poenget? Vel, hvis du velger fra mer enn én tabell, er det lett å bli forvirret om hvilke kolonner som tilhører hvilken tabell. Hvis begge tabellene dine tilfeldigvis har kolonner med samme navn, kan databasespørringen til og med mislykkes i å kjøre uten eksplisitt referanse til tabellnavnet eller aliaset. Her er et eksempel med to tabeller:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

Og her er den samme spørringen med aliaser:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

Personaletabellen er gitt aliaset 'A', og kundetabellen er aliaset 'B'. Aliasing -tabeller hjelper virkelig med å gjøre koden lettere å forstå, og reduserer mengden skriving du må gjøre.

Du kan også gi nytt navn til en kolonne med et alias ved å bruke kommandoen 'AS':

SELECT age AS person_age FROM people;

Når denne spørringen kjøres, blir kolonnen nå kalt 'person_age' i stedet for 'alder'.

6. Forening

Union er en flott kommando. Den lar deg legge rader til hverandre. I motsetning til sammenføyninger som tilføyer matchende kolonner, kan union føye til ikke -relaterte rader, forutsatt at de har samme antall og navn på kolonner. Slik bruker du det:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

Du kan tenke på union som en måte å kombinere resultatene av to spørringer. En fagforening vil bare returnere resultater der det er en unik rad mellom de to spørringene. Du kan bruke syntaksen 'UNION ALL' til å returnere alle dataene, uavhengig av duplikater:

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

Legg merke til hvordan rekkefølgen på radene endres? Union opererer på den mest effektive måten, så de returnerte dataene kan variere i rekkefølge.

En mulig brukstilfelle for union er en delsumma: du kan knytte en forespørsel om summen til en forespørsel om de enkelte totalene for et bestemt scenario.

7. Sett inn

Du vet nå alt om å hente data fra en database, men hva med å sette det inn? Det er her sett inn kommandoen kommer inn. Her er et eksempel:

INSERT INTO people(name, age) VALUES('Joe', 102);

Du må spesifisere tabellnavnet (personer) og kolonnene du ønsker å bruke (navn og alder). Syntaksen 'VERDIER' brukes deretter til å angi verdiene som skal settes inn. Disse må være i samme rekkefølge som kolonnene som tidligere ble spesifisert.

Du kan ikke angi en hvor -klausul for innlegg, og du må sørge for at du følger alle nødvendige tabellbegrensninger.

8. Oppdater

Etter å ha satt inn noen data, er det helt naturlig å måtte endre bestemte rader. Her er Oppdater kommandosyntaks:

UPDATE people SET name = 'Joe', age = 101;

Du må spesifisere tabellen du vil endre, og deretter bruke 'SET' -syntaksen til å spesifisere kolonnene og deres nye verdier. Dette eksemplet er bra, men det vil oppdatere hver eneste plate - noe som ikke alltid er ønskelig!

For å være mer spesifikk, kan du bruke 'WHERE' klausuler akkurat som når du velger:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Du kan til og med angi flere forhold ved å bruke 'AND' og 'OR':

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

Legg merke til hvordan brakettene brukes til å begrense forholdene.

hvordan få en rekke tilbake på snapchat

9. Upsert

Upsert er et merkelig lydende ord, men det er en utrolig nyttig kommando. Si at du har en begrensning på bordet, og du har spesifisert at du bare vil ha poster med unike navn - du vil for eksempel ikke lagre to rader med samme navn. Hvis du prøvde å sette inn flere verdier for 'Joe', ville databasemotoren din feile en feil og nekte å gjøre det (helt riktig). En UPSERT lar deg oppdatere en post hvis den allerede finnes. Dette er utrolig nyttig! Uten denne kommandoen måtte du skrive mye logikk for først å kontrollere om det finnes en post, sett inn hvis den ikke gjør det, ellers hent den riktige primærnøkkelen og oppdater deretter.

Dessverre er upserts implementert annerledes i forskjellige databasemotorer. PostgreSQL har først nylig fått denne evnen, mens MySQL har hatt det en god stund. Her er MySQL -syntaksen for referanse:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Legg merke til hvordan dette egentlig er en oppdatering og en innsatserklæring, som kan oppsummeres som 'oppdatering hvis innsatsen mislyktes.'

10. Slett

Slett brukes til å fjerne poster helt - det kan være ganske skadelig hvis det misbrukes! Den grunnleggende syntaksen er veldig enkel å bruke:

DELETE FROM people;

Som de fleste andre kommandoer, slettes dette alt ! Du må bruke et sted for å begrense det til et litt mer fornuftig antall rader - helst en:

DELETE FROM people WHERE name = 'Joe';

Hvis du utvikler et system, er det ofte lurt å implementere en 'myk sletting'. Du kjører faktisk aldri slettekommandoen, snarere oppretter du en slettet kolonne, og deretter sjekker du den kolonnen i valgene dine - det kan unngå mye potensiell forlegenhet hvis du raskt og enkelt kan hente antatt slettede poster. Dette er imidlertid ingen erstatning for riktige sikkerhetskopier.

11. Lag tabell

De lage bord kommandoen brukes til å lage tabeller. Det er en annen veldig enkel:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

Legg merke til hvordan kolonnenavn og begrensninger er innenfor parentes, og kolonnene får en passende datatype. En primærnøkkel er spesifisert, slik det er nødvendig for enhver god databasedesign.

12. Endre tabell

De endre bord kommando brukes til å endre strukturen i en tabell. Dette er litt begrenset, da databasen din ikke lar deg endre en tabell hvis eksisterende data ville forårsake en konflikt - for eksempel å endre en streng til et heltall. I slike tilfeller må du først fikse dataene og deretter endre tabellen. Her er et eksempel:

ALTER TABLE people ADD height integer;

Dette eksemplet legger til en kolonne som heter 'høyde' av typen heltall til personbordet. Det er egentlig ingen grense for hva du kan endre.

13. Slippbord

Den siste kommandoen er slipp bord . Tenk på dette som sletting, men i stedet for å slette en enkelt post, fjerner den hver eneste post sammen med tabellen! Slik bruker du det:

DROP TABLE people;

Det er en ganske drastisk kommando, og det er ingen grunn til at det må programmeres inn i systemet ditt. Det bør bare utføres manuelt i de aller fleste tilfeller, og det kan det være veldig ødeleggende.

Det var alt for i dag. Jeg håper du har lært noen nyttige triks! Du kan lære å gjøre det lage et nettsted , og bruk deretter dine nyvunne ferdigheter for å gjøre det dynamisk - bare pass på at du ikke gjør disse feilene eller lar det være sårbart for SQL -injeksjon. Hvis du ikke er sikker på at du trenger å lære SQL, har du vurdert en statisk nettstedgenerator?

Hvorfor ikke legge igjen en kommentar nedenfor med dine favoritt -tips og -triks?

Bildekreditter: HYS_NP/Shutterstock

Dele Dele kvitring E -post Er det verdt å oppgradere til Windows 11?

Windows har blitt redesignet. Men er det nok til å overbevise deg om å bytte fra Windows 10 til Windows 11?

Les neste
Relaterte temaer
  • Programmering
  • Programmering
  • SQL
Om forfatteren Joe Coburn(136 artikler publisert)

Joe er utdannet innen informatikk fra University of Lincoln, Storbritannia. Han er en profesjonell programvareutvikler, og når han ikke flyr droner eller skriver musikk, kan han ofte bli funnet å ta bilder eller produsere videoer.

Mer fra Joe Coburn

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere