Stvaranje i mijenjanje tablica i indeksa putem upita s definicijom podataka

Primjenjuje se na
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Tablice, ograničenja, indekse i odnose u programu Access možete stvarati i mijenjati pisanjem upita za definiranje podataka u SQL prikazu. U ovom se članku objašnjavaju upiti za definiranje podataka i njihovo korištenje za stvaranje tablica, ograničenja, indeksa i odnosa. Ovaj vam članak može i pojednostavniti donošenje odluke kada koristiti upit za definiranje podataka.

Sadržaj članka

Pregled

Za razliku od drugih upita programa Access, upit za definiranje podataka ne dohvaća podatke. Umjesto toga, upit za definiranje podataka koristi jezik za definiranje podataka za stvaranje, izmjenu i brisanje objekata baze podataka.

Napomena

Data Definition Language (DDL) dio je jezika Structured Query Language (SQL).

Upiti za definiranje podataka mogu biti vrlo praktični. Dijelove sheme baze podataka možete redovito brisati i ponovno stvarati jednostavnim pokretanjem nekih upita. Upit za definiranje podataka razmislite ako ste upoznati sa SQL naredbama te planirate izbrisati i ponovno stvoriti određene tablice, ograničenja, indekse ili odnose.

Upozorenje

Korištenje upita za definiranje podataka za izmjenu objekata baze podataka može predstavljati rizik jer akcije nisu popraćene dijaloškim okvirima za potvrdu. Ako pogriješite, možete izgubiti podatke ili nehotice promijeniti dizajn tablice. Budite oprezni kada koristite upit za definiranje podataka za izmjenu objekata u bazi podataka. Ako niste odgovorni za održavanje baze podataka koju koristite, prije pokretanja upita za definiranje podataka obratite se administratoru baze podataka.

Važno

Prije pokretanja upita za definiranje podataka stvorite sigurnosnu kopiju svih uključenih tablica.

Ključne riječi za DDL

Ključna riječ Koristite značajku
CREATE Stvorite indeks ili tablicu koja još ne postoji.
ALTER Izmijenite postojeću tablicu ili stupac.
DROP Brisanje postojeće tablice, stupca ili ograničenja.
ADD Dodajte stupac ili ograničenje u tablicu.
COLUMN Korištenje s funkcijama ADD, ALTER i DROP
CONSTRAINT Korištenje s funkcijama ADD, ALTER i DROP
INDEX Korištenje sa značajkom CREATE
TABLE Korištenje s funkcijama ALTER, CREATE i DROP

Vrh stranice

Stvaranje i izmjena tablice

Da biste stvorili tablicu, koristite naredbu STVORI TABLICU. Naredba STVORI TABLICU ima sljedeću sintaksu:

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

Jedini obavezni elementi naredbe STVORI TABLICU su sama naredba STVORI TABLICU i naziv tablice, no obično ćete morati definirati neka polja ili druge aspekte tablice. Proučite ovaj jednostavan primjer.

Pretpostavimo da želite stvoriti tablicu u kojoj će biti pohranjeni naziv, godina i cijena rabljenih automobila koje razmatrate za kupnju. Želite dopustiti do 30 znakova za ime i 4 znaka za godinu. Da biste za stvaranje tablice koristili upit s definicijom podataka, učinite sljedeće:

Napomena

Najprije je potrebno omogućiti sadržaj baze podataka da bi se pokrenuo upit za definiciju podataka:

  • Na traci za poruke kliknite Omogući sadržaj.

Stvaranje tablice

  1. Na kartici Stvaranje u grupi Makronaredbe & Kod kliknite Dizajn upita.
  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.
    Rešetka dizajna bit će skrivena i prikazat će se kartica objekata SQL prikaza.
  3. Upišite sljedeću SQL naredbu:
    CREATE TABLE Automobili (naziv TEXT(30), Year TEXT(4), CIJENA, VALUTA)
  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Izmjena tablice

