U kunt tabellen, beperkingen, indexen en relaties in Access maken en wijzigen door definitiequery's te schrijven in de SQL-weergave. In dit artikel wordt uitgelegd hoe u definitiequery's kunt maken en hoe u hiermee tabellen, beperkingen, indexen en relaties kunt maken. In dit artikel kunt u ook bepalen wanneer u een definitiequery moet gebruiken.

In dit artikel

Overzicht

In tegenstelling tot andere Access-query's worden met een definitiequery geen gegevens opgehaald. In plaats daarvan wordt in een definitiequery Data Definition Language databaseobjecten gemaakt, gewijzigd of verwijderd.

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

Definitiequery's kunnen erg handig zijn. U kunt onderdelen van uw databaseschema regelmatig verwijderen en opnieuw maken door enkele query's uit te uitvoeren. Overweeg om een definitiequery te gebruiken als u bekend bent met SQL-instructies en bepaalde tabellen, beperkingen, indexen of relaties wilt verwijderen en opnieuw wilt maken.

Waarschuwing: Het kan riskant zijn om definitiequery's te gebruiken om databaseobjecten te wijzigen, 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 definitiequery 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 definitiequery uitvoert.

Belangrijk: Maak een back-up van alle tabellen die betrokken zijn voordat u een definitiequery uitvoert.

DDL-trefwoorden

Trefwoord

Gebruiken

CREATE

Maak een index of tabel die nog niet bestaat.

ALTER

Wijzig een bestaande tabel of kolom.

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 de opdracht CREATE TABLE 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. Kijk eens naar dit eenvoudige voorbeeld.

Stel dat u een tabel wilt maken voor de opslag van de naam, het jaar en de prijs van gebruikte auto's die u overweegt voor aankoop. U wilt maximaal 30 tekens voor de naam en 4 tekens voor het jaar toestaan. Ga als volgt te werk om een definitiequery te gebruiken om de tabel te maken:

Opmerking: Mogelijk moet u eerst de inhoud van de database inschakelen om een definitiequery te kunnen uitvoeren:

  • Klik op de berichtenbalk op Inhoud inschakelen.

Een tabel maken

  1. Klik op het tabblad Maken in de groep Macro'& opQueryontwerp.

  2. Klik op het tabblad Ontwerpen in de groep Querytype op Definitie.

    Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave 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 de opdracht ALTER TABLE gebruiken om kolommen of beperkingen toe te voegen, te wijzigen of neer te zetten (te verwijderen). De opdracht ALTER TABLE heeft de volgende syntaxis:

ALTER TABLE table_name predicate

waarbij het predicaat een van de volgende opties 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 tien tekens wilt toevoegen om informatie over de voorwaarde van elke auto op te slaan. U kunt het volgende doen:

  1. Klik op het tabblad Maken in de groep Macro'& opQueryontwerp.

  2. Klik op het tabblad Ontwerpen in de groep Querytype op Definitie.

    Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(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 CREATE INDEX. De opdracht CREATE INDEX 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 CREATE INDEX, 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 regelmatig query's opvraagt die naar hoogste waarden voor het geïndexeerde veld zoeken of die het geïndexeerde veld in aflopende volgorde sorteren. Standaard wordt een index in oplopende volgorde gemaakt.

  • Met het argument WITH PRIMARY wordt het geïndexeerde veld of de geïndexeerde velden als primaire sleutel tabel vastgesteld.

  • Met het argument WITH DISALLOW NULL wordt vereist dat er een waarde wordt ingevoerd voor het geïndexeerde veld, dat wil zeggen dat null-waarden niet zijn toegestaan.

Stel dat u een tabel hebt met de naam Auto's met velden die de naam, het jaar, de prijs en de voorwaarde van gebruikte auto's opslaan die u overweegt om te kopen. Stel dat de tabel groot is geworden en dat u het jaarveld vaak in query's op neem. U kunt een index maken voor het veld Year om uw query's te helpen resultaten sneller te retourneren met behulp van de volgende procedure:

  1. Klik op het tabblad Maken in de groep Macro'& opQueryontwerp.

  2. Klik op het tabblad Ontwerpen in de groep Querytype op Definitie.

    Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave 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 een relatie maken

Met een beperking stelt u een logische voorwaarde in waar een veld of een combinatie van velden aan moet voldoen wanneer waarden worden ingevoegd. Met een UNIQUE-beperking wordt bijvoorbeeld voorkomen dat het beperkte veld een waarde accepteert waardoor een bestaande waarde voor het veld wordt gedupliceerd.

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 voor het maken van een beperking voor meerdere velden.

Beperkingen voor één veld

De component CONSTRAINT voor één veld volgt onmiddellijk na 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 die de naam, het jaar, de prijs en de voorwaarde van gebruikte auto's opslaan die u overweegt om te kopen. Stel dat u vaak vergeet een waarde in te geven voor de voorwaarde van de auto en dat u deze gegevens altijd wilt registreren. U kunt met de volgende procedure een beperking maken voor het veld Voorwaarde om te voorkomen dat u het veld leeg laat:

  1. Klik op het tabblad Maken in de groep Macro'& opQueryontwerp.

  2. Klik op het tabblad Ontwerpen in de groep Querytype op Definitie.

    Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    ALTER TABLE Cars 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 het veld Voorwaarde veel vergelijkbare waarden heeft die hetzelfde moeten zijn. Sommige auto's hebben bijvoorbeeld de waarde Voorwaarde van slecht en andere hebben de waarde slecht.

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

Nadat u de waarden zo hebt opsschoond dat deze consistenter zijn, kunt u een tabel met de naam CarCondition maken met één veld met de naam Voorwaarde, dat alle waarden bevat die u wilt gebruiken voor de autovoorwaarde:

  1. Klik op het tabblad Maken in de groep Macro'& opQueryontwerp.

  2. Klik op het tabblad Ontwerpen in de groep Querytype op Definitie.

    Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    CREATE TABLE CarCondition (voorwaardeTEKST(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 van de SQL-weergave:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Opmerking: De SQL-instructie in deze stap is een toevoegquery. In tegenstelling tot een definitiequery eindigt een append-query 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 dat elke 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 CarCondition, kunt u vervolgens een relatie maken tussen CarCondition en Auto's in het veld Voorwaarde met behulp van de volgende procedure:

  1. Klik op het tabblad Maken in de groep Macro'& opQueryontwerp.

  2. Klik op het tabblad Ontwerpen in de groep Querytype op Definitie.

    Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    ALTER TABLE Cars ALTER COLUMN CONDITION TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (voorwaarde)

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

Beperkingen voor meerdere velden

Een CONSTRAINT-component voor meerdere velden kan alleen buiten een velddefinitieclausule 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}]}

Kijk eens naar een ander voorbeeld met de tabel Auto's. Stel dat u ervoor wilt zorgen dat geen twee records in de tabel Auto's dezelfde set waarden hebben voor Naam, Jaar, Voorwaarde en Prijs. U kunt met de volgende procedure een UNIQUE-beperking maken die van toepassing is op deze velden:

  1. Klik op het tabblad Maken in de groep Macro'& opQueryontwerp.

  2. Klik op het tabblad Ontwerpen in de groep Querytype op Definitie.

    Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven.

  3. Typ de volgende SQL-instructie:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (name, year, condition, price)

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

Naar boven

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Hoe tevreden bent u met de vertaalkwaliteit?
Wat heeft uw ervaring beïnvloed?

Bedankt voor uw feedback.

×