Log på med Microsoft
Log på, eller opret en konto.
Hej
Markér en anden konto.
Du har flere konti
Vælg den konto, du vil logge på med.

Du kan oprette og redigere tabeller, begrænsninger, indekser og relationer i Access ved at skrive datadefinitionsforespørgsler i SQL-visning. I denne artikel forklares datadefinitionsforespørgsler, og hvordan du kan bruge dem til at oprette tabeller, begrænsninger, indekser og relationer. Denne artikel kan også hjælpe dig med at beslutte, hvornår du vil bruge en datadefinitionsforespørgsel.

I denne artikel

Oversigt

I modsætning til andre Access-forespørgsler henter en datadefinitionsforespørgsel ikke data. I stedet bruger en datadefinitionsforespørgsel Datadefinitionssprog til at oprette, redigere eller slette databaseobjekter.

Bemærk!: DDL (Data Definition Language) er en del af Structured Query Language (SQL).

Datadefinitionsforespørgsler kan være meget praktiske. Du kan jævnligt slette og genoprette dele af databaseskemaet blot ved at køre nogle forespørgsler. Overvej at bruge en datadefinitionsforespørgsel, hvis du er bekendt med SQL-sætninger, og du planlægger at slette og genoprette bestemte tabeller, begrænsninger, indekser eller relationer.

Advarsel!: Det kan være risikabelt at bruge datadefinitionsforespørgsler til at ændre databaseobjekter, fordi handlingerne ikke ledsages af bekræftelsesdialogbokse. Hvis du laver en fejl, kan du miste data eller utilsigtet ændre designet af en tabel. Vær forsigtig, når du bruger en datadefinitionsforespørgsel til at redigere objekter i databasen. Hvis du ikke er ansvarlig for at vedligeholde den database, du bruger, skal du kontakte administratoren af databasen, før du kører en datadefinitionsforespørgsel.

Vigtigt!: Opret en sikkerhedskopi af eventuelle tabeller, der er involveret, før du kører en datadefinitionsforespørgsel.

DDL-nøgleord

Nøgleord:

Brug

CREATE

Opret et indeks eller en tabel, der ikke allerede findes.

ALTER

Rediger en eksisterende tabel eller kolonne.

DROP

Slet en eksisterende tabel, kolonne eller begrænsning.

ADD

Føj en kolonne eller en begrænsning til en tabel.

COLUMN

Brug sammen med ADD, ALTER eller DROP

BEGRÆNSNING

Brug sammen med ADD, ALTER eller DROP

INDEX

Brug med CREATE

TABLE

Brug sammen med ALTER, CREATE eller DROP

Toppen af siden

Opret eller rediger en tabel

Hvis du vil oprette en tabel, skal du bruge kommandoen CREATE TABLE. Kommandoen OPRET TABEL har følgende syntaks:

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

De eneste påkrævede elementer i kommandoen CREATE TABLE er selve kommandoen CREATE TABLE og navnet på tabellen, men som regel skal du definere nogle felter eller andre aspekter af tabellen. Overvej dette enkle eksempel.

Antag, at du vil oprette en tabel til lagring af navn, år og prisen på brugte biler, som du overvejer at købe. Du vil tillade op til 30 tegn for navnet og 4 tegn for året. Hvis du vil bruge en datadefinitionsforespørgsel til at oprette tabellen, skal du gøre følgende:

Bemærk!: Du skal muligvis først aktivere indholdet af databasen for at køre en datadefinitionsforespørgsel:

  • Klik på Aktivér indhold på meddelelseslinjen.

Opret en tabel

  1. Klik på Forespørgselsdesign i gruppen Makroer & Kode under fanen Opret.

  2. Klik på Datadefinition i gruppen Forespørgselstype under fanen Design.

    Designgitteret er skjult, og fanen SQL-visningsobjekt vises.

  3. Skriv følgende SQL-sætning:

    CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)

  4. Klik på Kør i gruppen Resultater under fanen Design.

Ændre en tabel

Hvis du vil ændre en tabel, skal du bruge kommandoen ALTER TABLE. Du kan bruge kommandoen ALTER TABLE til at tilføje, ændre eller slippe (fjerne) kolonner eller begrænsninger. Kommandoen ALTER TABLE har følgende syntaks:

