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

U kunt tabellen, beperkingen, indexen en relaties maken en wijzigen in Access door query's voor gegevensdefinities te schrijven in de SQL-weergave. In dit artikel wordt uitgelegd hoe u gegevensdefinitiequery's gebruikt om tabellen, beperkingen, indexen en relaties te maken. In dit artikel kunt u ook bepalen wanneer u een gegevensdefinitiequery wilt gebruiken.

In dit artikel

Overzicht

In tegenstelling tot andere Access-query's haalt een gegevensdefinitiequery geen gegevens op. In plaats daarvan maakt een gegevensdefinitiequery gebruik van Data Definition Language om databaseobjecten te maken, te wijzigen of te verwijderen.

Opmerking: Data Definition Language (DDL) maakt deel uit van Structured Query Language (SQL).

Query's voor gegevensdefinities kunnen erg handig zijn. U kunt onderdelen van uw databaseschema regelmatig verwijderen en opnieuw maken door enkele query's uit te voeren. Overweeg het gebruik van een gegevensdefinitiequery als u bekend bent met SQL-instructies en u van plan bent om bepaalde tabellen, beperkingen, indexen of relaties te verwijderen en opnieuw te maken.

Waarschuwing: Het gebruik van gegevensdefinitiequery's om databaseobjecten te wijzigen kan riskant zijn, omdat de acties niet vergezeld gaan van bevestigingsdialoogvensters. Als u een fout maakt, kunt u gegevens verliezen of per ongeluk het ontwerp van een tabel wijzigen. Wees voorzichtig wanneer u een gegevensdefinitiequery gebruikt om objecten in uw database te wijzigen. Als u niet verantwoordelijk bent voor het onderhouden van de database die u gebruikt, moet u contact opnemen met de beheerder van de database voordat u een gegevensdefinitiequery uitvoert.

Belangrijk: Maak een back-up van de betrokken tabellen voordat u een gegevensdefinitiequery uitvoert.

DDL-trefwoorden

Trefwoord

Gebruik

CREATE

Maak een index of tabel die nog niet bestaat.

ALTER

Een bestaande tabel of kolom wijzigen.

DROP

Een bestaande tabel, kolom of beperking verwijderen.

ADD

Voeg een kolom of een beperking toe aan een tabel.

COLUMN

Gebruiken met ADD, ALTER of DROP

CONSTRAINT

Gebruiken met ADD, ALTER of DROP

INDEX

Gebruiken met CREATE

TABLE

Gebruiken met ALTER, CREATE of DROP

Naar boven

Een tabel maken of wijzigen

Als u een tabel wilt maken, gebruikt u de opdracht CREATE TABLE. De opdracht CREATE TABLE heeft de volgende syntaxis:

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

De enige vereiste elementen van een CREATE TABLE-opdracht zijn de opdracht CREATE TABLE zelf en de naam van de tabel, maar meestal wilt u bepaalde velden of andere aspecten van de tabel definiëren. Bekijk dit eenvoudige voorbeeld.

Stel dat u een tabel wilt maken voor het opslaan van de naam, het jaar en de prijs van gebruikte auto's die u overweegt aan te schaffen. U wilt maximaal 30 tekens toestaan voor de naam en 4 tekens voor het jaar. Als u een gegevensdefinitiequery wilt gebruiken om de tabel te maken, gaat u als volgt te werk:

Opmerking: Mogelijk moet u eerst de inhoud van de database inschakelen om een gegevensdefinitiequery uit te voeren:

  • Klik op de berichtenbalk op Inhoud inschakelen.

Een tabel maken

  1. Klik op het tabblad Maken in de groep Macro's & Code op Queryontwerp.

  2. Klik op het tabblad Ontwerp in de groep Querytype op Gegevensdefinitie.

    Het ontwerpraster is verborgen en het tabblad SQL-weergaveobject wordt weergegeven.

  3. Typ de volgende SQL-instructie:

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

  4. Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.

Een tabel wijzigen

Als u een tabel wilt wijzigen, gebruikt u de opdracht ALTER TABLE. U kunt een ALTER TABLE-opdracht gebruiken om kolommen of beperkingen toe te voegen, te wijzigen of te verwijderen(verwijderen). Een ALTER TABLE-opdracht heeft de volgende syntaxis:

ALTER TABLE table_name predicate

waarbij predicaat een van de volgende kan zijn:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Stel dat u een tekstveld van 10 tekens wilt toevoegen om informatie over de staat van elke auto op te slaan. U kunt het volgende doen:

  1. Klik op het tabblad Maken in de groep Macro's & Code op Queryontwerp.

  2. Klik op het tabblad Ontwerp in de groep Querytype op Gegevensdefinitie.

    Het ontwerpraster is verborgen en het tabblad SQL-weergaveobject wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    ALTER TABLE Auto's KOLOMVOORWAARDE TOEVOEGEN TEKST(10)

  4. Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.

Naar boven

Indexen maken

Als u een index voor een bestaande tabel wilt maken, gebruikt u de opdracht INDEX MAKEN. Een CREATE INDEX-opdracht heeft de volgende syntaxis:

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

De enige vereiste elementen zijn de opdracht INDEX MAKEN, de naam van de index, het argument ON, de naam van de tabel met de velden die u wilt indexeren en de lijst met velden die in de index moeten worden opgenomen.

  • Het argument DESC zorgt ervoor dat de index in aflopende volgorde wordt gemaakt. Dit kan handig zijn als u vaak query's uitvoert die zoeken naar de hoogste waarden voor het geïndexeerde veld of die het geïndexeerde veld in aflopende volgorde sorteren. Standaard wordt een index in oplopende volgorde gemaakt.

  • Het argument WITH PRIMARY stelt het geïndexeerde veld of de geïndexeerde velden vast als de primaire sleutel van de tabel.

  • Het argument WITH DISALLOW NULL zorgt ervoor dat de index vereist dat er een waarde wordt ingevoerd voor het geïndexeerde veld. Null-waarden zijn dus niet toegestaan.

Stel dat u een tabel hebt met de naam Auto's met velden waarin de naam, het jaar, de prijs en de staat worden opgeslagen van gebruikte auto's die u overweegt te kopen. Stel ook dat de tabel groot is geworden en dat u het veld jaar vaak opneemt in query's. U kunt een index maken voor het veld Jaar om uw query's sneller resultaten te laten retourneren met behulp van de volgende procedure:

  1. Klik op het tabblad Maken in de groep Macro's & Code op Queryontwerp.

  2. Klik op het tabblad Ontwerp in de groep Querytype op Gegevensdefinitie.

    Het ontwerpraster is verborgen en het tabblad SQL-weergaveobject wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    CREATE INDEX YearIndex ON Cars (Jaar)

  4. Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.

Naar boven

Een beperking of relatie maken

Met een beperking wordt een logische voorwaarde ingesteld waaraan een veld of combinatie van velden moet voldoen wanneer waarden worden ingevoegd. Een UNIEKE beperking voorkomt bijvoorbeeld dat het beperkte veld een waarde accepteert die een bestaande waarde voor het veld zou dupliceren.

Een relatie is een type beperking dat verwijst naar de waarden van een veld of een combinatie van velden in een andere tabel om te bepalen of een waarde kan worden ingevoegd in het beperkte veld of een combinatie van velden. U gebruikt geen speciaal trefwoord om aan te geven dat een beperking een relatie is.

Als u een beperking wilt maken, gebruikt u een CONSTRAINT-component in de opdracht CREATE TABLE of ALTER TABLE. Er zijn twee soorten CONSTRAINT-components: een voor het maken van een beperking voor één veld en een andere voor het maken van een beperking voor meerdere velden.

Beperkingen voor één veld

Een component CONSTRAINT met één veld volgt onmiddellijk de definitie van het veld dat wordt beperkt en heeft de volgende syntaxis:

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

