13 vigtigste SQL -kommandoer, enhver programmerer bør kende

13 vigtigste SQL -kommandoer, enhver programmerer bør kende

Databaser driver det moderne web. Hvert stort eller dynamisk websted bruger en database på en eller anden måde, og når det kombineres med Structured Query Language (SQL) , mulighederne for at manipulere data er virkelig uendelige. Hvis du allerede kender SQL, skal du tjekke disse programmeringsfærdigheder, som alle webstedsudviklere burde kende.





I dag viser jeg dig nogle af de centrale SQL -kommandoer du skal kende som programmerer.





Der er mange navne til data, der returneres fra en databasetabel. Data kaldes almindeligvis som Rækker , Optegnelser , eller Tuples . Jeg vil bruge disse udtryk i flæng i hele denne artikel.





Forord

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

Det højder tabellen indeholder enhver persons navn og højde:



Det personale tabellen indeholder medarbejdernes navn og alder - nøjagtig det samme som kundetabellen:

Det sidste bord kaldes mennesker indeholder navn og alder på mennesker, ligesom tabellerne med kunder og personale:





1. Vælg

Det Vælg erklæring 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 god praksis at skrive dine reserverede SQL -ord i 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 brug:





SELECT * FROM table;

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 markere alle kolonnerne i tabellen. Anden del ( FRA bord ) fortæller din databasemotor, hvor du gerne vil hente disse data fra. Erstat 'tabel' med navnet på din databasetabel.

Denne markering er kendt som 'vælg stjerne'. At bruge stjernen er en god måde at finde ud af, hvilke data der er i en tabel, men jeg anbefaler ikke, at du bruger den til nogen produktionskode. Når du bruger en udvalgt stjerne, er det op til databasemotoren at præsentere dig for de data, du ønsker. Du har ingen kontrol over rækkefølgen, dataene returneres, så hvis nogen tilføjer en ny kolonne til tabellen, kan du finde dine variabler i 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, sådan her:

SELECT age, name FROM people;

Denne forespørgsel henter kolonnerne 'alder' og 'navn' fra tabellen 'mennesker'. At være så eksplicit kan være lidt kedeligt, hvis du har mange data, men det vil reducere problemer i fremtiden sammen med at gøre din SQL lettere at forstå af alle fremtidige programmører.

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:

SELECT age, '1234' FROM people;

Enhver streng inde i enkelte citater 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 at hente kun mennesker, der har blå øjne? Hvad med mennesker født i januar, der arbejder som mekanikere? Det er her hvor kommandoen kommer ind. Dette giver dig mulighed for at anvende betingelser for markeringen, og du tilføjer den blot til slutningen af ​​erklæringen:

SELECT age, name FROM people WHERE age > 10;

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

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

Det OG kommandoen fungerer nøjagtigt som den gør 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 nogen matchende resultater, returneres ingen data.

windows 10 bsod system service undtagelse

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

SELECT age, name FROM people WHERE age > 10 OR name = '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 lighedstegn? De fleste programmeringssprog bruger dobbelte lig (==) til at kontrollere ækvivalens. Dette er ikke nødvendigt for langt de fleste databasemotorer (men det kan meget pr. Miljø, så dobbelttjek først).

3. Ordre

Det bestille kommando bruges til at sortere de returnerede resultater. Det er en anden let at bruge. Tilføj det blot til slutningen af ​​din erklæring:

SELECT name, age FROM people ORDER BY age DESC;

Du skal angive kolonnen og rækkefølgen, som kan være ASC for stigende eller DESC for faldende. Du kan bestille flere kolonner som denne:

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

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

4. Deltag

Det tilslutte kommando bruges til tilslutte relaterede data 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:

min bærbare computer starter ikke bare en sort skærm
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Der sker et par ting her. Du skal starte med 'LEFT JOIN' -syntaksen, som angiver, at du vil slutte dig til en tabel ved hjælp af et join af typen venstre. Angiv derefter den tabel, du ønsker at deltage i (højder). Det BRUG (navn) syntaks angiver, at kolonnen 'navn' kan findes i begge tabeller, og at dette skal bruges som en nøgle til at samle tabellerne.

Bare rolig, hvis dine kolonner har forskellige navne i hver tabel. Du kan bruge 'TIL' i stedet for 'BRUG':

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

On -sætningen angiver eksplicit, hvilke kolonner der skal indtastes. Der er mange typer joinforbindelser, og det ville tage lang tid at gå i detaljer for hver enkelt, så her er et hurtigt resumé af deres anvendelser:

  • (INDVENDIGE) BLI MED - Returnerer rækker med et match i begge tabeller.
  • VENSTRE (YDRE) BLI MED - Returnerer alle rækker fra den venstre tabel, med eventuelle kampe fra den 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 den højre tabel returneres, sammen med eventuelle kampe i den venstre tabel.
  • FULD (YDRE) BLI MED - Returnerer alle poster med et match i begge tabeller.

Syntaksen 'INNER' eller 'YDRE' er valgfri. Det kan gøre tingene lettere at forstå, men du behøver ikke at angive det for langt størstedelen 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 et kaldenavn end noget andet, da dette nye navn kun findes inde i den enkelte transaktion, du kører. Sådan bruger du det:

SELECT A.age FROM people 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æfiks. Dette alias tildeles tabellen umiddelbart efter, at det er deklareret. Dette er nøjagtigt det samme som at gøre dette:

SELECT people.age FROM people;

I stedet for at skulle skrive et langt bordnavn, kan du skrive et enkelt og let at huske bogstav - men hvad er meningen? Godt, hvis du vælger fra mere end en tabel, er det let at blive forvirret om, hvilke kolonner der tilhører hvilken tabel. Hvis begge dine tabeller tilfældigvis har kolonner med samme navn, kan din databaseforespørgsel muligvis ikke køre uden eksplicit at henvise til tabelnavnet 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 forespørgsel med aliasser:

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

