Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Du kan opprette og endre tabeller, begrensninger, indekser og relasjoner i Access ved å skrive datadefinisjonsspørringer i SQL-visning. Denne artikkelen forklarer datadefinisjonsspørringer og hvordan du bruker dem til å opprette tabeller, begrensninger, indekser og relasjoner. Denne artikkelen kan også hjelpe deg med å bestemme når du skal bruke en datadefinisjonsspørring.

I denne artikkelen

Oversikt

I motsetning til andre Access-spørringer henter ikke en datadefinisjonsspørring data. I stedet bruker en datadefinisjonsspørring datadefinisjonsspråk til å opprette, endre eller slette databaseobjekter.

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

Datadefinisjonsspørringer kan være svært praktiske. Du kan regelmessig slette og opprette deler av databaseskjemaet på nytt bare ved å kjøre noen spørringer. Vurder å bruke en datadefinisjonsspørring hvis du er kjent med SQL-setninger, og du har tenkt å slette og opprette bestemte tabeller, betingelser, indekser eller relasjoner på nytt.

Advarsel!: Bruk av datadefinisjonsspørringer til å endre databaseobjekter kan være risikabelt, fordi handlingene ikke ledsages av bekreftelsesdialogbokser. Hvis du gjør en feil, kan du miste data eller utilsiktet endre utformingen av en tabell. Vær forsiktig når du bruker en datadefinisjonsspørring til å endre objekter i databasen. Hvis du ikke er ansvarlig for å vedlikeholde databasen du bruker, bør du kontakte administratoren for databasen før du kjører en datadefinisjonsspørring.

Viktig!: Lag en sikkerhetskopi av alle tabeller som er involvert, før du kjører en datadefinisjonsspørring.

DDL-nøkkelord

Nøkkelord

Bruk

CREATE

Opprett en indeks eller tabell som ikke allerede finnes.

ALTER

Endre en eksisterende tabell eller kolonne.

DROP

Slett en eksisterende tabell, kolonne eller betingelse.

ADD

Legg til en kolonne eller betingelse i en tabell.

COLUMN

Bruk med ADD, ALTER eller DROP

CONSTRAINT

Bruk med ADD, ALTER eller DROP

INDEX

Bruk med CREATE

TABLE

Bruk med ALTER, CREATE eller DROP

Til toppen av siden

Opprette eller endre en tabell

Hvis du vil opprette en tabell, bruker du en CREATE TABLE-kommando. En CREATE TABLE-kommando har følgende syntaks:

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

De eneste nødvendige elementene i en CREATE TABLE-kommando er selve CREATE TABLE-kommandoen og navnet på tabellen, men vanligvis vil du definere noen felt eller andre aspekter ved tabellen. Vurder dette enkle eksemplet.

La oss si at du vil opprette en tabell for å lagre navnet, året og prisen på brukte biler som du vurderer å kjøpe. Du vil tillate opptil 30 tegn for navnet og 4 tegn for året. Hvis du vil bruke en datadefinisjonsspørring til å opprette tabellen, gjør du følgende:

Obs!: Du må kanskje først aktivere innholdet i databasen for at en datadefinisjonsspørring skal kjøre:

  • Klikk Aktiver innhold i meldingsfeltet.

Opprette en tabell

  1. Klikk Spørringsutforming i kodegruppen Makroer &Fanen Opprett.

  2. Klikk Datadefinisjon i Spørringstype-gruppenUtforming-fanen.

    Utformingsrutenettet er skjult, og objektfanen SQL-visning vises.

  3. Skriv inn følgende SQL-setning:

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

  4. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

Endre en tabell

Hvis du vil endre en tabell, bruker du en ALTER TABLE-kommando. Du kan bruke en ALTER TABLE-kommando til å legge til, endre eller slippe (fjerne) kolonner eller begrensninger. En ALTER TABLE-kommando har følgende syntaks:

ALTER TABLE table_name predicate

der predikat kan være ett av 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

La oss si at du vil legge til et tekstfelt på ti tegn for å lagre informasjon om tilstanden til hver bil. Du kan gjøre følgende:

  1. Klikk Spørringsutforming i kodegruppen Makroer &Fanen Opprett.

  2. Klikk Datadefinisjon i Spørringstype-gruppenUtforming-fanen.

    Utformingsrutenettet er skjult, og objektfanen SQL-visning vises.

  3. Skriv inn følgende SQL-setning:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

Til toppen av siden

Opprette en indeks

Hvis du vil opprette en indeks i en eksisterende tabell, bruker du en CREATE INDEX-kommando. En CREATE INDEX-kommando har følgende syntaks:

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

De eneste nødvendige elementene er CREATE INDEX-kommandoen, navnet på indeksen, ON-argumentet, navnet på tabellen som inneholder feltene du vil indeksere, og listen over felt som skal inkluderes i indeksen.

  • DESC-argumentet fører til at indeksen opprettes i synkende rekkefølge, noe som kan være nyttig hvis du ofte kjører spørringer som ser etter toppverdier for det indekserte feltet, eller som sorterer det indekserte feltet i synkende rekkefølge. Som standard opprettes en indeks i stigende rekkefølge.

  • ARGUMENTET WITH PRIMARY etablerer det indekserte feltet eller feltene som primærnøkkel i tabellen.

  • ARGUMENTET WITH DISALLOW NULL fører til at indeksen krever at en verdi angis for det indekserte feltet, det vil si at nullverdier ikke er tillatt.

La oss si at du har en tabell kalt Biler med felt som lagrer navn, år, pris og betingelse for brukte biler som du vurderer å kjøpe. Anta også at tabellen har blitt stor og at du ofte inkluderer år-feltet i spørringer. Du kan opprette en indeks på År-feltet for å hjelpe spørringene med å returnere resultater raskere ved hjelp av følgende fremgangsmåte:

  1. Klikk Spørringsutforming i kodegruppen Makroer &Fanen Opprett.

  2. Klikk Datadefinisjon i Spørringstype-gruppenUtforming-fanen.

    Utformingsrutenettet er skjult, og objektfanen SQL-visning vises.

  3. Skriv inn følgende SQL-setning:

    CREATE INDEX YearIndex PÅ biler (år)

  4. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

Til toppen av siden

Opprette en betingelse eller en relasjon

En betingelse etablerer en logisk betingelse som et felt eller en kombinasjon av felt må oppfylle når verdier settes inn. En UNIK-begrensning hindrer for eksempel at det begrensede feltet godtar en verdi som dupliserer en eksisterende verdi for feltet.

En relasjon er en betingelsestype som refererer til verdiene i et felt eller en kombinasjon av felt i en annen tabell for å avgjøre om en verdi kan settes inn i det begrensede feltet eller en kombinasjon av felt. Du bruker ikke et spesielt nøkkelord til å angi at en betingelse er en relasjon.

Hvis du vil opprette en begrensning, bruker du en CONSTRAINT-setning i en CREATE TABLE- eller ALTER TABLE-kommando. Det finnes to typer CONSTRAINT-setninger: én for å opprette en betingelse på ett enkelt felt, og en annen for å opprette en betingelse for flere felt.

Betingelser for ett felt

En constraint-setning med ett felt følger umiddelbart definisjonen av feltet den begrenser, 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}]}

La oss si at du har en tabell kalt Biler med felt som lagrer navn, år, pris og betingelse for brukte biler som du vurderer å kjøpe. Anta også at du ofte glemmer å skrive inn en verdi for bilens tilstand, og at du alltid vil registrere denne informasjonen. Du kan opprette en betingelse for Betingelse-feltet som hindrer deg i å la feltet stå tomt, ved å bruke følgende fremgangsmåte:

  1. Klikk Spørringsutforming i kodegruppen Makroer &Fanen Opprett.

  2. Klikk Datadefinisjon i Spørringstype-gruppenUtforming-fanen.

    Utformingsrutenettet er skjult, og objektfanen SQL-visning vises.

  3. Skriv inn følgende SQL-setning:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

Anta nå at du etter en stund legger merke til at det er mange lignende verdier i Betingelse-feltet som skal være det samme. Noen av bilene har for eksempel en betingelsesverdi av dårlig og andre har en verdi av dårlig.

Obs!: Hvis du vil følge med på de gjenværende prosedyrene, kan du legge til noen falske data i Biler-tabellen som du opprettet i trinnene ovenfor.

Når du har ryddet opp verdiene slik at de er mer konsekvente, kan du opprette en tabell med navnet CarCondition, med ett felt kalt Betingelse, som inneholder alle verdiene du vil bruke for biltilstanden:

  1. Klikk Spørringsutforming i kodegruppen Makroer &Fanen Opprett.

  2. Klikk Datadefinisjon i Spørringstype-gruppenUtforming-fanen.

    Utformingsrutenettet er skjult, og objektfanen SQL-visning vises.

  3. Skriv inn følgende SQL-setning:

    CREATE TABLE CarCondition (BetingelseSTEKST(10))

  4. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

  5. Opprett en primærnøkkel for tabellen ved hjelp av en ALTER TABLE-setning:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Hvis du vil sette inn verdiene fra Betingelse-feltet i Biler-tabellen i den nye CarCondition-tabellen, skriver du inn følgende SQL-kode i objektfanen SQL-visning:

    SETT INN I CarCondition VELG DISTINKT BETINGELSE FRA biler;

    Obs!: SQL-setningen i dette trinnet er en tilføyingsspørring. I motsetning til en datadefinisjonsspørring avsluttes en tilføyingsspørring med semikolon.

  7. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

Opprette en relasjon ved hjelp av en betingelse

Hvis du vil kreve at en ny verdi som er satt inn i Feltet Betingelse i Biler-tabellen, samsvarer med en verdi i Betingelse-feltet i CarCondition-tabellen, kan du deretter opprette en relasjon mellom CarCondition og Cars i feltet Betingelse ved hjelp av følgende fremgangsmåte:

  1. Klikk Spørringsutforming i kodegruppen Makroer &Fanen Opprett.

  2. Klikk Datadefinisjon i Spørringstype-gruppenUtforming-fanen.

    Utformingsrutenettet er skjult, og objektfanen SQL-visning vises.

  3. Skriv inn følgende SQL-setning:

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

  4. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

Begrensninger for flere felt

En constraint-setning med flere felt kan bare brukes utenfor en feltdefinisjonssetning 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}]}

Vurder et annet eksempel som bruker Biler-tabellen. La oss si at du vil forsikre deg om at ingen poster i Biler-tabellen har samme sett med verdier for Navn, År, Betingelse og Pris. Du kan opprette en UNIK-betingelse som gjelder for disse feltene, ved hjelp av følgende fremgangsmåte:

  1. Klikk Spørringsutforming i kodegruppen Makroer &Fanen Opprett.

  2. Klikk Datadefinisjon i Spørringstype-gruppenUtforming-fanen.

    Utformingsrutenettet er skjult, og objektfanen SQL-visning vises.

  3. Skriv inn følgende SQL-setning:

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

  4. Klikk på Kjør i Resultater-gruppen på Utforming-fanen.

Til toppen av siden

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.