Denna guide är uppdelad i olika delar. Detta är intro-sidan. Se efterföljande delar i listan nedan:
SQL är ett språk som används för att prata med SQL-databaser. En SQL-databas har tabeller med kolumner (tänk Excel, fär varje tab/flik är en tabell), och SQL används för att skapa, uppdatera, ta bort, eller hämta data.
SQL är både enkelt och kraftfullt. Alla som jobbar med data borde lära sig SQL 😁
Med enkelt menar jag att det inte är så mycket man behöver kunna, du klarar dig långt på kommandona
SELECT, UPDATE, DELETE och INSERT, och det är hyffsat logiskt. Och med kraftfullt menar jag att
det som annars skulle kräva många raders programmersingskod kan sammanfattas med en enda rad/sats SQL.
Här är ett exempel:
SELECT förnamn, efternamn, ålder FROM kunder WHERE förnamn="Johan" ORDER BY ålder;
Detta hämtar kolumnerna förnamn, efternamn och ålder från tabellen kunder, och filtrerar datan så att endast de som har förnamn=Johan kommer med, och så sorteras raderna efter ålder.
Om samma sak skulle göras i JavaScript skulle det se ut ungefär så här:
var rader = kunder .map(kund => {förnamn:kund.förnamn, efternamn:kund.efternamn, ålder:kund.ålder}) .filter(kund => kund.förnamn=="johan") .sort((a,b) => a<b ? -1 : a>b ? 1 : 0);
Vad är lättare att förstå, JavaScript-koden eller SQL-koden ? Eventuellt att jag skulle kunna göra JavaScript-koden mer verbose (mera rader kod) för att på så sätt göra den enklare att förstå. Men SQL koden är i gämförelse både enkel och konsis.
För att göra SQL koden tydligare brukar jag skriva själva SQL-kommandona i stora bokstäver, och om det är en mer komplicerad SQL-sats kan det vara bra att bryta ner den till flera rader:
SELECT förnamn, efternamn, ålder FROM kunder WHERE förnamn="Johan" ORDER BY ålder;
Liksom i JavaScript så kan man avsluta SQL-satsen med ett semi-kolon. Men en del SQL-motorer kräver inte det.
Själva SQL-koden brukar kallas sats / SQL-sats och själva datan som man hämtar brukar kallas records, rader eller data-records.
Här är ett exempel på en tabell med medlemmar:
id | förnamn | efternamn | föddår | favoritfärg |
---|---|---|---|---|
1 | Sven | Svensson | 1975 | grön |
2 | Sivert | Nilsson | 1955 | röd |
3 | Camilla | Åkesson | 1995 | lila |
4 | Gustav | Berglund | 1989 | svart |
5 | Jon | Svensson | 1979 | orange |
6 | Axel | Karlsson | 1994 | grön |
När du visualiserar datan i SQL-databaser, tänk då tabeller (exempel medlems-tabellen åvan), kolumner (id, efternamn, föddår, favoritfärg) och rader.
Det vanligsta kommandot är SELECT, följt av vilka kolumner man vill hämta. Vill man hämta alla kolumner går det bra med en stjärna/asterisk *
SELECT-satsen måste ha FROM för att tala om från vilken tabell datan ska hämtas.
Här är ett exempel som hämnar alla kolumner från tabellen "medlemmar":
SELECT * FROM medlemmar
Om vi till exempel vill hämta alla rader/records med medlemmar födda efter 1990:
SELECT * FROM medlemmar WHERE föddår > 1990
Eller endast de med favoritfärgen "grön":
SELECT * FROM medlemmar WHERE favoritfärg = "grön"
Om man vill ha datan i en speciell ordning.
Datan sorteras då kronologiskt, eller alfabetisk.
ASC eller DESC används för att sortera uppåt eller neråt, där ASC / uppåt är default (a-z och 1-9) och med DESC blir det baklänges (z-a och 9-1)
Exempel: Sortera alla medlemmar efter ålder:
SELECT * FROM medlemmar ORDER BY föddår
Eller sortera efter efternamn:
SELECT * FROM medlemmar ORDER BY efternamn
Om vi vill att medlemmar vars efternamn börjar med ZÄÅ ska hamna först lägger vi till DESC:
SELECT * FROM medlemmar ORDER BY efternamn DESC
WHERE efterföljs av logiska regler. Till exempel likamed-tecken, över > eller < under tecken, och NOT användas för negation.
Exempel, hämta en lista på medlemmar som INTE gillar färgen grön:
SELECT * FROM medlemmar WHERE NOT favoritfärg = "grön"
WHERE änvänds också när man gör en UPDATE eller DELETE...
UPDATE används för att uppdatera rader/records i en tabell. Exempel: Sätt namn till "Nisse"
UPDATE medlemmar SET förnamn = "Nisse"
Hoppsan! Vi glömde WHERE så nu uppdaterades alla medlemmar så att de fick Nisse som förnamn. Om du har tur så finns det en ångra-funktion, eller så måste du hämta om datan från backup. Detta är vanligaste misstaget i SQL, att man glömmer WHERE, så om du ska göra en UPDATE eller DELETE, kolla alltid en extra gång så att du har med WHERE!
UPDATE medlemmar SET förnamn = "Nisse" WHERE id = 6
För att göra varje rad unik så brukar man ge varje rad/record ett unikt id/löpnummer så att det går att precisera exakt vilken medlem man vill uppdatera eller ta bort.
Låt säga att Karlsson inte vill vara med i föreningen längre, då kan vi ta bort hans medlems-record:
DELETE FROM medlemmar WHERE id = 6
Notera att vi använde ID, vi skulle även kunna skrivit WHERE efternamn="Karlsson", men då hade vi kunnat råka ta bort andra medlemmar vars efternamn också är Karlsson.
Detta är första delen i min SQL-tutorial. Du kan nu tillräckligt för att göra något farligt 😃
Kommentera gärna om det var något åvan som du inte förstod eller har andra funderingar:
Jag kommer att posta efterföljande delar i form av blog-poster: