Skapa eller redigera tabeller eller index genom att använda en datadefinitionsfråga

Viktigt!: Den här artikeln är maskinöversatt, se ansvarsfriskrivningen. Den engelska versionen av den här artikeln finns här för din referens.

Du kan skapa och ändra tabeller, restriktioner, index och relationer genom att skriva datadefinitionsfrågor i SQL-vyn.

I den här artikeln förklaras begreppet datadefinitionsfrågor och du får lära dig hur du använder dem för att skapa tabeller, restriktioner, index och relationer. Du får också veta mer om hur du kan avgöra när du ska använda en datadefinitionsfråga.

Obs!: Du kan inte använda dessa procedurer i en webbdatabas.

Artikelinnehåll

Översikt

Skapa eller ändra en tabell

Skapa ett index

Skapa ett villkor eller en relation

Översikt

Till skillnad från andra frågor hämtar en datadefinitionsfråga inte data. I stället använder en datadefinitionsfråga DDL (Data Definition Language) för att skapa, ändra eller ta bort databasobjekt.

Obs!: DDL (Data Definition Language) är en del av SQL (Structured Query Language).

Datadefinitionsfrågor kan vara mycket användbara. Du kan regelbundet ta bort och återskapa delar av ditt databasschema enbart genom att köra vissa frågor. Överväg att använda en datadefinitionsfråga om du är van vid att använda SQL-satser och du planerar att ta bort och återskapa särskilda tabeller, restriktioner, index eller relationer.

Varning: Det kan vara riskfyllt att använda datadefinitionsfrågor för att ändra i databasobjekt eftersom det inte visas några dialogrutor där du bekräftar dina åtgärder. Om du gör ett misstag kan du förlora data eller oavsiktligt ändra utseendet hos en tabell. Var försiktig när du använder en datadefinitionsfråga för att modifiera objekten i databasen. Om du inte är underhållsansvarig för den databas du använder bör du rådfråga databasadministratören innan du kör en datadefinitionsfråga.

Viktigt!: Gör en säkerhetskopia av alla tabeller som berörs innan du kör en datadefinitionsfråga.

DDL-nyckelord

Nyckelord

Användning

CREATE

Skapa ett index eller en tabell som inte redan finns.

ALTER

Ändra en befintlig tabell eller kolumn.

DROP

Ta bort en befintlig tabell, kolumn eller restriktion.

ADD

Lägga till en kolumn eller en restriktion för en tabell.

COLUMN

Använd med ADD, ALTER eller DROP

CONSTRAINT

Använd med ADD, ALTER eller DROP

INDEX

Använd med CREATE

TABLE

Använd med ALTER, CREATE eller DROP

Överst på sidan

Skapa eller ändra en tabell

Använd kommandot CREATE TABLE när du vill skapa en tabell. Ett CREATE TABLE-kommando har följande syntax:

