Aug 292010
 

Flattr this!

Ibland kan det vara bra att även ta bort data ur en databas. Lägger man till villkor för vilka poster som ska tas bort så slipper man leta upp dom manuellt. Jag utnyttjar en tabell med dessa fält inklusive några poster för att exemplet ska fungera:

Det handlar alltså om ett adressregister där tabellen heter ”Adressregister”.

Gå in i menyn Verktyg/SQL och kopiera in allting som står inom citatet för att få tabellen Adressregister med medföljande data:

CREATE TABLE ”Adressregister”
(”ID” Integer PRIMARY KEY, ”Förnamn” char(50), ”Efternamn” char(50), ”Adress” char(50), ”Postnummer” char(50), ”Postadress” char(50));

INSERT INTO ”Adressregister”
(”ID”, ”Förnamn”, ”Efternamn”, ”Adress”, ”Postnummer”, ”Postadress”)VALUES(0, ‘Peter’, ‘Andersson’, ‘Storgatan 4’, ‘678 65’, ‘Göteborg’);
INSERT INTO ”Adressregister”
(”ID”, ”Förnamn”, ”Efternamn”, ”Adress”, ”Postnummer”, ”Postadress”)VALUES(1, ‘Sven’, ‘Gustavsson’, ‘Allmänna stigen 36’, ‘566 56’, ‘Örnsköldsvik’);
INSERT INTO ”Adressregister”
(”ID”, ”Förnamn”, ”Efternamn”, ”Adress”, ”Postnummer”, ”Postadress”)VALUES(2, ‘Algot’, ‘Blomkvist’, ‘Västra gatan 25’, ‘678 65’, ‘Stockholm’);
INSERT INTO ”Adressregister”
(”ID”, ”Förnamn”, ”Efternamn”, ”Adress”, ”Postnummer”, ”Postadress”)VALUES(3, ‘Emma’, ‘Hultkvist’, ‘Gränden 3’, ‘765 56’, ‘Göteborg’);
INSERT INTO ”Adressregister”
(”ID”, ”Förnamn”, ”Efternamn”, ”Adress”, ”Postnummer”, ”Postadress”)VALUES(4, ‘Johanna’,’Evertsson’, ‘Höjden 3’, ‘566 88’, ‘Falköping’);
INSERT INTO ”Adressregister”
(”ID”, ”Förnamn”, ”Efternamn”, ”Adress”, ”Postnummer”, ”Postadress”)VALUES(5, ‘Evelina’, ‘Jonasson’, ‘Östra gatan 87’, ‘766 65’, ‘Stockholm’);
INSERT INTO ”Adressregister”
(”ID”, ”Förnamn”, ”Efternamn”, ”Adress”, ”Postnummer”, ”Postadress”)VALUES(6, ‘Finn’,’Rutgersson’,’Skojarbacken 44′,’655 67′,’Linköping’);
INSERT INTO ”Adressregister”
(”ID”, ”Förnamn”, ”Efternamn”, ”Adress”, ”Postnummer”, ”Postadress”)VALUES(7, ‘Anders’,’Andersson’,’Storgatan 12′,’678 65′,’Göteborg’);

Glöm inte att gå in i menyn Visa och ”uppdatera tabeller”.

Nu skulle jag vilja ta bort alla personer som bor i Stockholm från registret.

Som vanligt går vi in i menyn Verktyg/SQL och skriver sen in följande text:

DELETE FROM ”Adressregister”
WHERE ”Postadress”=’Stockholm’

Texten behöver knappast någon närmare förklaring mer än att jag återigen måste nämna att tabellnamn och fältnamn kräver dubbelfnuttar och värden enkelfnutt, dvs. det som hamnar efter lika-med-tecknet. Detta skiljer sig från program till program och Base är uppbyggt på detta sätt.

Så här ser tabellen ut efter man kört sql-kommandot:

Vi har fått bort alla personer från Stockholm från tabellen.

Nu försvårar vi det hela en smula. Jag vill nu ta bort alla personer som bor på Storgatan i Göteborg. Som vi kan se så finns här tre personer i nuläget. Problemet är att vi har två Storgatan med olika nummer på gatan. Alltså kan vi inte sätta ett lika-med-tecken.

Nu skriver vi därför in följande sql-kommando:

DELETE FROM ”Adressregister”
WHERE ”Postadress”=’Göteborg’ AND ”Adress” LIKE ‘Storgatan*’

och tabellen ser ut på följande sätt efter vi kört kommandot:

I denna fråga använde vi oss av LIKE och satte sen värdet Storgatan med jokertecknet * efteråt. Detta betyder att alla poster som innehåller Göteborg från kolumnen Postadress samt där adressen börjar med Storgatan kommer att tas bort.

  9 Responses to “Ta bort poster ur databasen (SQL-Skolan del 5)”

  1. Skulle det vara möjligt att lägga upp exempel-databaserna som förekommer i exemplen? Skulle göra det lättare att följa med och testa själv.

  2. Hej Magnus!
    Jag ska se om jag kan fixa något till imorgon. Tror inte att det går att ladda upp databasen här men har en annan idé hur det kan genomföras. Jag lägger helt enkelt upp sql-kommandon som skapar både tabell och innehåll.
    Med annat ord så kommer att räcka med max. två sql-kommandon för att skapa denna tabell med posterna inuti.

    En annan fördel är att det blir lite repetition för redan skrivna exempel och det kan ju också vara bra.

  3. Nu har jag lagt upp en sql-fråga som skapar både tabellen och fyller i med posterna som används i exemplet.

  4. Tackar för sql-frågan. Hade dock lite problem med att kopiera texten för enkel och dubbelsnuttarna blev inte rätt. Men inget som inte Notepad++ kunde lösa.

  5. Någon förklaring till varför enkel- och dubbelfnuttarna blir galna när man klipper och klistrat. Fel fnuttar från början eller vad?

  6. Min teori är att det har med unicode att göra men då borde åäö också bli fel. Fungerar dom?

  7. Ja. Testar att skriva fnuttar här och ser om det går att klistra in dem. ” ‘

  8. Nope. Det blir fel när man klistrar in dom.

  9. Hur kopplar man SQL enkelt till PHP så man kan radera en post via en hemsida

Kommentera

%d bloggare gillar detta: