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 definitiequery's beschreven en wordt uitgelegd hoe u hiermee tabellen, beperkingen, indexen en relaties maakt. Dit artikel helpt u ook om te 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 gebruikt om databaseobjecten te maken, wijzigen of verwijderen.
Opmerking
Data Definition Language (DDL) maakt deel uit van Structured Query Language (SQL).
Definitiequery's kunnen erg handig zijn. U kunt regelmatig delen van uw databaseschema verwijderen en opnieuw maken door enkele query's uit te voeren. U kunt een definitiequery gebruiken als u bekend bent met SQL-instructies en van plan bent bepaalde tabellen, beperkingen, indexen of relaties te verwijderen en opnieuw te maken.
Waarschuwing
Het gebruik van definitiequery's om databaseobjecten te wijzigen kan riskant zijn, omdat de acties niet gepaard gaan met bevestigingsdialoogvensters. Als u een fout maakt, kunnen gegevens verloren gaan of onbedoeld het ontwerp van een tabel worden gewijzigd. Wees voorzichtig wanneer u een definitiequery gebruikt om objecten in de database te wijzigen. Als u niet verantwoordelijk bent voor het onderhoud van de database die u gebruikt, dient u contact op te nemen met de beheerder van de database voordat u een definitiequery uitvoert.
Belangrijk
Maak een back-up van de betrokken tabellen voordat u een definitiequery 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 | Een kolom of een beperking toevoegen aan een tabel. |
| COLUMN | Te gebruiken met ADD, ALTER of DROP |
| CONSTRAINT | Te gebruiken met ADD, ALTER of DROP |
| INDEX | Gebruiken met CREATE |
| TABLE | Te gebruiken met ALTER, CREATE of DROP |
Naar boven
Een tabel maken of wijzigen
Gebruik de opdracht CREATE TABLE om een tabel te maken. Een opdracht TABEL MAKEN 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 opdracht CREATE TABLE zijn de opdracht CREATE TABLE zelf en de naam van de tabel, maar meestal zult u enkele velden of andere aspecten van de tabel willen definiëren. Beschouw dit eenvoudige voorbeeld.
Stel dat u een tabel wilt maken met de naam, het jaar en de prijs van tweedehands auto's die u overweegt te kopen. U wilt maximaal 30 tekens voor de naam en 4 tekens voor het jaar toestaan. Ga als volgt te werk om de tabel te maken met een definitiequery:
Opmerking
Het is mogelijk dat u eerst de inhoud van de database moet inschakelen om een definitiequery te kunnen uitvoeren:
- Klik op de berichtenbalk op Inhoud inschakelen.
Een tabel maken
- Klik op het tabblad Maken , in de groep Macro's & code , op Queryontwerp.
- Klik op het tabblad Ontwerpen in de groep Querytype op Gegevensdefinitie.
Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven. - Typ de volgende SQL-instructie:
CREATE TABLE Auto's (Naam TEKST(30), Jaar TEKST(4), Prijs VALUTA) - Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.
Een tabel wijzigen
Als u een tabel wilt wijzigen, gebruikt u een ALTER TABLE-opdracht. U kunt de opdracht ALTER TABLE gebruiken om kolommen of beperkingen toe te voegen, te wijzigen of te verwijderen (te verwijderen). Een opdracht ALTER TABLE heeft de volgende syntaxis:
ALTER TABLE table_name predicate
waarbij predicaat een van de volgende waarden 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 staat van elke auto op te slaan. U kunt het volgende doen:
- Klik op het tabblad Maken , in de groep Macro's & code , op Queryontwerp.
- Klik op het tabblad Ontwerpen in de groep Querytype op Gegevensdefinitie.
Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven. - Typ de volgende SQL-instructie:
ALTER TABLE Auto's KOLOM TOEVOEGEN Voorwaarde TEKST(10) - Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.
Naar boven
Indexen maken
Gebruik de opdracht CREATE INDEX om een index te maken op basis van een bestaande tabel. Een opdracht Index maken 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 moeten worden opgenomen in de index.
- Het argument DESC zorgt ervoor dat de index wordt gemaakt in aflopende volgorde, wat handig kan zijn als u vaak query's uitvoert die zoeken naar top-waarden voor het geïndexeerde veld of die het geïndexeerde veld in aflopende volgorde sorteren. Een index wordt standaard in oplopende volgorde gemaakt.
- Met het argument MET PRIMAIR worden het geïndexeerde veld of de geïndexeerde velden ingesteld als de primaire sleutel van de tabel.
- Het argument WITH DISALLOW NULL heeft tot gevolg dat in de index wordt vereist dat een waarde wordt ingevoerd voor het geïndexeerde veld. Dit betekent dat null-waarden niet zijn 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 de tweedehands auto's die u overweegt te kopen. Stel ook dat de tabel groot is geworden en dat u het jaarveld vaak in query's opneemt. Als u ervoor wilt zorgen dat query's sneller resultaten opleveren, kunt u de volgende procedure gebruiken om een index op het veld Jaar te maken:
- Klik op het tabblad Maken , in de groep Macro's & code , op Queryontwerp.
- Klik op het tabblad Ontwerpen in de groep Querytype op Gegevensdefinitie.
Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven. - Typ de volgende SQL-instructie:
CREATE INDEX YearIndex ON Cars (Year) - 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 waaraan een veld of een combinatie van velden moet voldoen wanneer er waarden worden ingevoegd. Een UNIQUE-beperking voorkomt bijvoorbeeld dat het veld met beperkingen een waarde accepteert die een bestaande waarde voor het veld dupliceert.
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 veld of een combinatie van velden met beperkingen. 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 een opdracht CREATE TABLE of ALTER TABLE. Er zijn twee soorten CONSTRAINT-componenten: een om een beperking voor een enkel veld in te stellen en een om een beperking voor meerdere velden in te stellen.
Beperkingen voor één veld
Een CONSTRAINT-component met één veld volgt onmiddellijk na de definitie van het veld dat erdoor 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 de tweedehands 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 noteren. U kunt een beperking op het veld Voorwaarde maken om te voorkomen dat het veld leeg blijft. Voer de volgende procedure uit:
- Klik op het tabblad Maken , in de groep Macro's & code , op Queryontwerp.
- Klik op het tabblad Ontwerpen in de groep Querytype op Gegevensdefinitie.
Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven. - Typ de volgende SQL-instructie:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL - Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.
Stel nu dat er na verloop van tijd veel vergelijkbare waarden in het veld Voorwaarde staan die normaal gezien hetzelfde zouden moeten zijn. Sommige auto's hebben bijvoorbeeld de waarde Conditie van slecht en andere auto's hebben bijvoorbeeld de waarde slecht.
Opmerking
Als u de resterende procedures wilt uitvoeren, voegt u enkele valse gegevens toe aan de tabel Auto's die u in voorgaande stappen hebt gemaakt.
Nadat u de waarden hebt aangepast zodat ze consistenter zijn, kunt u een tabel maken met de naam CarCondition en één veld, Condition genaamd, dat alle waarden bevat die u wilt gebruiken voor de conditie van auto's:
Klik op het tabblad Maken , in de groep Macro's & code , op Queryontwerp.
Klik op het tabblad Ontwerpen in de groep Querytype op Gegevensdefinitie.
Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven.Typ de volgende SQL-instructie:
CREATE TABLE CarCondition (Condition TEXT(10))Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.
Maak een primaire sleutel voor de tabel met behulp van de instructie ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEYAls u de waarden uit het veld Conditie van de tabel Auto's in de nieuwe tabel CarCondition wilt invoegen, typt u de volgende SQL op 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 toevoegquery met een puntkomma.
Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.
Een relatie maken met een beperking
Als u wilt dat elke nieuwe waarde die wordt ingevoegd in het veld Conditie van de tabel Auto's overeenkomt met een waarde van het veld Voorwaarde in de tabel AutoConditie, kunt u vervolgens een relatie maken tussen AutoConditie en Auto's op basis van het veld Voorwaarde met behulp van de volgende procedure:
- Klik op het tabblad Maken , in de groep Macro's & code , op Queryontwerp.
- Klik op het tabblad Ontwerpen in de groep Querytype op Gegevensdefinitie.
Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven. - Typ de volgende SQL-instructie:
ALTER TABLE Cars ALTER COLUMN Condition TEKSTBEPERKING FKeyCondition REFERENCES CarCondition (voorwaarde) - Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.
Beperkingen voor meerdere velden
Een CONSTRAINT-component met meerdere velden kan alleen buiten een velddefinitiecomponent 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, waarin de tabel Auto's wordt gebruikt. Stel dat u er zeker van wilt zijn dat twee records in de tabel Auto's niet dezelfde set waarden hebben voor Naam, Jaar, Staat en Prijs. U kunt een UNIQUE-beperking maken die van toepassing is op deze velden, door de volgende procedure uit te voeren:
- Klik op het tabblad Maken , in de groep Macro's & code , op Queryontwerp.
- Klik op het tabblad Ontwerpen in de groep Querytype op Gegevensdefinitie.
Het ontwerpraster is verborgen en het objecttabblad van de SQL-weergave wordt weergegeven. - Typ de volgende SQL-instructie:
ALTER TABLE Auto's ADD CONSTRAINT NoDupes UNIQUE (naam, jaar, staat, prijs) - Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.
Naar boven