Crearea sau modificarea tabelelor sau indexurilor utilizând o interogare de definiție date

Se aplică la
Access pentru Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Aveți posibilitatea să creați și să modificați tabele, restricții, indexuri și relații în Access scriind interogări de definire a datelor în Vizualizarea SQL. Acest articol explică interogările de definire de date și cum să le utilizați pentru a crea tabele, restricții, indexuri și relații. De asemenea, acest articol vă poate ajuta să decideți când să utilizați o interogare de definiție de date.

În acest articol

Prezentare generală

Spre deosebire de alte interogări Access, o interogare de definiție date nu regăsește date. În schimb, o interogare de definiție de date utilizează Limbajul de definiție a datelor pentru a crea, a modifica sau a șterge obiecte ale bazei de date.

Notă

DDL (Data Definition Language) face parte din Limbaj de interogare structurat (SQL).

Interogările de definire de date pot fi foarte convenabile. Puteți să ștergeți și să creați regulat din nou părți ale schemei bazei de date, rulând doar câteva interogări. Luați în considerare utilizarea unei interogări de definiție de date dacă sunteți familiarizat cu instrucțiunile SQL și intenționați să ștergeți și să creați din nou anumite tabele, restricții, indexuri sau relații.

Avertisment

Utilizarea interogărilor de definire de date pentru a modifica obiectele bazei de date poate fi riscantă, deoarece acțiunile nu sunt însoțite de casete de dialog de confirmare. Dacă faceți o greșeală, puteți să pierdeți date sau să modificați din greșeală proiectarea unui tabel. Fiți atent atunci când utilizați o interogare de definiție de date pentru a modifica obiectele din baza de date. Dacă nu sunteți responsabil pentru întreținerea bazei de date pe care o utilizați, trebuie să vă consultați cu administratorul bazei de date înainte să rulați o interogare de definiție de date.

Important

Faceți o copie backup a tuturor tabelelor implicate înainte să rulați o interogare de definiție de date.

Cuvinte cheie DDL

Cuvânt cheie Utilizați
CREATE Creați un index sau un tabel care nu există deja.
ALTER Modificați un tabel sau o coloană existentă.
DROP Ștergeți un tabel, o coloană sau o restricție existentă.
ADD Adăugați o coloană sau o restricție la un tabel.
COLUMN Utilizarea cu ADD, ALTER sau DROP
CONSTRAINT Utilizarea cu ADD, ALTER sau DROP
INDEX Utilizați cu CREATE
TABLE Utilizarea cu ALTER, CREATE sau DROP

Începutul paginii

Crearea sau modificarea unui tabel

Pentru a crea un tabel, utilizați o comandă CREARE TABEL. O comandă CREARE TABEL are următoarea sintaxă:

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

Singurele elemente obligatorii ale unei comenzi CREARE TABEL sunt comanda CREARE TABEL în sine și numele tabelului, dar, de obicei, se recomandă să definiți unele câmpuri sau alte aspecte ale tabelului. Luați în considerare acest exemplu simplu.

Să presupunem că doriți să creați un tabel pentru a stoca numele, anul și prețul mașinilor rulate pe care le luați în considerare pentru cumpărare. Doriți să permiteți până la 30 de caractere pentru nume și 4 caractere pentru an. Pentru a utiliza o interogare de definiție date pentru a crea tabelul, procedați astfel:

Notă

Poate fi necesar mai întâi să activați conținutul bazei de date pentru ca o interogare de definiție de date să ruleze:

  • În Bara de mesaje, faceți clic pe Activare conținut.

Crearea unui tabel

  1. Pe fila Creare , în grupul Macrocomenzi & Cod, faceți clic pe Proiectare interogare.
  2. Pe fila Proiectare , în grupul Tip interogare , faceți clic pe Definiție date.
    Grila de proiectare este ascunsă și se afișează fila obiect a vizualizării SQL.
  3. Tastați următoarea instrucțiune SQL:
    CREATE TABLE Mașini (Nume TEXT(30), An TEXT(4), Preț VALUTĂ)
  4. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Modificarea unui tabel

Pentru a modifica un tabel, utilizați o comandă ALTER TABLE. Puteți utiliza o comandă ALTER TABLE pentru a adăuga, a modifica sau a elimina (elimina) coloane sau restricții. O comandă ALTER TABLE are următoarea sintaxă:

ALTER TABLE table_name predicate

Predicatul where poate fi oricare dintre următoarele:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Să presupunem că doriți să adăugați un câmp text de 10 caractere pentru a stoca informații despre starea fiecărei mașini. Puteți face următoarele lucruri:

  1. Pe fila Creare , în grupul Macrocomenzi & Cod, faceți clic pe Proiectare interogare.
  2. Pe fila Proiectare , în grupul Tip interogare , faceți clic pe Definiție date.
    Grila de proiectare este ascunsă și se afișează fila obiect a vizualizării SQL.
  3. Tastați următoarea instrucțiune SQL:
    ALTER TABLE Mașini ADĂUGARE COLOANĂ Condiție TEXT(10)
  4. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Începutul paginii

Crearea unui index

Pentru a crea un index într-un tabel existent, utilizați comanda CREATE INDEX. O comandă CREATE INDEX are următoarea sintaxă:

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

Singurele elemente obligatorii sunt comanda CREATE INDEX, numele indexului, argumentul ON, numele tabelului care conține câmpurile pe care doriți să le indexați și lista de câmpuri de inclus în index.

  • Argumentul DESC determină crearea indexului în ordine descendentă, ceea ce poate fi util dacă rulați frecvent interogări care caută valori de top pentru câmpul indexat sau care sortează câmpul indexat în ordine descendentă. În mod implicit, un index este creat în ordine crescătoare.
  • Argumentul WITH PRIMARY stabilește câmpul sau câmpurile indexate drept cheie primară a tabelului.
  • Argumentul WITH DISALLOW NULL face ca indexul să solicite introducerea unei valori pentru câmpul indexat, mai exact, valorile nule nu sunt permise.

Să presupunem că aveți un tabel denumit Mașini cu câmpuri care stochează numele, anul, prețul și starea mașinilor rulate pe care le luați în considerare pentru cumpărare. De asemenea, să presupunem că tabelul a devenit mare și că includeți frecvent câmpul an în interogări. Aveți posibilitatea să creați un index în câmpul An pentru a vă ajuta interogările să returneze rezultate mai rapid, utilizând următoarea procedură:

  1. Pe fila Creare , în grupul Macrocomenzi & Cod, faceți clic pe Proiectare interogare.
  2. Pe fila Proiectare , în grupul Tip interogare , faceți clic pe Definiție date.
    Grila de proiectare este ascunsă și se afișează fila obiect a vizualizării SQL.
  3. Tastați următoarea instrucțiune SQL:
    CREATE INDEX YearIndex ON Mașini (an)
  4. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Începutul paginii

Crearea unei restricții sau a unei relații

O restricție stabilește o condiție logică pe care trebuie să o îndeplinească un câmp sau o combinație de câmpuri atunci când se inserează valori. De exemplu, o restricție UNIQUE împiedică câmpul restricționat să accepte o valoare care ar dubla o valoare existentă pentru câmp.

O relație este un tip de restricție care se referă la valorile unui câmp sau ale unei combinații de câmpuri din alt tabel pentru a determina dacă o valoare poate fi inserată în câmpul restricționat sau în combinația de câmpuri. Nu utilizați un cuvânt cheie special pentru a indica faptul că o restricție este o relație.

Pentru a crea o restricție, utilizați o clauză CONSTRAINT într-o comandă CREATE TABLE sau ALTER TABLE. Există două tipuri de clauze CONSTRAINT: una pentru a crea o restricție pentru un singur câmp și alta pentru a crea o restricție pentru mai multe câmpuri.

Restricții pentru un singur câmp

O clauză CONSTRAINT cu un singur câmp urmează imediat definiția câmpului pe care îl restricționează și are următoarea sintaxă:

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