Da biste izmijenili tablicu, koristite naredbu ALTER TABLE. Pomoću naredbe ALTER TABLE možete dodati, izmijeniti ili ispustiti (ukloniti) stupce ili ograničenja. Naredba ALTER TABLE ima sljedeću sintaksu:

ALTER TABLE table_name predicate

Predikat WHERE može biti bilo što od sljedećeg:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Pretpostavimo da želite dodati tekstno polje od 10 znakova u koje će biti pohranjene informacije o stanju svakog automobila. Možete učiniti sljedeće:

  1. Na kartici Stvaranje u grupi Makronaredbe & Kod kliknite Dizajn upita.
  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.
    Rešetka dizajna bit će skrivena i prikazat će se kartica objekata SQL prikaza.
  3. Upišite sljedeću SQL naredbu:
    ALTER TABLE Automobili UVJET DODAJ STUPAC TEXT(10)
  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Vrh stranice

Stvaranje indeksa

Da biste stvorili indeks u postojećoj tablici, koristite naredbu STVORI INDEKS. Naredba STVORI INDEKS sadrži sljedeću sintaksu:

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

Jedini obavezni elementi su naredba STVORI INDEKS, naziv indeksa, argument ON, naziv tablice koja sadrži polja koja želite indeksirati i popis polja koja će biti uvrštena u indeks.

  • Argument DESC uzrokuje stvaranje indeksa silaznim redoslijedom, što može biti korisno ako često pokrećete upite koji traže najveće vrijednosti za indeksirano polje ili koji silazno sortiraju indeksirano polje. Indeks se po zadanom stvara uzlaznim redoslijedom.
  • Argument WITH PRIMARY utvrđuje indeksirano polje ili polja kao primarni ključ tablice.
  • Argument WITH DISALLOW NULL uzrokuje da indeks zahtijeva unos vrijednosti za indeksirano polje, odnosno vrijednosti null nisu dopuštene.

Pretpostavimo da imate tablicu pod nazivom Automobili s poljima u kojima su pohranjeni naziv, godina, cijena i stanje rabljenih automobila koje razmatrate za kupnju. Pretpostavimo i da je tablica postala velika i da polje godine često umećete u upite. U polju Godina možete stvoriti indeks da bi upiti brže vratili rezultate pomoću sljedećeg postupka:

  1. Na kartici Stvaranje u grupi Makronaredbe & Kod kliknite Dizajn upita.
  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.
    Rešetka dizajna bit će skrivena i prikazat će se kartica objekata SQL prikaza.
  3. Upišite sljedeću SQL naredbu:
    CREATE INDEX YearIndex ON Automobili (godina)
  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Vrh stranice

Stvaranje ograničenja ili odnosa

Ograničenje utvrđuje logički uvjet koji polje ili kombinacija polja moraju zadovoljiti prilikom umetanja vrijednosti. Ograničenje UNIQUE, primjerice, sprječava ograničeno polje da prihvati vrijednost koja bi duplicirala postojeću vrijednost za polje.

Odnos je vrsta ograničenja koja se odnosi na vrijednosti polja ili kombinacije polja u drugoj tablici radi određivanja može li se vrijednost umetnuti u ograničeno polje ili kombinaciju polja. Ne koristite posebnu ključnu riječ da biste naznačili da je ograničenje odnos.

Da biste stvorili ograničenje, koristite uvjet CONSTRAINT u naredbama CREATE TABLE ili ALTER TABLE. Dvije su vrste uvjeta CONSTRAINT: jedan za stvaranje ograničenja na pojedinačnom polju, a drugi za stvaranje ograničenja na više polja.

Ograničenja pojedinačnog polja

Uvjet CONSTRAINT s jednim poljem izravno slijedi definiciju polja koje ograničava i ima sljedeću sintaksu:

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

