Förberedelser inför SQL-intervjun · Lektion

Primärnycklar, främmande nycklar och begränsningar

Förklara nycklar, unikhet och referensintegritet på det sätt en intervjuare vill höra

Lektion 3 av 413 steg

Primärnycklar, främmande nycklar och begränsningar är en gratis lektion i Förberedelser inför SQL-intervjun på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Förberedelser inför SQL-intervjun, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Förberedelser inför SQL-intervjun innehåller totalt 4 lektioner.

Varför nycklar alltid tas upp

Efter att SQL har definierats går intervjuare vidare till nycklar och begränsningar. Den gemensamma nämnaren är integritet: regler som databasen upprätthåller så att felaktiga data inte kan läggas in.

Vad en primärnyckel är

En primärnyckel identifierar varje rad unikt. Den är alltid unik och NOT NULL, och en tabell har högst en primärnyckel. Uttryck det tydligt för att få poäng.

CREATE TABLE customers (
  id INTEGER PRIMARY KEY,
  email VARCHAR(255) NOT NULL,
  name VARCHAR(100)
);

Naturliga kontra surrogatnycklar

Verkliga data eller ett genererat tal? En naturlig nyckel använder befintliga unika data, medan en surrogatnyckel är ett genererat id. De flesta team föredrar surrogatnycklar eftersom de är stabila.

Sammansatta primärnycklar

En primärnyckel kan omfatta mer än en kolumn och kallas då en sammansatt nyckel. Sådana ser du i kopplingstabeller, där två främmande nycklar tillsammans identifierar varje rad.

CREATE TABLE enrollments (
  student_id INTEGER,
  course_id INTEGER,
  enrolled_on DATE,
  PRIMARY KEY (student_id, course_id)
);

Primärnyckel kontra unik begränsning

En fråga som nästan garanterat kommer upp: primärnyckel kontra unik begränsning. Båda upprätthåller unikhet, men en tabell har en primärnyckel (NOT NULL) och många unika begränsningar (var och en tillåter ett NULL-värde).

CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  email VARCHAR(255) UNIQUE,
  username VARCHAR(50) UNIQUE
);

Vad en främmande nyckel är

En främmande nyckel refererar till en annan tabells primärnyckel och upprätthåller referensintegritet: du kan inte lägga till en underordnad rad som pekar på en överordnad rad som inte finns.

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  customer_id INTEGER REFERENCES customers(id),
  amount NUMERIC(10,2)
);

Referensåtgärder: ON DELETE / ON UPDATE

"Vad händer med beställningar om kunden tas bort?" Det är en referensåtgärd: RESTRICT blockerar borttagningen (standardvärdet), CASCADE tar bort underordnade rader och SET NULL rensar nyckeln.

CREATE TABLE order_items (
  id INTEGER PRIMARY KEY,
  order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE
);

NOT NULL, CHECK och DEFAULT

Ytterligare tre begränsningar fullbordar integriteten: NOT NULL förbjuder saknade värden, CHECK upprätthåller en regel som stock >= 0 och DEFAULT tillhandahåller ett reservvärde.

CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  price NUMERIC(10,2) NOT NULL DEFAULT 0,
  stock INTEGER CHECK (stock >= 0)
);

Genomgång med exempel: Utforma med integritet

Låt oss utforma en tabell för bibliotekets lån. Koden nedan använder två främmande nycklar, ett förfallodatum som inte får vara NULL och en unik regel så att en bok inte kan lånas ut två gånger samtidigt.

CREATE TABLE loans (
  id INTEGER PRIMARY KEY,
  book_id INTEGER NOT NULL REFERENCES books(id),
  member_id INTEGER NOT NULL REFERENCES members(id),
  due_date DATE NOT NULL,
  returned BOOLEAN DEFAULT false
);

Så pratar du om integritet

Nämn de tre typerna av integritet för att visa djup: entitetsintegritet från primärnycklar, referensintegritet från främmande nycklar och domänintegritet från NOT NULL, CHECK och datatyper.

Lägga till begränsningar i en befintlig tabell

Blir du ombedd att lägga till begränsningar i en befintlig tabell? Använd ALTER TABLE ... ADD CONSTRAINT. En viktig detalj är att det kan misslyckas om befintliga rader redan bryter mot den nya regeln.

ALTER TABLE orders
  ADD CONSTRAINT fk_orders_customer
  FOREIGN KEY (customer_id) REFERENCES customers(id);

Snabbkontroll

Skilj en primärnyckel från en unik begränsning.

Sammanfattning

Sammanfattning: en primärnyckel är unik och NOT NULL, en per tabell; en unik begränsning tillåter ett NULL-värde och du kan ha flera; en främmande nyckel upprätthåller referensintegritet.

Gratis att börja

Lär dig SQL med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Primärnycklar, främmande nycklar och begränsningar” gratis?

Ja – hela texten till ”Primärnycklar, främmande nycklar och begränsningar” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Förberedelser inför SQL-intervjun, kan Ni uppgradera till CoddyKit PRO. Kursen i Förberedelser inför SQL-intervjun innehåller totalt 4 lektioner.

Vad lär jag mig i ”Primärnycklar, främmande nycklar och begränsningar”?

Förklara nycklar, unikhet och referensintegritet på det sätt en intervjuare vill höra Ni övar på Förberedelser inför SQL-intervjun med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Förberedelser inför SQL-intervjun?

Du behöver inga förkunskaper. Utbildningen i Förberedelser inför SQL-intervjun på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Primärnycklar, främmande nycklar och begränsningar”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Förberedelser inför SQL-intervjun-lektionen?

Ja. Varje Förberedelser inför SQL-intervjun-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Vad är SQL och varför frågar intervjuare om det
  2. Logisk ordning för frågekörning
  3. Primärnycklar, främmande nycklar och begränsningar
  4. Läs ett schema under press
← Tillbaka till Förberedelser inför SQL-intervjun