13 Viktigaste SQL-kommandon som någon programmerare borde veta
Databaser driver den moderna webben. Varje stor eller dynamisk webbplats använder en databas på något sätt, och i kombination med Strukturerat fråge språk (SQL), möjligheterna att manipulera data är verkligen oändliga. Om du redan vet SQL, se till att du kassar dessa programmeringsförmågor. 7 Programmeringsförmåga Alla webbutvecklare borde veta 7 programmeringsfärdigheter. Alla webbutvecklare ska veta att webbdesign och utveckling ger bra löner och fördelar, anständigt arbetstid och utsikterna till framsteg. Vi visar vilka väsentliga färdigheter du kan börja lära dig nu för att komma in på detta spännande område. Läs mer alla webbutvecklare borde veta.
Idag visar jag dig några av de centrala kommandon som du behöver veta som programmerare.
Det finns många namn på data som returneras från en databas tabell. Data kallas vanligtvis som rader, Uppgifter, eller tupler. Jag använder dessa termer utbytbart i hela denna artikel.
Förord
Alla exemplen idag kommer att baseras på fyra fiktiva tabeller. De kund tabell innehåller namn och ålder av kunder:
De höjder Bordet innehåller namn och höjd för någon person:
De personal tabell innehåller namn och ålder av anställda - exakt samma som kundtabellen:
Slutbordet ringde människor innehåller namn och ålder av människor, precis som kund och personalbord:
1. Välj
De Välj uttalandet är det enklaste, och det är viktigt att du förstår det, eftersom det underbygger nästan alla andra kommandon. Det anses vara en bra metod att skriva dina reserverade SQL-ord i stor bokstav, eftersom det gör kommandot lättare att läsa och förstå.
Som namnet antyder är välj van vid Välj data från en databas. Här är den enklaste användningen:
VÄLJ * FRÅN BORD;
Det finns två delar till detta. Den första delen (VÄLJ *) anger vilka kolumner du vill välja. Asterisken indikerar att du vill välja alla kolumner i tabellen. Den andra delen (FRÅN bordet) berättar om din databasmotor där du vill hämta dessa data från. Byta ut “tabell” med namnet på din databas tabell.
Denna välj är känd som “välj stjärna.” Att använda stjärnan är ett bra sätt att ta reda på vilka data som finns i ett bord, men jag rekommenderar inte att du använder den för någon produktionskod. När du använder en valda stjärna är det upp till databasmotorn att presentera den information du vill ha. Du har ingen kontroll över den ordning som data returneras, så om någon lägger till en ny kolumn i tabellen kan du hitta att dina variabler i ditt programmeringsspråk inte längre representerar de korrekta uppgifterna. Lyckligtvis finns det en lösning.
Du kan uttryckligen ange vilka kolumner du vill hämta, så här:
SELECT ålder, namn FRÅN människor;
Den här frågan hämtar “ålder” och “namn” kolumner från “människor” tabell. Att vara detta explicit kan vara lite tråkigt om du har mycket data, men det gör att det kommer att minska problem i framtiden, tillsammans med att göra din SQL lättare att förstå av framtida programmerare.
Om du vill välja ytterligare en bit data, men det är inte lagrat i någon av dina tabeller kan du göra så här:
SELECT ålder, "1234" FRÅN människor;
Vilken sträng i enskilda citat kommer att returneras istället för att matcha ett kolumnnamn.
2. Var
Valet kommandot är utmärkt för att hämta data, men vad händer om du vill filtrera resultaten lite mer? Vad händer med att bara hämta personer som har blå ögon? Vad sägs om människor födda i januari som arbetar som mekanik? Det är här var Kommandot kommer in. Det här låter dig tillämpa villkor på välj, och du lägger bara till det i slutet av uttalandet:
VÄLJ Ålder, namn FRÅN Människor VAR Ålder> 10;
Denna fråga är nu begränsad till personer som är äldre än 10 år. Du kan kombinera flera villkor med hjälp av OCH operatör:
VÄLJ Ålder, namn FRÅN Människor VAR Ålder> 10 OCH Ålder < 20;
De OCH kommandot fungerar precis som det gör på engelska: det gäller ett annat villkor för uttalandet. I det här exemplet skulle data som returneras vara några poster med en ålder mellan 10 och 20. Eftersom det inte finns några matchande resultat returneras ingen data.
Ett annat kommando som kan användas i samband med detta är ELLER. Här är ett exempel:
VÄLJ Ålder, namn FRÅN Människor VAR Ålder> 10 ELLER Namn = 'Joe';
Den här frågan returnerar poster där åldern är mer än 10, eller namnet är lika med “Joe”. Lägg märke till hur det finns bara ett lika tecken? De flesta programmeringsspråk använder dubbla lika (==) för att kontrollera om likvärdighet. Detta behövs inte för de allra flesta databasmotorerna (men det kan mycket per miljö, så dubbelkontroll först).
3. Order
De ordning Kommando används för att sortera de returnerade resultaten. Det är en annan lätt att använda. Lägg bara till det till slutet av ditt uttalande:
VÄLJ namn, ålder FRÅN Människor BESTÄLL AV ÅRLIG DESC;
Du måste ange kolumnen och ordningen, som kan vara ASC för stigande eller DESC för nedstigning. Du kan beställa av flera kolumner så här:
VÄLJ namn, ålder FRÅN Människor BESTÄLLER AV Namn ASC, Ålders DESC
SORTERA EFTER är kanske den mest användbara när den kombineras med andra kommandon. Inte alla frågor kommer att returnera data på ett logiskt eller beställt sätt - det här kommandot låter dig ändra det.
4. Gå med
De Ansluta sig kommando är van att Ansluta sig relaterad data lagrad i en eller flera tabeller. Du Ansluta sig den andra tabellen till den första tabellen och ange hur dataen är ansluten. Här är ett grundläggande exempel:
VÄLJ ålder, namn, höjd FRÅN Människor VÄNSTER GÅ MED HÖGOR ANVÄNDNING (namn);
Det är några saker som händer här. Du måste börja med “VÄNSTER JOIN” syntax, som anger att du vill gå med i ett bord med hjälp av ett slag av vänster typ. Ange sedan tabellen du vill ansluta till (höjder). De ANVÄNDNING (namn) syntaxen anger att kolumnen “namn” kan hittas i båda tabellerna och att detta ska användas som en nyckel för att gå med i tabellerna tillsammans.
Oroa dig inte om dina kolumner har olika namn i varje tabell. Du kan använda “PÅ” istället för “ANVÄNDER SIG AV”:
VÄLJ ålder, namn, höjd FRÅN personer VÄNSTER JOIN höjder PÅ (namea = nameb);
På påståendet anges explicit vilka kolumner som ska användas. Det finns många typer av medlemskap, och det tar lång tid att gå in i detaljer för var och en, så här är en snabb sammanfattning av deras användningsområden:
- (INRE KOPPLING - Returnerar rader med en match i båda tabellerna.
- VÄNSTER (YTTRE) GÅ MED - Returnerar alla raderna från vänstra bordet, med några matcher från höger bord. Om det inte finns några matchningar returneras de vänstra bordsposterna fortfarande.
- Höger (yttre) gå med - Detta är motsatsen till ett vänster sammanfogning: alla raderna från det högra bordet returneras, tillsammans med eventuella matchningar i det vänstra bordet.
- FULL (YTTRE) GÅ MED - Returnerar alla poster med en match i endera tabellen.
De “INRE” eller “YTTRE” syntax är valfri. Det kan göra saker lättare att förstå, men du behöver inte ange det under de allra flesta av tiden.
5. Alias
Nu vet du grunderna, låt oss titta på alias kommando. Detta används för att tillfälligt byta namn på en tabell - mer av ett smeknamn än något annat, eftersom det här nya namnet bara finns i den enskilda transaktionen du kör. Så här använder du den:
SELECT A.age FRÅN Människor A;
Du kan använda valfritt namn du gillar, men jag gillar att använda bokstäver i alfabetet. Före varje kolumnamn prefixas aliaset. Detta alias är tilldelat bordet omedelbart efter det att det deklarerats. Det här är exakt detsamma som att göra detta:
VÄLJ people.age FROM people;
I stället för att skriva ett långt tabellnamn kan du skriva ett enkelt och lätt att komma ihåg brev - men vad är meningen? Tja, om du väljer från mer än ett bord, är det lätt att bli förvirrad om vilka kolumner som tillhör vilken tabell. Om båda dina tabeller råkar ha kolumner med samma namn, kan din databasfråga till och med misslyckas att köra utan att uttryckligen referera till tabellnamnet eller aliaset. Här är ett exempel med två tabeller:
SELECT staff.age, staff.name, customers.age, customers.name FRÅN personal, kunder;
Och här är samma fråga med alias:
SELECT A.age, A.name, B.age, B.name FRÅN personal A, kunder B;
Persontabellen ges aliaset av “en”, och kundens tabell ges aliaset av “B”. Aliaseringstabeller hjälper verkligen till att göra din kod lättare att förstå, och minskar antalet skrivningar du behöver göra.
Du kan också byta namn på en kolumn med ett alias med hjälp av “SOM” kommando:
SELECT ålder AS person_age FRÅN människor;
När denna fråga körs, kommer kolumnen nu att ringas “personlighet” istället för “ålder”.
6. Unionen
Union är ett bra kommando. Det låter dig lägga till rader till varandra. Till skillnad från föreningar som lägger till matchande kolumner kan facket lägga till orelaterade rader förutsatt att de har samma nummer och namn på kolumner. Så här använder du den:
SELECT ålder, namn FRÅN kunder UNION SELECT ålder, namn FRÅN personal;
Du kan tänka på fackföreningen som ett sätt att kombinera resultaten av två frågor. En union kommer bara att returnera resultat där det finns en unik rad mellan de två frågorna. Du kan använda “UNION ALL” syntax för att returnera all data, oberoende av dubbletter:
SELECT ålder, namn FRÅN KUNDER UNION ALL SELECT ålder, namn FRÅN personal;
Lägg märke till hur radens ordning ändras? Unionen arbetar på det mest effektiva sättet, så de returnerade uppgifterna kan variera i ordning.
Ett möjligt användningsfall för union är en subtotal: du kan facka en förfrågan av summan totalt på en fråga om de enskilda totalerna för ett visst scenario.
7. Sätt in
Nu vet du allt om att hämta data från en databas, men vad sägs om att infoga den? Det är här Föra in kommandot kommer in. Här är ett exempel:
INSERT INTO Människor (namn, ålder) VÄRDER ("Joe", 102);
Du måste ange tabellnamnet (personer) och de kolumner du vill använda (namn och ålder). De “VÄRDEN” Syntax används sedan för att ge de värden som ska sättas in. Dessa måste vara i samma ordning som de tidigare angivna kolumnerna.
Du kan inte ange en var klausul för inlägg, och du måste se till att du följer alla nödvändiga tabellbegränsningar som är närvarande.
8. Uppdatering
Efter att ha lagt in några data är det bara naturligt att behöva byta specifika rader. Här är uppdatering kommandosyntax:
UPPDATERA personer SET namn = 'Joe', ålder = 101;
Du måste ange tabellen du vill ändra och använd sedan “UPPSÄTTNING” syntax för att ange kolumnerna och deras nya värden. Detta exempel är bra, men det kommer att uppdateras varje enskild post - något som inte alltid är önskvärt!
För att vara mer specifik kan du använda “VAR” klausuler precis som när du gör en markering:
UPPDATERA personer SET namn = 'Joe', ålder = 101 Vart namn = 'James';
Du kan även ange flera villkor med “OCH” och “ELLER”:
UPPDATERA personer SET namn = 'Joe', ålder = 101 VAR (namn = 'James' OCH ålder = 100) ELLER namn = 'Ryan';
Lägg märke till hur parenteserna används för att begränsa villkoren.
9. Upsert
Upsert är ett konstigt ljudande ord, men det är ett otroligt användbart kommando. Säg att du har en begränsning på ditt bord, och du har angett att du bara vill ha poster med unika namn - du vill inte lagra två rader med samma namn, till exempel. Om du försökte infoga flera värden för "Joe" skulle din databasmotor kasta ett fel och vägra att göra det (med rätta). En UPSERT låter dig uppdatera en post om den redan finns. Detta är otroligt användbart! Utan det här kommandot skulle du behöva skriva mycket logik för att först kontrollera om det finns en post, sätt in om det inte gör det, annars hämta den korrekta primära nyckeln och uppdatera sedan.
Tyvärr implementeras uppstarterna olika i olika databasmotorer. PostgreSQL har nyligen fått denna förmåga, medan MySQL har haft det ganska länge. Här är MySQL-syntaxen som referens:
INSERT INTO Människor (namn, ålder) VÄRDEN ('Joe', 101) PÅ DUPLICERA NYCKEL UPPDATERA Ålder = 101;
Lägg märke till hur det här är i huvudsak en uppdatering och ett inläggsförklaring som kan summeras som “uppdatera om infogningen misslyckades.”
10. Radera
Radera Används för att ta bort poster helt - det kan vara ganska skadligt om det missbrukas! Den grundläggande syntaxen är väldigt lätt att använda:
DELETE FROM people;
Liksom de flesta andra kommandon kommer detta att raderas allt! Du måste använda en var för att begränsa den till ett lite snabbare antal rader - helst ett:
DELETE FROM people WHERE name = 'Joe';
Om du utvecklar ett system är det ofta klokt att implementera en “mjuk radering.” Du kör aldrig faktiskt raderingskommandot, snarare skapar du en raderad kolumn och kolla sedan kolumnen i dina val - det kan undvika mycket potentiell pinsamhet om du snabbt och enkelt kan hämta upptagna raderade poster. Detta är dock inte ett ersättningsalternativ för korrekt säkerhetskopiering.
11. Skapa tabell
De skapa bord Kommando används för att skapa tabeller. Det är en annan mycket enkel:
CREATE TABLE personer (namn TEXT, age, INTEGER, PRIMARY KEY (namn));
Lägg märke till hur kolumnnamnen och begränsningarna är inom parentes, och kolumnerna ges en lämplig datatyp. En primär nyckel anges, vilket krävs i någon bra databasdesign.
12. Ändra tabellen
De ändra bordet Kommando används för att ändra strukturen på ett bord. Detta är lite begränsat eftersom din databas inte kommer att låta dig ändra en tabell om befintliga data skulle orsaka konflikt - ändra en sträng till ett heltal, till exempel. I sådana fall fixar du data först och ändrar sedan tabellen. Här är ett exempel:
ALTER TABLE people ADD höjd heltal;
Detta exempel lägger till en kolumn som heter “höjd” av typ heltal till folketabellen. Det finns inte en gräns för vad du kan ändra.
13. Släpptabell
Det slutliga kommandot är släpp bord. Tänk på detta som att ta bort, men i stället för att radera en enda post, tar den bort varje enskild post tillsammans med bordet! Så här använder du den:
DROP TABLE people;
Det är ganska drastiskt, och det finns ingen anledning att programmera in i ditt system. Det bör endast utföras manuellt i de allra flesta fall, och det kan vara mycket destruktiv.
Det är allt för idag. Jag hoppas du lärde dig några användbara knep! Du kan lära dig hur man gör en hemsida Hur man gör en hemsida: För nybörjare Hur man gör en hemsida: För nybörjare Idag ska jag styra dig genom processen att göra en komplett webbplats från början. Oroa dig inte om det här låter svårt. Jag leder dig igenom det hela steget. Läs mer och använd sedan dina nyfunna färdigheter för att göra det dynamiskt - se till att du inte gör dessa misstag 9 Misstag du inte ska göra när du bygger en webbsida 9 Fel du inte borde göra när du bygger en webbsida Följande följer HTML-kodningsfel är enkla att göra, men om du leder dem bort tidigare än senare kommer din sida att se bättre ut, vara lättare att underhålla och fungera hur du vill ha den. Läs mer eller låt det vara sårbart för SQL-injektion. Vad är en SQL-injektion? [MakeUseOf Förklarar] Vad är en SQL-injektion? [MakeUseOf Explains] Världen av Internet-säkerhet plågas med öppna portar, bakdörrar, säkerhetshål, trojaner, maskar, brandväggssårbarheter och en rad andra problem som håller oss alla på tårna varje dag. För privata användare, ... Läs mer. Om du inte är säker på att du behöver lära dig SQL, har du funderat på en statisk webbplatsgenerator. 7 Anledningar att ditch ditt CMS och överväga en statisk webbplatsgenerator. 7 Anledningar att ditch ditt CMS och överväga en statisk webbplatsgenerator Under många år publicerar en webbplats var svårt för många användare. CMS som WordPress ändrade det, men de kan fortfarande vara förvirrande. Ett annat alternativ är en statisk webbplatsgenerator. Läs mer ?
Varför inte lämna en kommentar nedan med dina favorit SQL tips och tricks?
Bildkrediter: HYS_NP / Shutterstock
Utforska mer om: Programmering, SQL.