ALTER TABLE table_name predicate

hvor prædikat kan være et af følgende:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Antag, at du vil tilføje et tekstfelt på 10 tegn for at gemme oplysninger om hver bils tilstand. Du kan gøre følgende:

  1. Klik på Forespørgselsdesign i gruppen Makroer & Kode under fanen Opret.

  2. Klik på Datadefinition i gruppen Forespørgselstype under fanen Design.

    Designgitteret er skjult, og fanen SQL-visningsobjekt vises.

  3. Skriv følgende SQL-sætning:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. Klik på Kør i gruppen Resultater under fanen Design.

Toppen af siden

Oprette et indeks

Hvis du vil oprette et indeks i en eksisterende tabel, skal du bruge kommandoen CREATE INDEX. Kommandoen OPRET INDEKS har følgende syntaks:

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

De eneste påkrævede elementer er kommandoen CREATE INDEX, navnet på indekset, argumentet TIL, navnet på den tabel, der indeholder de felter, du vil indeksere, og listen over felter, der skal medtages i indekset.

  • Argumentet DESC medfører, at indekset oprettes i faldende rækkefølge, hvilket kan være nyttigt, hvis du ofte kører forespørgsler, der søger efter de øverste værdier for det indekserede felt, eller hvis du sorterer det indekserede felt i faldende rækkefølge. Som standard oprettes et indeks i stigende rækkefølge.

  • Argumentet WITH PRIMARY etablerer det eller de indekserede felter som tabellens primær nøgle .

  • Argumentet WITH DISALLOW NULL medfører, at indekset kræver, at der angives en værdi for det indekserede felt – dvs. null-værdier er ikke tilladt.

Antag, at du har en tabel med navnet Biler med felter, der gemmer navn, år, pris og betingelse for brugte biler, som du overvejer at købe. Antag også, at tabellen er blevet stor, og at du ofte medtager år-feltet i forespørgsler. Du kan oprette et indeks i feltet År for at hjælpe dine forespørgsler med hurtigere at returnere resultater ved hjælp af følgende fremgangsmåde:

  1. Klik på Forespørgselsdesign i gruppen Makroer & Kode under fanen Opret.

  2. Klik på Datadefinition i gruppen Forespørgselstype under fanen Design.

    Designgitteret er skjult, og fanen SQL-visningsobjekt vises.

  3. Skriv følgende SQL-sætning:

    CREATE INDEX YearIndex ON Cars (Year)

  4. Klik på Kør i gruppen Resultater under fanen Design.

Toppen af siden

Oprette en begrænsning eller en relation

En begrænsning etablerer en logisk betingelse, som et felt eller en kombination af felter skal opfylde, når der indsættes værdier. En ENTYDIGE-begrænsning forhindrer f.eks. det begrænsede felt i at acceptere en værdi, der ville duplikere en eksisterende værdi for feltet.

En relation er en type begrænsning, der refererer til værdierne i et felt eller en kombination af felter i en anden tabel for at afgøre, om en værdi kan indsættes i det begrænsede felt eller en kombination af felter. Du bruger ikke et særligt nøgleord til at angive, at en begrænsning er en relation.

Hvis du vil oprette en begrænsning, skal du bruge en CONSTRAINT-delsætning i en CREATE TABLE- eller ALTER TABLE-kommando. Der findes to typer CONSTRAINT-delsætninger: én til at oprette en begrænsning på et enkelt felt og en anden til at oprette en begrænsning på flere felter.

Begrænsninger for enkeltfelter

En CONSTRAINT-delsætning med et enkelt felt følger umiddelbart definitionen af det felt, som det begrænser, og har følgende syntaks:

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

Antag, at du har en tabel med navnet Biler med felter, der gemmer navn, år, pris og betingelse for brugte biler, som du overvejer at købe. Antag også, at du ofte glemmer at indtaste en værdi for bilens tilstand, og at du altid vil registrere disse oplysninger. Du kan oprette en betingelse i feltet Betingelse, der forhindrer dig i at lade feltet være tomt, ved at benytte følgende fremgangsmåde:

  1. Klik på Forespørgselsdesign i gruppen Makroer & Kode under fanen Opret.

  2. Klik på Datadefinition i gruppen Forespørgselstype under fanen Design.

    Designgitteret er skjult, og fanen SQL-visningsobjekt vises.

  3. Skriv følgende SQL-sætning:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Klik på Kør i gruppen Resultater under fanen Design.

Antag nu, at du efter et stykke tid bemærker, at der er mange lignende værdier i feltet Betingelse, der skal være de samme. For eksempel har nogle af bilerne en Tilstand værdi af fattige og andre har en værdi af dårlig.

Bemærk!: Hvis du vil følge med i de resterende procedurer, skal du føje nogle falske data til tabellen Biler, som du oprettede i de foregående trin.

Når du har ryddet værdierne op, så de er mere ensartede, kan du oprette en tabel med navnet CarCondition med ét felt, kaldet Betingelse, der indeholder alle de værdier, du vil bruge til bilers tilstand:

  1. Klik på Forespørgselsdesign i gruppen Makroer & Kode under fanen Opret.

  2. Klik på Datadefinition i gruppen Forespørgselstype under fanen Design.

    Designgitteret er skjult, og fanen SQL-visningsobjekt vises.

  3. Skriv følgende SQL-sætning:

    CREATE TABLE CarCondition (Condition TEXT(10))

  4. Klik på Kør i gruppen Resultater under fanen Design.

  5. Opret en primær nøgle til tabellen ved hjælp af en ALTER TABLE-sætning:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Hvis du vil indsætte værdierne fra feltet Betingelse i tabellen Biler i den nye CarCondition-tabel, skal du skrive følgende SQL i sql-visningsobjektfanen:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Bemærk!: SQL-sætningen i dette trin er en tilføje forespørgsel. I modsætning til en datadefinitionsforespørgsel slutter en tilføjelsesforespørgsel med et semikolon.

  7. Klik på Kør i gruppen Resultater under fanen Design.

Oprette en relation ved hjælp af en begrænsning

Hvis du vil kræve, at en ny værdi, der indsættes i feltet Betingelse i tabellen Biler, svarer til værdien i feltet Betingelse i tabellen CarCondition, kan du derefter oprette en relation mellem CarCondition og Biler i feltet Betingelse ved at benytte følgende fremgangsmåde:

  1. Klik på Forespørgselsdesign i gruppen Makroer & Kode under fanen Opret.

  2. Klik på Datadefinition i gruppen Forespørgselstype under fanen Design.

    Designgitteret er skjult, og fanen SQL-visningsobjekt vises.

  3. Skriv følgende SQL-sætning:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)

  4. Klik på Kør i gruppen Resultater under fanen Design.

Begrænsninger for flere felter

En CONSTRAINT-delsætning med flere felter kan kun bruges uden for en feltdefinitionsdelsætning og har følgende syntaks:

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}]}

Overvej et andet eksempel, der bruger tabellen Biler. Antag, at du vil sikre dig, at der ikke er to poster i tabellen Biler, der har det samme sæt af værdier for Navn, År, Betingelse og Pris. Du kan oprette en ENTYDIG-begrænsning, der gælder for disse felter, ved at benytte følgende fremgangsmåde:

  1. Klik på Forespørgselsdesign i gruppen Makroer & Kode under fanen Opret.

  2. Klik på Datadefinition i gruppen Forespørgselstype under fanen Design.

    Designgitteret er skjult, og fanen SQL-visningsobjekt vises.

  3. Skriv følgende SQL-sætning:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (navn, år, betingelse, pris)

  4. Klik på Kør i gruppen Resultater under fanen Design.

Toppen af siden

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.

Var disse oplysninger nyttige?

Hvor tilfreds er du med kvaliteten af sproget?
Hvad påvirkede din oplevelse?
Når du trykker på Send, bliver din feedback brugt til at forbedre Microsoft-produkter og -tjenester. Din it-administrator kan indsamle disse data. Erklæring om beskyttelse af personlige oplysninger.

Tak for din feedback!

×