CREATE TABLE table_name 
(field1 type [(size)] [NOT NULL] [index1]
[, field2 type [(size)] [NOT NULL] [index2]
[, ...][, CONSTRAINT constraint1 [, ...]])

De enda obligatoriska elementen i ett CREATE TABLE-kommando är själva kommandot CREATE TABLE och namnet för tabellen, men det ofta lämpligt att definiera vissa fält eller andra aspekter i tabellen. Här följer ett enkelt exempel:

Anta att du vill skapa en tabell för att lagra namn, år och pris för begagnade bilar du är intresserad av att köpa. Du vill tillåta upp till 30 tecken för namnet och 4 tecken för året. Så här använder du en datadefinitionsfråga för att skapa tabellen:

Obs!: Du kan behöva aktivera innehållet i databasen innan det går att köra en datadefinitionsfråga:

  • Klicka på Aktivera i meddelandefältet.

Skapa en tabell

  1. Klicka på Frågedesign i gruppen Makron och kod på fliken Skapa.

  2. Stäng dialogrutan Visa tabell.

  3. Klicka på Definition i gruppen Frågetyp på fliken Design.

    Rutnätet döljs och objektfliken för SQL-vyn visas.

  4. Skriv följande SQL-uttryck:

    CREATE TABLE Bilar (Namn TEXT(30), År TEXT(4), Pris CURRENCY)

  5. Klicka på Kör i gruppen Resultat på fliken Design.

Redigera en tabell

Om du vill redigera en tabell använder du ett ALTER TABLE-kommando. Det går att använda ett ALTER TABLE-kommando för att lägga till, redigera eller släppa (ta bort) kolumner eller villkor. Ett ALTER TABLE-kommando har följande syntax:

ALTER TABLE table_name predicate

där predikat kan vara något av följande:

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Anta att du vill lägga till ett textfält med 10 tecken för att lagra information om skicket hos varje bil. Du kan göra följande:

  1. Klicka på Frågedesign i gruppen Makron och kod på fliken Skapa.

  2. Stäng dialogrutan Visa tabell.

  3. Klicka på Definition i gruppen Frågetyp på fliken Design.

    Rutnätet döljs och objektfliken för SQL-vyn visas.

  4. Skriv följande SQL-uttryck:

    ALTER TABLE Bilar ADD COLUMN Skick TEXT(10)

  5. Klicka på Kör i gruppen Resultat på fliken Design.

Överst på sidan

Skapa ett index

Om du vill skapa ett index i en befintlig tabell använder du kommandot CREATE INDEX. Ett CREATE INDEX-kommando har följande syntax:

CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...])
[WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

De enda obligatoriska elementen är CREATE INDEX-kommandot, indexnamnet, ON-argumentet, namnet på tabellen som innehåller fälten du vill indexera och listan över fält som ska inkluderas i indexet.

  • DESC-argumentet gör att indexet skapas i fallande ordning, vilket kan vara användbart om du ofta kör frågor som söker efter de översta värdena för indexerat fält, eller sorterar det indexerade fältet i fallande ordning. Ett index skapas som standard i stigande ordning.

  • WITH PRIMARY-argumentet etablerar det indexerade fältet eller fälten som tabellens primärnyckel.

  • WITH DISALLOW NULL-argumentet gör så att indexet kräver att ett värde anges för det indexerade fältet – det vill säga att null-värden inte tillåts.

Anta att du har en tabell vid namn Bilar med fält som lagrar namn, år, pris och skicket hos begagnade bildar som du är intresserad av att köpa. Anta vidare att tabellen har blivit stor och att du ofta inkluderar årsfältet i frågor. Så här skapar du ett index för årsfältet så att du får snabbare frågeresultat:

  1. Klicka på Frågedesign i gruppen Makron och kod på fliken Skapa.

  2. Stäng dialogrutan Visa tabell.

  3. Klicka på Definition i gruppen Frågetyp på fliken Design.

    Rutnätet döljs och objektfliken för SQL-vyn visas.

  4. Skriv följande SQL-uttryck:

    CREATE INDEX Årsindex ON Bilar (År)

  5. Klicka på Kör i gruppen Resultat på fliken Design.

Överst på sidan

Skapa en restriktion eller en relation

Med en restriktion upprättas en logisk restriktion som måste uppfyllas av ett fält eller en kombination av fält när värden har infogats. En UNIK restriktion förhindrar att det begränsade fältet godkänner ett värde som skulle dubblera ett befintligt värde för fältet.

En relation är en typ av restriktion som hänvisar till värdena för ett fält eller en kombination av fält i en annan tabell för att avgöra om ett värde kan infogas i det begränsade fältet eller kombinationen av fält. Du använder inte något speciellt nyckelord för att ange att en restriktion är en relation.

Om du vill skapa en restriktion använder du en CONSTRAINT-sats i ett kommando för CREATE TABLE eller ALTER TABLE. Det finns två typer av CONSTRAINT-satser: en för att skapa ett villkor i ett enstaka fält och en för att skapa ett villkor i flera fält.

Villkor för enstaka fält

En CONSTRAINT-sats för ett enstaka fält följer omedelbart definitionen av fältet som det begränsar och har följande syntax:

CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)]
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Anta att du har en tabell vid namn Bilar där du lagrar namn, år, pris och skicket hos begagnade bilar som du är intresserad av att köpa. Anta vidare att du ofta glömmer att mata in ett värde för bilens skick och att du alltid vill lagra den här informationen. Så här skapar du ett villkor i fältet Skick som förhindrar att du lämnar fältet tomt:

  1. Klicka på Frågedesign i gruppen Makron och kod på fliken Skapa.

  2. Stäng dialogrutan Visa tabell.

  3. Klicka på Definition i gruppen Frågetyp på fliken Design.

    Rutnätet döljs och objektfliken för SQL-vyn visas.

  4. Skriv följande SQL-uttryck:

    ALTER TABLE Bilar ALTER COLUMN Skick TEXT CONSTRAINT SkickKrävs NOT NULL

  5. Klicka på Kör i gruppen Resultat på fliken Design.

Efter ett tag märker du att det finns många liknande värden i fältet Skick som ska vara likadana. Vissa av bilarna har exempelvis värdet bristfällig för Skick och de andra har värdet dålig.

Obs!: Om du vill följa efter med de övriga stegen lägger du till några påhittade data i tabellen Bilar, som du skapade i föregående steg.

Efter att du har rensat värdena så att de är mer konsekventa kan du skapa en tabell, vid namn Bilskick, med ett fält, vid namn Skick, som innehåller alla de värden du vill använda för skicket hos olika bilar:

  1. Klicka på Frågedesign i gruppen Makron och kod på fliken Skapa.

  2. Stäng dialogrutan Visa tabell.

  3. Klicka på Definition i gruppen Frågetyp på fliken Design.

    Rutnätet döljs och objektfliken för SQL-vyn visas.

  4. Skriv följande SQL-uttryck:

    CREATE TABLE Bilskick (Skick TEXT(10))

  5. Klicka på Kör i gruppen Resultat på fliken Design.

  6. Skapa en primärnyckel för tabellen med hjälp av en ALTER TABLE-instruktion:

    ÄNDRA TABELL CarCondition ALTER KOLUMN villkor TEXT VILLKOR CarConditionPK PRIMÄRNYCKEL

  7. Skriv följande SQL-uttryck på objektfliken för SQL-vyn för att infoga värdena från fältet Skick för tabellen över bilar i en ny Bilskick-tabell:

    INSERT INTO Bilskick SELECT DISTINCT Skick FROM Bilar;

    Obs!: SQL-uttrycket i det här steget är en lägg till fråga. Till skillnad från hos en datadefinitionsfråga slutar en tilläggsfråga med ett semikolon.

  8. Klicka på Kör i gruppen Resultat på fliken Design.

Skapa en relation med hjälp av en restriktion

Om du vill kräva att alla nya värden som infogas i fältet Skick i tabellen Bilar överensstämmer med ett värde i fältet Skick i tabellen Bilskick kan du på följande sätt skapa en relation mellan Bilskick och Bilar i fältet Skick:

  1. Klicka på Frågedesign i gruppen Makron och kod på fliken Skapa.

  2. Stäng dialogrutan Visa tabell.

  3. Klicka på Definition i gruppen Frågetyp på fliken Design.

    Rutnätet döljs och objektfliken för SQL-vyn visas.

  4. Skriv följande SQL-uttryck:

    ALTER TABLE Bilar ALTER COLUMN Skick TEXT CONSTRAINT FKeyCondition REFERENCES Bilskick (Skick)

  5. Klicka på Kör i gruppen Resultat på fliken Design.

Villkor för flera fält

En CONSTRAINT-sats för flera fält kan endast användas utanför en fältdefinitionssats och har följande syntax:

CONSTRAINT constraint_name 
{PRIMARY KEY (pk_field1[, pk_field2[, ...]]) |
UNIQUE (unique1[, unique2[, ...]]) |
NOT NULL (notnull1[, notnull2[, ...]]) |
FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]])
REFERENCES foreign_table
[(fk_field1[, fk_field2[, ...]])] |
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Låt oss se på ett annat exempel med tabellen Bilar. Anta att du vill säkerställa att det inte finns två bilar i tabellen Bilar som har samma värdeuppsättning för namn, år, skick och pris. Så här skapar du en UNIQUE-restriktion som gäller för de här fälten:

  1. Klicka på Frågedesign i gruppen Makron och kod på fliken Skapa.

  2. Stäng dialogrutan Visa tabell.

  3. Klicka på Definition i gruppen Frågetyp på fliken Design.

    Rutnätet döljs och objektfliken för SQL-vyn visas.

  4. Skriv följande SQL-uttryck:

    ALTER TABLE Bilar ADD CONSTRAINT IngaDubbl UNIQUE (namn, år, skick, pris)

  5. Klicka på Kör i gruppen Resultat på fliken Design.

Överst på sidan

Obs!: Ansvarsfriskrivning för maskinöversättning: Den här artikeln har översatts av ett datorsystem utan mänsklig inblandning. Microsoft erbjuder dessa maskinöversättningar för att hjälpa icke engelskspråkiga användare att ta del av information om Microsofts produkter, tjänster och tekniker. Eftersom artikeln är maskinöversatt kan den innehålla fel i ordval, syntax och grammatik.

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×