Du kan skapa och ändra tabeller, villkor, index och relationer i Access genom att skriva datadefinitionsfrågor i SQL-vyn. I den här artikeln förklaras datadefinitionsfrågor och hur du använder dem för att skapa tabeller, villkor, index och relationer. Den här artikeln kan också hjälpa dig att avgöra när du ska använda en datadefinitionsfråga.
Artikelinnehåll
Översikt
Till skillnad från andra Access-frågor hämtas inte data i en datadefinitionsfråga. I stället använder en datadefinitionsfråga datadefinitionsspråk för att skapa, ändra eller ta bort databasobjekt.
Obs!: DDL (Data Definition Language) är en del av SQL (Structured Query Language).
Datadefinitionsfrågor kan vara mycket praktiska. Du kan regelbundet ta bort och återskapa delar av databasschemat genom att köra vissa frågor. Överväg att använda en datadefinitionsfråga om du är bekant med SQL-uttryck och planerar att ta bort och återskapa vissa tabeller, villkor, index eller relationer.
Varning!: Det kan vara riskabelt att använda datadefinitionsfrågor för att ändra databasobjekt, eftersom åtgärderna inte åtföljs av bekräftelsedialogrutor. Om du gör ett misstag kan du förlora data eller oavsiktligt ändra designen för en tabell. Var försiktig när du använder en datadefinitionsfråga för att ändra objekt i databasen. Om du inte ansvarar för att underhålla databasen som du använder bör du kontakta databasadministratören innan du kör en datadefinitionsfråga.
Viktigt!: Skapa en säkerhetskopia av alla tabeller som ingår innan du kör en datadefinitionsfråga.
DDL-nyckelord
Nyckelord |
Användning |
CREATE |
Skapa ett index eller en tabell som inte redan finns. |
ALTER |
Ändra en befintlig tabell eller kolumn. |
DROP |
Ta bort en befintlig tabell, kolumn eller begränsning. |
ADD |
Lägga till en kolumn eller ett villkor i en tabell. |
COLUMN |
Använd med ADD, ALTER eller DROP |
CONSTRAINT |
Använd med ADD, ALTER eller DROP |
INDEX |
Använda med CREATE |
TABLE |
Använd med ALTER, CREATE eller DROP |
Skapa eller ändra en tabell
Om du vill skapa en tabell använder du kommandot SKAPA TABELL. Kommandot CREATE TABLE har följande syntax:
CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
De enda obligatoriska elementen i kommandot CREATE TABLE är själva kommandot CREATE TABLE och namnet på tabellen, men vanligtvis vill du definiera vissa fält eller andra aspekter av tabellen. Tänk på det här enkla exemplet.
Anta att du vill skapa en tabell för att lagra namn, år och pris för begagnade bilar som du funderar på att köpa. Du vill tillåta upp till 30 tecken för namnet och 4 tecken för året. Så här skapar du tabellen med hjälp av en datadefinitionsfråga:
Obs!: Du kan först behöva aktivera innehållet i databasen för att en datadefinitionsfråga ska kunna köras:
-
Klicka på Aktivera innehåll i meddelandefältet.
Skapa en tabell
-
Klicka på Frågedesign i gruppen Makron & kod på fliken Skapa.
-
Klicka på Datadefinition i gruppen Frågetyp på fliken Design.
Designrutnätet är dolt och sql-vyns objektflik visas.
-
Skriv följande SQL-uttryck:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
-
Klicka på Kör i gruppen Resultat på fliken Design.
Ändra en tabell
Om du vill ändra en tabell använder du kommandot ALTER TABLE. Du kan använda kommandot ALTER TABLE för att lägga till, ändra eller släppa (ta bort) kolumner eller villkor. Kommandot ALTER TABLE har följande syntax:
ALTER TABLE table_name predicate
där predikat kan vara något av följande:
ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
ADD CONSTRAINT multifield_constraint
ALTER COLUMN field type[(size)]
DROP COLUMN field
DROP CONSTRAINT constraint
Anta att du vill lägga till ett textfält på 10 tecken för att lagra information om skicket för varje bil. Du kan göra följande:
-
Klicka på Frågedesign i gruppen Makron & kod på fliken Skapa.
-
Klicka på Datadefinition i gruppen Frågetyp på fliken Design.
Designrutnätet är dolt och sql-vyns objektflik visas.
-
Skriv följande SQL-uttryck:
ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
-
Klicka på Kör i gruppen Resultat på fliken Design.
Skapa ett index
Om du vill skapa ett index för en befintlig tabell använder du kommandot CREATE INDEX. Kommandot CREATE INDEX har följande syntax:
CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]
De enda obligatoriska elementen är kommandot CREATE INDEX, indexets namn, argumentet ON, namnet på tabellen som innehåller de fält som du vill indexera och listan med fält som ska ingå i indexet.
-
Argumentet DESC gör att indexet skapas i fallande ordning, vilket kan vara användbart om du ofta kör frågor som letar efter de högsta värdena för det indexerade fältet eller som sorterar det indexerade fältet i fallande ordning. Som standard skapas ett index i stigande ordning.
-
Argumentet WITH PRIMARY anger det indexerade fältet eller fälten som tabellens primärnyckel.
-
Argumentet WITH DISALLOW NULL gör att indexet kräver att ett värde anges för det indexerade fältet , det vill: null-värden är inte tillåtna.
Anta att du har en tabell med namnet Bilar med fält som innehåller namn, år, pris och villkor för begagnade bilar som du funderar på att köpa. Anta också att tabellen har blivit stor och att du ofta tar med fältet år i frågor. Du kan skapa ett index i fältet År för att hjälpa dina frågor att returnera resultat snabbare med hjälp av följande procedur:
-
Klicka på Frågedesign i gruppen Makron & kod på fliken Skapa.
-
Klicka på Datadefinition i gruppen Frågetyp på fliken Design.
Designrutnätet är dolt och sql-vyns objektflik visas.
-
Skriv följande SQL-uttryck:
CREATE INDEX YearIndex ON Cars (År)
-
Klicka på Kör i gruppen Resultat på fliken Design.
Skapa ett villkor eller en relation
Ett villkor anger ett logiskt villkor som ett fält eller en kombination av fält måste uppfylla när värden infogas. Ett UNIQUE-villkor hindrar till exempel det begränsade fältet från att acceptera ett värde som skulle duplicera ett befintligt värde för fältet.
En relation är en typ av villkor som refererar till värdena i ett fält eller en kombination av fält i en annan tabell för att avgöra om ett värde kan infogas i det begränsade fältet eller en kombination av fält. Du använder inte ett särskilt nyckelord för att ange att ett villkor är en relation.
Om du vill skapa ett villkor använder du en CONSTRAINT-sats i kommandot CREATE TABLE eller ALTER TABLE. Det finns två typer av CONSTRAINT-satser: en för att skapa ett villkor för ett enstaka fält och en annan för att skapa ett villkor för flera fält.
Villkor för ett fält
En CONSTRAINT-sats med ett fält följer omedelbart definitionen av det fält som det begränsar och har följande syntax:
CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
Anta att du har en tabell med namnet Bilar med fält som innehåller namn, år, pris och villkor för begagnade bilar som du funderar på att köpa. Anta också att du ofta glömmer att ange ett värde för bilens tillstånd och att du alltid vill registrera den här informationen. Du kan skapa ett villkor för villkorsfältet som hindrar dig från att lämna fältet tomt genom att använda följande procedur:
-
Klicka på Frågedesign i gruppen Makron & kod på fliken Skapa.
-
Klicka på Datadefinition i gruppen Frågetyp på fliken Design.
Designrutnätet är dolt och sql-vyns objektflik visas.
-
Skriv följande SQL-uttryck:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL
-
Klicka på Kör i gruppen Resultat på fliken Design.
Anta nu att du efter ett tag märker att det finns många liknande värden i fältet Villkor som ska vara samma. Vissa bilar har till exempel ett villkorsvärde för dåligt och andra har ett värde av dåligt.
Obs!: Om du vill följa de återstående procedurerna lägger du till falska data i tabellen Bilar som du skapade i föregående steg.
När du har rensat värdena så att de blir mer konsekventa kan du skapa en tabell med namnet CarCondition, med ett fält med namnet Villkor, som innehåller alla värden som du vill använda för bilar:
-
Klicka på Frågedesign i gruppen Makron & kod på fliken Skapa.
-
Klicka på Datadefinition i gruppen Frågetyp på fliken Design.
Designrutnätet är dolt och sql-vyns objektflik visas.
-
Skriv följande SQL-uttryck:
CREATE TABLE CarCondition (Condition TEXT(10))
-
Klicka på Kör i gruppen Resultat på fliken Design.
-
Skapa en primärnyckel för tabellen med hjälp av instruktionen ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMÄRNYCKEL
-
Om du vill infoga värdena från fältet Villkor i tabellen Bilar i den nya CarCondition-tabellen skriver du in följande SQL på sql-vyobjektfliken:
INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;
Obs!: SQL-uttrycket i det här steget är en lägg till fråga. Till skillnad från en datadefinitionsfråga slutar en tilläggsfråga med semikolon.
-
Klicka på Kör i gruppen Resultat på fliken Design.
Skapa en relation med hjälp av ett villkor
Om du vill kräva att ett nytt värde som infogats i fältet Villkor i tabellen Bilar matchar värdet i fältet Villkor i tabellen CarCondition, kan du sedan skapa en relation mellan CarCondition och Cars i fältet Villkor genom att använda följande procedur:
-
Klicka på Frågedesign i gruppen Makron & kod på fliken Skapa.
-
Klicka på Datadefinition i gruppen Frågetyp på fliken Design.
Designrutnätet är dolt och sql-vyns objektflik visas.
-
Skriv följande SQL-uttryck:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)
-
Klicka på Kör i gruppen Resultat på fliken Design.
Villkor för flera fält
En CONSTRAINT-sats med flera fält kan endast användas utanför en fältdefinitionssats och har följande syntax:
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}]}
Överväg ett annat exempel som använder tabellen Bilar. Anta att du vill se till att inga två poster i tabellen Bilar har samma uppsättning värden för Namn, År, Villkor och Pris. Du kan skapa ett UNIQUE-villkor som gäller för dessa fält genom att använda följande procedur:
-
Klicka på Frågedesign i gruppen Makron & kod på fliken Skapa.
-
Klicka på Datadefinition i gruppen Frågetyp på fliken Design.
Designrutnätet är dolt och sql-vyns objektflik visas.
-
Skriv följande SQL-uttryck:
ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (namn, år, villkor, pris)
-
Klicka på Kör i gruppen Resultat på fliken Design.