Primärnycklar, främmande nycklar och begränsningar
Förklara nycklar, unikhet och referensintegritet på det sätt en intervjuare vill höra
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.
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
- Vad är SQL och varför frågar intervjuare om det
- Logisk ordning för frågekörning
- Primärnycklar, främmande nycklar och begränsningar
- Läs ett schema under press