DDL (Data Definition Language) används för att skapa, ändra och radera själva strukturen i databasen – som ritningen till ett hus. Med DDL bygger vi tabeller, bestämmer datatyper och sätter upp regler för datan.
| Kommando | Beskrivning |
|---|---|
CREATE TABLE |
Skapar en ny tabell. |
ALTER TABLE |
Ändrar en eksisterande tabell (t.ex. lägger till en kolumn). |
DROP TABLE |
Raderar en hel tabell och allt dess innehåll permanent. |
TRUNCATE TABLE |
Töms tabellen på data, men behåller strukturen. |
När du skapar en kolumn måste du berätta vilken typ av data den får innehålla:
INT / INTEGER: Heltal (t.ex. 10, 42, -5).VARCHAR(n): Textsträng med maxlängd n (t.ex. VARCHAR(50) för ett namn).DECIMAL(p, s) / FLOAT: Decimaltal (t.ex. 99.90 för pris).DATE / DATETIME: Datum och tid (t.ex. 2026-10-05).BOOLEAN: Sant eller falskt (TRUE / FALSE).CREATE TABLEHär är ett exempel på hur vi skapar en tabell för Klasser och en för Elever.
-- Skapa tabellen Klasser
CREATE TABLE Klasser (
KlassID INT AUTO_INCREMENT PRIMARY KEY,
KlassNamn VARCHAR(10) NOT NULL UNIQUE
);
-- Skapa tabellen Elever med en Främmande Nyckel (Foreign Key)
CREATE TABLE Elever (
ElevID INT AUTO_INCREMENT PRIMARY KEY,
Fornamn VARCHAR(50) NOT NULL,
Efternamn VARCHAR(50) NOT NULL,
Epost VARCHAR(100) UNIQUE,
Fodelsedatum DATE,
KlassID INT,
FOREIGN KEY (KlassID) REFERENCES Klasser(KlassID)
);
PRIMARY KEY: Garanterar att värdet är unikt och inte NULL.NOT NULL: Kolumnen måste ha ett värde (får inte lämnas tom).UNIQUE: Inga dubbletter tillåts i denna kolumn.AUTO_INCREMENT: Databasen genererar automatiskt ett nytt nummer (1, 2, 3...) för varje ny rad.FOREIGN KEY (...) REFERENCES ...: Skapar en koppling till en annan tabell för att säkerställa dataintegritet.ALTER TABLEOm du i efterhand vill lägga till en ny kolumn eller ta bort en befintlig använder du ALTER TABLE.
-- Lägg till kolumnen Telefonnummer i Elever
ALTER TABLE Elever
ADD Telefonnummer VARCHAR(20);
-- Ta bort kolumnen Fodelsedatum
ALTER TABLE Elever
DROP COLUMN Fodelsedatum;
DROP TABLE⚠️ Varning:
DROP TABLEraderar tabellen och all data omedelbart utan möjlighet att ångra!
-- Radera tabellen Elever
DROP TABLE Elever;
Prova att skriva SQL-koden för följande struktur:
Forfattare med kolumnerna:ForfattareID (Heltal, Primärnyckel, Automatiskt nummer)Namn (Text upp till 100 tecken, Får inte vara tomt)Bocker med kolumnerna:BokID (Heltal, Primärnyckel, Automatiskt nummer)Titel (Text upp till 150 tecken, Får inte vara tomt)Utgivningsar (Heltal)ForfattareID (Främmande nyckel som pekar på Forfattare)