Să presupunem că aveți un tabel denumit Mașini cu câmpuri care stochează numele, anul, prețul și starea mașinilor rulate pe care le luați în considerare pentru cumpărare. De asemenea, să presupunem că uitați frecvent să introduceți o valoare pentru starea mașinii și că doriți întotdeauna să înregistrați aceste informații. Aveți posibilitatea să creați o restricție asupra câmpului Condiție care să vă împiedice să lăsați câmpul necompletat, utilizând următoarea procedură:

  1. Pe fila Creare , în grupul Macrocomenzi & Cod, faceți clic pe Proiectare interogare.
  2. Pe fila Proiectare , în grupul Tip interogare , faceți clic pe Definiție date.
    Grila de proiectare este ascunsă și se afișează fila obiect a vizualizării SQL.
  3. Tastați următoarea instrucțiune SQL:
    Mașini ALTER TABLE Condiție ALTER COLOANĂ TEXT CONSTRAINT ConditionRequired NOT NULL
  4. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Acum, să presupunem că, după un timp, observați că există mai multe valori similare în câmpul Condiție care ar trebui să fie identice. De exemplu, unele mașini au valoarea condiției slab și altele au valoarea rău.

Notă

Dacă doriți să urmați procedurile rămase, adăugați câteva date false la tabelul Mașini pe care l-ați creat în pașii precedenți.

După ce curățați valorile astfel încât să fie mai consistente, puteți crea un tabel, numit CarCondition, cu un singur câmp, numit Condition, care conține toate valorile pe care doriți să le utilizați pentru starea mașinilor:

  1. Pe fila Creare , în grupul Macrocomenzi & Cod, faceți clic pe Proiectare interogare.

  2. Pe fila Proiectare , în grupul Tip interogare , faceți clic pe Definiție date.
    Grila de proiectare este ascunsă și se afișează fila obiect a vizualizării SQL.

  3. Tastați următoarea instrucțiune SQL:
    CREATE TABLE CarCondition (Condition TEXT(10))

  4. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

  5. Creați o cheie primară pentru tabel utilizând o instrucțiune ALTER TABLE:
    ALTER TABLE CarCondition ALTER COLOANĂ CONDIȚIE TEXT RESTRICȚIE TEXT CarConditionPK CHEIE PRIMARĂ CARConditionPK

  6. Pentru a insera valorile din câmpul Condiție din tabelul Mașini în noul tabel CarCondition, tastați următorul SQL în fila obiect a vizualizării SQL:
    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Notă

    Instrucțiunea SQL din acest pas este o interogare de adăugare. Spre deosebire de o interogare de definiție de date, o interogare de adăugare se termină prin punct și virgulă.

  7. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Crearea unei relații utilizând o restricție

Pentru a solicita ca orice valoare nouă inserată în câmpul Condiție din tabelul Mașini să se potrivească cu o valoare a câmpului Condiție din tabelul Condiție coșoară, aveți posibilitatea să creați o relație între Condiție auto și Mașini în câmpul denumit Condiție, utilizând procedeul următor:

  1. Pe fila Creare , în grupul Macrocomenzi & Cod, faceți clic pe Proiectare interogare.
  2. Pe fila Proiectare , în grupul Tip interogare , faceți clic pe Definiție date.
    Grila de proiectare este ascunsă și se afișează fila obiect a vizualizării SQL.
  3. Tastați următoarea instrucțiune SQL:
    ALTER TABLE Mașini ALTER COLOANĂ Condiție TEXT CONSTRAINT FKeyCondition REFERINȚE CarCondition (Condition)
  4. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Restricții pentru mai multe câmpuri

O clauză CONSTRAINT cu mai multe câmpuri poate fi utilizată numai în afara unei clauze de definire a câmpului și are următoarea sintaxă:

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

Luați în considerare alt exemplu care utilizează tabelul Cars. Să presupunem că doriți să vă asigurați că două înregistrări din tabelul Mașini nu au același set de valori pentru Nume, An, Condiție și Preț. Puteți crea o restricție UNIQUE care se aplică la aceste câmpuri, utilizând următoarea procedură:

  1. Pe fila Creare , în grupul Macrocomenzi & Cod, faceți clic pe Proiectare interogare.
  2. Pe fila Proiectare , în grupul Tip interogare , faceți clic pe Definiție date.
    Grila de proiectare este ascunsă și se afișează fila obiect a vizualizării SQL.
  3. Tastați următoarea instrucțiune SQL:
    ALTER TABLE Mașini ADD CONSTRAINT NoDupes UNIQUE (nume, an, condiție, preț)
  4. Pe fila Proiectare, în grupul Rezultate, faceți clic pe Rulare.

Începutul paginii