Structured Query Language
Förord
SQL står för Structured Query Language, och översättes bäst till strukturerat frågespråk. Jag tar inte upp och berättar något speciellt om databaser, för jag förutsätter att de som håller på att lära sig SQL redan vet hur en databas fungerar och hur den används.Jag börjar då med sökningarna i en tabell. Låt oss säga att vi har en tabell med namnet adressbok, som på ett ungefär ser ut som nedan:
För att få alla listade använder man då:
Om man nu t.ex. vill lista alla personer som har ett –son namn så skriver man
Då visas alla namnen som slutar på son. Som ni såg ovan så använda jag två ord som jag ännu inte nämnt något om, dessa är LIKE och WHERE. Jag börjar med att gå igenom LIKE.
LIKE används då till att lista fram något när man som ovan bara söker efter en del av det hela. LIKE´s syntax ser ut som nedan: Kolumnnamn [NOT] LIKE sträng
Och LIKE innehåller då också två stycken specialtecken. Dessa två är
_ Och det betyder ett valfritt tecken
% Betyder 0, ett eller flera valfria tecken.
Om man söker efter alla i en databas som heter *arlsson(första bokstaven borträknad) så kör man denna sträng:
När man använder WHERE finns det olika operatorer. Dessa är
För att lista alla personer från adressboken ovan som är födda efter 75 skriver man då alltså
Då visas alla som är födda från 1975 och framåt.
Om man då vill visa alla de som är födda mellan 1978 och 1985 så ser det ut såhär:
Syntaxen för BETWEEN är
Om hela familjen Karlsson hade varit med på listan, och alla hade bott på samma adress, så hade det ibland varit onödigt att lista ut deras adress ett flertal gånger. För att undvika detta kan då DISTINCT användas. DISTINCT är mycket lätt att använda, i detta fallet hade den sett ut såhär.
IN kan användas vid matchning av ett värde mot en lista av värden. Syntaxen för IN är.
Nu vill vi visa alla som kommer från Tyringe och Stockholm. Det gör vi lätt med
Resultatet blir då:
För att sortera resultatet använder man ORDER BY. Syntaxen ser ut som nedan:
ORDER BY kolumnspecifikation [ASC eller DESC]
Som ni nu ser så använda jag ASC och DESC. Det är stigande eller fallande.
Om jag alltså skriver SELECT namn, tele FROM adressbok ORDER BY tele DESC så betyder det att det högsta talet står längst upp, och det lägsta längst nere. Om jag istället använt ASC, så hade det varit tvärtom.
I SQL finns det en del funktioner som är inbyggda. Rättare sagt, det finns fem stycken.
Ett exempel.
Låt oss säga att i en databas har vi 7 stycken som tjänar 70:- i timmen, och 12 som tjänar 110:- i timmen. Om vi nu ska räkna ihop alla som tjänar 70:- så blir det
Med UNION kan man lägga ihop två olika tabeller, och jag ska nu visa ett lätt exempel på det hela.
Ni visas alltså resultatet från två olika databaser, person och annan.
Om man behöver ändra sin databas, kanske lägga till något eller kanske ta bort något, så finns det några kommandon som passar alldeles utmärkt till detta. Desa är:
Den jag ska börja skriva om nu är DELETE.
Låt oss säga att det har uppstått ett fel i databasen, man råkade lägga in Persson i sin databas, och nu vill man ta bort dessa Persson eftersom man inte känner dem. Det görs mycket lät med hjälp av
Men nu kommer man ihåg, att man kände dessa Persson ändå, och ångrar att man tog bort dem, och nu vill man lägga in dem igen. Då använder man:
Om det finns fler fält i databasen, så förblir dem tomma tills man bestämmer sig för att fylla i dem.
UPDATE har följande syntax:
Här följer ett exempel på hur man använder sig utav UPDATE, det vi kommer till att göra är att ändra en sak i en databas, och sedan se till att det visas.
Databasen heter affär och ser ut som nedan:
Om nu Coca Colan har gått ner 2:- i pris så skriver man följande för att uppdatera:
Detta var då det viktigaste när det gäller SQL. Det finns en del saker jag inte tagit upp, om hur man utökar tabeller, och en del andra saker. Men enligt mig så har vi gått igenom det viktigaste. Hoppas du haft någon nytta av denna texten, för det har varit mycket trevligt att skriva den.
//Michael Karlsson
michael@ms-networks.com
NAMN | ADRESS | TELE | PERSONNR |
---|---|---|---|
Michael Karlsson | Stenbocksgatan 2c | 05644-55622 | 821222 |
Anders Svensson | Edringatan 12 | 066-66647 | 780323 |
Lisa Eklund | Dromedarstigen 3 | 08-786442 | 850506 |
Pär Sundgren | Senagsgatan 45 | 0745-655123 | 450709 |
Greta Nordström | Fabriksgatan 10 | 08-5555666 | 120907 |
För att få alla listade använder man då:
SELECT * FROM adressbok
Om man nu t.ex. vill lista alla personer som har ett –son namn så skriver man
SELECT * FROM adressbok WHERE namn LIKE ”%son”
Då visas alla namnen som slutar på son. Som ni såg ovan så använda jag två ord som jag ännu inte nämnt något om, dessa är LIKE och WHERE. Jag börjar med att gå igenom LIKE.
LIKE
LIKE används då till att lista fram något när man som ovan bara söker efter en del av det hela. LIKE´s syntax ser ut som nedan: Kolumnnamn [NOT] LIKE strängOch LIKE innehåller då också två stycken specialtecken. Dessa två är
_ Och det betyder ett valfritt tecken
% Betyder 0, ett eller flera valfria tecken.
Om man söker efter alla i en databas som heter *arlsson(första bokstaven borträknad) så kör man denna sträng:
SELECT * FROM adressbok WHERE namn LIKE “_arlsson”.
WHERE
När man använder WHERE finns det olika operatorer. Dessa ärOPERATOR | BETYDELSE |
---|---|
= | Lika med |
<> | Skilt från |
> | Mer än |
< | Mindre än |
<= | Mindre än eller lika med |
>= | Större än eller lika med |
För att lista alla personer från adressboken ovan som är födda efter 75 skriver man då alltså
SELECT * FROM adressbok WHERE persnr >= 750000
Då visas alla som är födda från 1975 och framåt.
BETWEEN
Om man då vill visa alla de som är födda mellan 1978 och 1985 så ser det ut såhär:
SELECT * FROM adressbok BETWEEN 780000 AND 850000.
Syntaxen för BETWEEN är
Uttryck1[NOT] BETWEEN uttryck2 AND uttryck 3
DISTINCT
Om hela familjen Karlsson hade varit med på listan, och alla hade bott på samma adress, så hade det ibland varit onödigt att lista ut deras adress ett flertal gånger. För att undvika detta kan då DISTINCT användas. DISTINCT är mycket lätt att använda, i detta fallet hade den sett ut såhär.
SELECT DISTINCT FROM adress FROM adressbok
IN
NAMN | BOR |
---|---|
Michael | Tyringe |
Christer | Rögle |
Marianne | Stockholm |
Richard | Tyringe |
Christian | Stockholm |
IN kan användas vid matchning av ett värde mot en lista av värden. Syntaxen för IN är.
Uttryck[NOT] IN(lista med värden)
Nu vill vi visa alla som kommer från Tyringe och Stockholm. Det gör vi lätt med
SELECT namn FROM boadress WHERE bor IN(“Stockholm”, “Tyringe”)
Resultatet blir då:
NAMN | BOR |
---|---|
Michael | Tyringe |
Richard | Tyringe |
Christian | Stockholm |
Marianne | Stockholm |
ORDER BY
För att sortera resultatet använder man ORDER BY. Syntaxen ser ut som nedan:ORDER BY kolumnspecifikation [ASC eller DESC]
Som ni nu ser så använda jag ASC och DESC. Det är stigande eller fallande.
Om jag alltså skriver SELECT namn, tele FROM adressbok ORDER BY tele DESC så betyder det att det högsta talet står längst upp, och det lägsta längst nere. Om jag istället använt ASC, så hade det varit tvärtom.
INBYGGDA FUNKTIONER I SQL
I SQL finns det en del funktioner som är inbyggda. Rättare sagt, det finns fem stycken.
NAMN | BETYDELSE |
---|---|
Sum | Summerar värdet i kolumnerna |
Min | Hämtar det minsta värdet |
Max | Hämtar det största värdet |
AVG | Hämtar medelvärdet |
Count | Räknar antalet. Kan användas på två sätt, count(*) som då räknar antal rader, och Count(DISTINCT kolumnnamn) som räknar unika rader |
Ett exempel.
Låt oss säga att i en databas har vi 7 stycken som tjänar 70:- i timmen, och 12 som tjänar 110:- i timmen. Om vi nu ska räkna ihop alla som tjänar 70:- så blir det
SELECT COUNT(*) FROM databas
UNION
Med UNION kan man lägga ihop två olika tabeller, och jag ska nu visa ett lätt exempel på det hela.
SELECT adress FROM person WHERE bor = ”Tyringe”
UNION
SELECT adress FROM annan WHERE bor = “Tyringe”
Ni visas alltså resultatet från två olika databaser, person och annan.
FÖRÄNDRA DATABASEN
Om man behöver ändra sin databas, kanske lägga till något eller kanske ta bort något, så finns det några kommandon som passar alldeles utmärkt till detta. Desa är:
DELETE - Tar bort rader i databas
INSERT - Lägger till rader i databas
UPDATE - Uppdatering av databas
Den jag ska börja skriva om nu är DELETE.
DELETE
Låt oss säga att det har uppstått ett fel i databasen, man råkade lägga in Persson i sin databas, och nu vill man ta bort dessa Persson eftersom man inte känner dem. Det görs mycket lät med hjälp av
DELETE FROM databas WHERE namn = Persson
INSERT
Men nu kommer man ihåg, att man kände dessa Persson ändå, och ångrar att man tog bort dem, och nu vill man lägga in dem igen. Då använder man:
INSERT INTO databas (antal, namn)
VALUES(”5”, ”Persson”)
Om det finns fler fält i databasen, så förblir dem tomma tills man bestämmer sig för att fylla i dem.
UPDATE
UPDATE har följande syntax:
UPDATE tabellnamn
SET kolumnnamn = uttryck
[, kolumnnamn = utryck]…
[, WHERE vilkor]
Här följer ett exempel på hur man använder sig utav UPDATE, det vi kommer till att göra är att ändra en sak i en databas, och sedan se till att det visas.
Databasen heter affär och ser ut som nedan:
VAROR | PRIS |
---|---|
Mjölk | 8 |
Filmjölk | 12 |
Lantbröd | 13 |
Kaffe | 25 |
Coca Cola 1,5 l | 16 |
Om nu Coca Colan har gått ner 2:- i pris så skriver man följande för att uppdatera:
UPDATE affär
SET PRIS= 14
WHERE varor = ”Coca Cola 1,5 l”
Detta var då det viktigaste när det gäller SQL. Det finns en del saker jag inte tagit upp, om hur man utökar tabeller, och en del andra saker. Men enligt mig så har vi gått igenom det viktigaste. Hoppas du haft någon nytta av denna texten, för det har varit mycket trevligt att skriva den.
//Michael Karlsson
michael@ms-networks.com
0 Kommentarer