SQL

2. DDL

2. DDL – Data Definition Language

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.


Vanliga DDL-kommandon

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.

Vanliga datatyper

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).

Skapa en tabell med CREATE TABLE

Hä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)
);

Förklaring av villkor (Constraints):

  • 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.

Ändra i en tabell med ALTER TABLE

Om 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;

Radera en tabell med DROP TABLE

⚠️ Varning: DROP TABLE raderar tabellen och all data omedelbart utan möjlighet att ångra!

-- Radera tabellen Elever
DROP TABLE Elever;

Övningsuppgift: Skapa en bokdatabas

Prova att skriva SQL-koden för följande struktur:

  1. Skapa en tabell som heter Forfattare med kolumnerna:
    • ForfattareID (Heltal, Primärnyckel, Automatiskt nummer)
    • Namn (Text upp till 100 tecken, Får inte vara tomt)
  2. Skapa en tabell som heter 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)