Pretpostavimo da imate tablicu pod nazivom Automobili s poljima u kojima su pohranjeni naziv, godina, cijena i stanje rabljenih automobila koje razmatrate za kupnju. Pretpostavimo i da često zaboravljate unijeti vrijednost za stanje automobila te da uvijek želite zabilježiti tu informaciju. Za polje Uvjet možete stvoriti ograničenje koje onemogućuje da polje ostavite prazno pomoću sljedećeg postupka:

  1. Na kartici Stvaranje u grupi Makronaredbe & Kod kliknite Dizajn upita.
  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.
    Rešetka dizajna bit će skrivena i prikazat će se kartica objekata SQL prikaza.
  3. Upišite sljedeću SQL naredbu:
    ALTER TABLE Automobili ALTER COLUMN Uvjet TEXT CONSTRAINT ConditionRequired NOT NULL
  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Pretpostavimo da nakon nekog vremena u polju Uvjet postoji mnogo sličnih vrijednosti koje bi trebale biti iste. Na primjer, neki automobili imaju vrijednost uvjeta loše, a drugi imaju vrijednost loše.

Napomena

Ako želite slijediti preostale postupke, dodajte lažne podatke u tablicu Automobili koju ste stvorili u prethodnim koracima.

Nakon što očistite vrijednosti da bi bile dosljednije, možete stvoriti tablicu pod nazivom CarCondition s jednim poljem pod nazivom Uvjet koje sadrži sve vrijednosti koje želite koristiti za uvjet automobila:

  1. Na kartici Stvaranje u grupi Makronaredbe & Kod kliknite Dizajn upita.

  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.
    Rešetka dizajna bit će skrivena i prikazat će se kartica objekata SQL prikaza.

  3. Upišite sljedeću SQL naredbu:
    CREATE TABLE CarCondition (Condition TEXT(10))

  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

  5. Stvorite primarni ključ tablice pomoću naredbe ALTER TABLE:
    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Da biste umetnuli vrijednosti iz polja Uvjet tablice Automobili u novu tablicu CarCondition, na karticu objekta SQL prikaza upišite sljedeći SQL:
    INSERT INTO CarCondition SELECT DISTINCT uvjet FROM Automobili;

    Napomena

    SQL naredba u ovom koraku jest upit s dodavanjem. Za razliku od upita s definicijom podataka, upit s dodavanjem završava točkom sa zarezom.

  7. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Stvaranje odnosa pomoću ograničenja

Da biste postavili uvjet da se svaka nova vrijednost umetnuta u polje Uvjet u tablici Automobili podudara s vrijednosti polja Uvjet u tablici CarCondition, možete stvoriti odnos između CarCondition i CarCondition u polju pod nazivom Condition pomoću sljedećeg postupka:

  1. Na kartici Stvaranje u grupi Makronaredbe & Kod kliknite Dizajn upita.
  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.
    Rešetka dizajna bit će skrivena i prikazat će se kartica objekata SQL prikaza.
  3. Upišite sljedeću SQL naredbu:
    ALTER TABLE Automobili ALTER COLUMN UVJET TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (uvjet)
  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Ograničenja višestrukih polja

Uvjet CONSTRAINT za više polja može se koristiti samo izvan uvjeta definicije polja i sadrži sljedeću sintaksu:

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

Zamislite još jedan primjer u kojem se koristi tablica Automobili. Pretpostavimo da želite provjeriti da dva zapisa u tablici Automobili imaju isti skup vrijednosti za naziv, godinu, uvjet i cijenu. Ograničenje UNIQUE koje se primjenjuje na ta polja možete stvoriti pomoću sljedećeg postupka:

  1. Na kartici Stvaranje u grupi Makronaredbe & Kod kliknite Dizajn upita.
  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.
    Rešetka dizajna bit će skrivena i prikazat će se kartica objekata SQL prikaza.
  3. Upišite sljedeću SQL naredbu:
    ALTER TABLE Automobili ADD CONSTRAINT NoDupes UNIQUE (naziv, godina, uvjet, cijena)
  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Vrh stranice