Stel dat u een tabel hebt met de naam Auto's met velden waarin de naam, het jaar, de prijs en de staat worden opgeslagen van gebruikte auto's die u overweegt te kopen. Stel ook dat u vaak vergeet een waarde in te voeren voor de staat van de auto en dat u deze informatie altijd wilt vastleggen. U kunt een beperking voor het veld Voorwaarde maken waardoor u het veld niet leeg kunt laten met behulp van de volgende procedure:

  1. Klik op het tabblad Maken in de groep Macro's & Code op Queryontwerp.

  2. Klik op het tabblad Ontwerp in de groep Querytype op Gegevensdefinitie.

    Het ontwerpraster is verborgen en het tabblad SQL-weergaveobject wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    ALTER TABLE Auto's ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.

Stel nu dat u na een tijdje merkt dat er veel vergelijkbare waarden in het veld Voorwaarde staan die hetzelfde moeten zijn. Sommige auto's hebben bijvoorbeeld de waarde Voorwaarde slecht en andere de waarde slecht.

Opmerking: Als u de overige procedures wilt volgen, voegt u valse gegevens toe aan de tabel Auto's die u in de voorgaande stappen hebt gemaakt.

Nadat u de waarden hebt opgeschoond zodat ze consistenter zijn, kunt u een tabel maken met de naam CarCondition, met één veld, met de naam Voorwaarde, dat alle waarden bevat die u wilt gebruiken voor de voorwaarde van auto's:

  1. Klik op het tabblad Maken in de groep Macro's & Code op Queryontwerp.

  2. Klik op het tabblad Ontwerp in de groep Querytype op Gegevensdefinitie.

    Het ontwerpraster is verborgen en het tabblad SQL-weergaveobject wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    CREATE TABLE CarCondition (Voorwaarde TEKST(10))

  4. Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.

  5. Maak een primaire sleutel voor de tabel met behulp van de instructie ALTER TABLE:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Als u de waarden uit het veld Voorwaarde van de tabel Auto's wilt invoegen in de nieuwe tabel CarCondition, typt u de volgende SQL in het objecttabblad SQL-weergave:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Opmerking: De SQL-instructie in deze stap is een toevoegquery. In tegenstelling tot een gegevensdefinitiequery eindigt een toevoegquery met een puntkomma.

  7. Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.

Een relatie maken met behulp van een beperking

Als u wilt vereisen dat een nieuwe waarde die wordt ingevoegd in het veld Voorwaarde van de tabel Auto's, overeenkomt met een waarde van het veld Voorwaarde in de tabel AutoCondition, kunt u vervolgens een relatie maken tussen AutoCondition en Auto's in het veld Met de naam Voorwaarde, met behulp van de volgende procedure:

  1. Klik op het tabblad Maken in de groep Macro's & Code op Queryontwerp.

  2. Klik op het tabblad Ontwerp in de groep Querytype op Gegevensdefinitie.

    Het ontwerpraster is verborgen en het tabblad SQL-weergaveobject wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    ALTER TABLE Auto's ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)

  4. Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.

Beperkingen voor meerdere velden

Een component CONSTRAINT met meerdere velden kan alleen buiten een velddefinitie-component worden gebruikt en heeft de volgende syntaxis:

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

Bekijk een ander voorbeeld waarin de tabel Auto's wordt gebruikt. Stel dat u er zeker van wilt zijn dat geen twee records in de tabel Auto's dezelfde set waarden hebben voor Naam, Jaar, Voorwaarde en Prijs. U kunt een UNIEKE beperking maken die van toepassing is op deze velden, met behulp van de volgende procedure:

  1. Klik op het tabblad Maken in de groep Macro's & Code op Queryontwerp.

  2. Klik op het tabblad Ontwerp in de groep Querytype op Gegevensdefinitie.

    Het ontwerpraster is verborgen en het tabblad SQL-weergaveobject wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    ALTER TABLE Auto's ADD CONSTRAINT NoDupes UNIQUE (naam, jaar, voorwaarde, prijs)

  4. Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.

Naar boven

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.