Personaletabellen får aliaset 'A', og kundetabellen får aliaset 'B'. Aliasingstabeller hjælper virkelig med at gøre din kode lettere at forstå og reducerer mængden af ​​indtastning.

Du kan også omdøbe en kolonne med et alias ved hjælp af kommandoen 'AS':

SELECT age AS person_age FROM people;

Når denne forespørgsel køres, kaldes kolonnen nu '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 joins, der tilføjer matchende kolonner, kan union tilføje uafhængige rækker, forudsat at de har samme antal og navn på kolonner. Sådan bruger du det:

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

Du kan tænke på forening som en måde at kombinere resultaterne af to forespørgsler. En fagforening vil kun returnere resultater, hvor der er en unik række mellem de to forespørgsler. Du kan bruge syntesen 'UNION ALL' til at returnere alle data, uanset dubletter:

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

Læg mærke til 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 brugstilfælde for forening er en subtotal: du kan knytte en forespørgsel på summen til en forespørgsel af de enkelte totaler for et bestemt scenario.

7. Indsæt

Du ved nu alt om at hente data fra en database, men hvad med at indsætte det? Det er her indsæt kommandoen kommer ind. Her er et eksempel:

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

Du skal angive bordnavnet (personer) og de kolonner, du ønsker at bruge (navn og alder). 'VALUES' syntaksen 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 angivet.

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

8. Opdater

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

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

Du skal angive den tabel, du ønsker at ændre, og derefter bruge 'SET' syntaksen til at angive kolonnerne og deres nye værdier. Dette eksempel er godt, men det vil opdatere hver enkelt rekord - noget der ikke altid er ønskeligt!

For at være mere specifik kan du bruge 'WHERE' klausuler ligesom når du vælger:

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

Du kan endda angive flere betingelser ved hjælp af 'AND' og 'OR':

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

Bemærk, hvordan beslagene bruges til at begrænse forholdene.

ekstern harddisk vises ikke i windows 10

9. Oprettet

Ups er et mærkeligt klingende ord, men det er en utrolig nyttig kommando. Sig, at du har en begrænsning på dit bord, og du har angivet, at du kun nogensinde vil have poster med unikke navne - du vil f.eks. Ikke gemme to rækker med samme navn. Hvis du forsøgte at indsætte flere værdier af 'Joe', ville din databasemotor smide en fejl og nægte at gøre det (ganske rigtigt). En UPSERT giver dig mulighed for at opdatere en registrering, hvis den allerede findes. Dette er utrolig 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 hent den korrekte primære nøgle og opdater derefter.

Desværre implementeres upserts forskelligt i forskellige databasemotorer. PostgreSQL har først for nylig fået denne evne, hvorimod MySQL har haft det i et stykke tid. Her er MySQL -syntaksen til reference:

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

Bemærk, hvordan dette i det væsentlige er en opdatering og en indsættelseserklæring, som kan opsummeres som 'opdatering, hvis indsætningen mislykkedes'.

10. Slet

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

DELETE FROM people;

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

DELETE FROM people WHERE name = 'Joe';

Hvis du udvikler et system, er det ofte klogt at implementere en 'soft delete'. Du kører faktisk aldrig slettekommandoen, du opretter snarere en slettet kolonne og kontrollerer derefter den kolonne i dine markeringer - det kan undgå en masse potentiel forlegenhed, hvis du hurtigt og nemt kan hente formodede slettede poster. Dette er imidlertid ikke en erstatning for ordentlig sikkerhedskopiering.

11. Opret tabel

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

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

Bemærk, hvordan kolonnens navne og begrænsninger er inden for parenteser, og kolonnerne får en passende datatype. En primær nøgle er angivet, som det kræves i ethvert godt databasedesign.

12. Ændre tabel

Det ændre bord kommando bruges til at ændre strukturen i en tabel. Dette er lidt begrænset, da din database ikke tillader dig at ændre en tabel, hvis de eksisterende data ville forårsage en konflikt - f.eks. Ændre en streng til et helt tal. I disse tilfælde skal du først rette dataene og derefter ændre tabellen. Her er et eksempel:

ALTER TABLE people ADD height integer;

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

13. Drop Table

Den sidste kommando er tab bord . Tænk på dette som slet, men i stedet for at slette en enkelt post, fjerner det hver eneste post sammen med tabellen! Sådan bruger du det:

DROP TABLE people;

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

Det er alt for i dag. Jeg håber du har lært nogle nyttige tricks! Du kunne lære at gøre det lave et websted , og brug derefter dine nyfundne færdigheder til at gøre det dynamisk - bare sørg for, at du ikke laver disse fejl eller lader det være sårbart over for SQL -indsprøjtning. Hvis du ikke er sikker på, at du skal lære SQL, har du overvejet en statisk stedgenerator?

Hvorfor ikke efterlade en kommentar herunder med dine foretrukne SQL -tips og tricks?

Billedkreditter: HYS_NP/Shutterstock

Del Del Tweet E -mail Er det værd at opgradere til Windows 11?

Windows er blevet redesignet. Men er det nok til at overbevise dig om at skifte fra Windows 10 til Windows 11?

Læs Næste
Relaterede emner
  • Programmering
  • Programmering
  • SQL
Om forfatteren Joe Coburn(136 artikler udgivet)

Joe er uddannet i datalogi fra University of Lincoln, UK. Han er en professionel softwareudvikler, og når han ikke flyver med droner eller skriver musik, kan han ofte findes tage fotos eller producere videoer.

Mere fra Joe Coburn

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere