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.

Det är enkelt att skapa och ändra tabeller, villkor och index i designvyn och för att skapa relationer med hjälp av fönstret Relationer i Microsoft Office Access 2007. Du kan också skapa och ändra dessa samma enheter genom att skriva data definition frågor i SQL-vyn.

I den här tabellen beskrivs datadefinitionsfrågor och du kan se hur du använder sådana frågor för att skapa tabeller, index, villkor och relationer. Den här artikeln kan även hjälpa dig att avgöra när du ska använda en datadefinitionsfråga.

Vad vill du göra?

Lära mig när jag ska använda en datadefinitionsfråga

Skapa eller ändra en tabell

Skapa ett index

Skapa ett villkor eller en relation

Lära mig när jag ska använda en datadefinitionsfråga

Till skillnad från när det gäller andra frågor hämtas inte data för en datadefinitionsfråga. De flesta frågor använder DML-kommandon (Data Manipulation Language), som består av SQL-kommandon (Structured Query Language), som anger data från befintliga databasobjekt som lagrar eller indexerar data, och SQL-kommandon som kontrollerar användaråtkomst till databasobjekt. En datadefinitionsfråga definierar eller ändrar definitionen för ett databasobjekt i Office Access 2007.

I allmänhet ska du använda de grafiska gränssnitt som erbjuds i Office Access 2007 (exempelvis Designvyn och Relationsfönstret) för att skapa tabeller, villkor, index och relationer. Om du däremot har tabeller som du regelbundet tar bort och återskapar kan det vara tidsödande att använda de här gränssnitten. Genom att använda en datadefinitionsfråga kan du skriva en fråga en gång och sedan köra den igen vid behov. Använd bara datadefinitionsfrågor om du är bekant med SQL-uttryck och om du planerar att regelbundet ta bort och återskapa vissa tabeller, villkor eller index.

Viktigt!: Det kan vara riskfyllt att använda datadefinitionsfrågor för att modifiera databasobjekt, eftersom åtgärderna inte inbegriper dialogrutor för bekräftelse. 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 ansvarig för upprätthållandet av databasen du använder ska du be om hjälp från databasadministratören innan du kör en datadefinitionsfråga. Det är dessutom bra att alltid ta som vana att göra en säkerhetskopia av en tabell du tänker köra en fråga för.

Ö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 delarna av ett CREATE TABLE-kommando är själva kommandot CREATE TABLE, tabellens namn, minst ett fält och datatypen för varje fält. Vi ger 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. Gör följande för att använda en datadefinitionsfråga när du ska skapa en tabell:

Obs!: Du måste först aktivera innehållet i databasen för att en datadefinitionsfråga ska kunna köras.

  1. Klicka på Alternativ i Meddelandefältet och klicka sedan på Aktivera innehållet.

  2. Klicka på Frågedesign i gruppen Rapporter på fliken Skapa.

  3. Stäng dialogrutan Visa tabell.

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

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

  5. Skriv följande SQL-uttryck:

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

  6. 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 predikatet 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 Rapporter 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 Rapporter 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

Ett villkor upprättar ett logiskt villkor som ett fält eller en kombination av fält måste uppfylla när värdena är infogade. Ett UNIKT villkor 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 villkor 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.

Använd en CONSTRAINT-sats i ett kommando för CREATE TABLE eller ALTER TABLE för att skapa ett villkor. 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 Rapporter 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 och de andra har värdet dålig. 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 Rapporter 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. 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.

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

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 Rapporter 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 titta 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. På följande sätt kan du skapa ett UNIKT villkor som gäller för de här fälten:

  1. Klicka på Frågedesign i gruppen Rapporter 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.

×