Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

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 pomoći i pri odlučivanju o korištenju upita 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 definicije podataka za stvaranje, izmjenu ili brisanje objekata baze podataka.

Napomena: Jezik definicije podataka (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 samo pokretanjem nekih upita. Razmislite o korištenju upita s definicijom podataka ako ste upoznati sa SQL naredbama i 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 biti riskantno jer akcije nisu popraćene dijaloškim okvirima za potvrdu. Ako pogriješite, možete izgubiti podatke ili nehotice promijeniti dizajn tablice. Budite oprezni prilikom korištenja upita s definicijom 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: Stvorite sigurnosnu kopiju svih tablica koje su uključene prije pokretanja upita s definicijom podataka.

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

Izbrišite postojeću tablicu, stupac ili ograničenje.

ADD

Dodajte stupac ili ograničenje u tablicu.

COLUMN

Koristi se s dodacima ADD, ALTER ili DROP

CONSTRAINT

Koristi se s dodacima ADD, ALTER ili DROP

INDEX

Koristi se uz CREATE

TABLE

Koristi se uz ALTER, CREATE ili DROP

Vrh stranice

Stvaranje ili izmjena tablice

Da biste stvorili tablicu, koristite naredbu CREATE TABLE. Naredba CREATE TABLE sadrži 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 CREATE TABLE su naredba CREATE TABLE i naziv tablice, ali obično ćete htjeti definirati neka polja ili druge aspekte tablice. Razmislite o ovom jednostavnom primjeru.

Pretpostavimo da želite stvoriti tablicu za pohranu naziva, godine i cijene korištenih automobila koje razmatrate za kupnju. Želite dopustiti do 30 znakova za naziv i 4 znaka za godinu. Da biste za stvaranje tablice koristili upit s definicijom podataka, učinite sljedeće:

Napomena: Možda ćete najprije morati omogućiti sadržaj baze podataka da bi se mogao pokrenuti upit s definicijom podataka:

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

Stvaranje tablice

  1. Na kartici Stvaranje u grupi Makronaredbe & klikniteDizajn upita.

  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.

    Rešetka dizajna je skrivena, a prikazuje se kartica objekta SQL prikaza.

  3. Upišite sljedeću SQL naredbu:

    CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)

  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 sadrži sljedeću sintaksu:

ALTER TABLE table_name predicate

gdje predikat 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 da biste pohranjeli informacije o stanju svakog automobila. Možete učiniti sljedeće:

  1. Na kartici Stvaranje u grupi Makronaredbe & klikniteDizajn upita.

  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.

    Rešetka dizajna je skrivena, a prikazuje se kartica objekta SQL prikaza.

  3. Upišite sljedeću SQL naredbu:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Vrh stranice

Stvaranje indeksa

Da biste stvorili indeks na postojećoj tablici, koristite naredbu CREATE INDEX. Naredba CREATE INDEX 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 CREATE INDEX, 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žiti najveće vrijednosti za indeksirano polje ili to sortiranje indeksiranog polja silaznim redoslijedom. Indeks se po zadanom stvara uzlaznim redoslijedom.

  • Argument WITH PRIMARY utvrđuje indeksirana polja kao primarni ključ tablice.

  • Argument WITH DISALLOW NULL uzrokuje da indeks zahtijeva unos vrijednosti za indeksirano polje , to jest, vrijednosti null nisu dopuštene.

Pretpostavimo da imate tablicu pod nazivom Automobili s poljima koja pohranjuju naziv, godinu, cijenu i stanje korištenih automobila koje razmatrate za kupnju. Pretpostavimo i da je tablica postala velika te da često u upite uvrstite polje godine. Pomoću sljedećeg postupka možete stvoriti indeks u polju Godina da bi upiti brže vraćali rezultate:

  1. Na kartici Stvaranje u grupi Makronaredbe & klikniteDizajn upita.

  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.

    Rešetka dizajna je skrivena, a prikazuje se kartica objekta SQL prikaza.

  3. Upišite sljedeću SQL naredbu:

    CREATE INDEX YearIndex na automobilima (godina)

  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Vrh stranice

Stvaranje ograničenja ili odnosa

Ograničenje uspostavlja 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 duplicirana postojeću vrijednost za polje.

Odnos je vrsta ograničenja koja se odnosi na vrijednosti polja ili kombinaciju polja u drugoj tablici da bi se utvrdilo 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 naredbi CREATE TABLE ili ALTER TABLE. Postoje dvije vrste uvjeta CONSTRAINT: jedan za stvaranje ograničenja na jednom polju, a drugi za stvaranje ograničenja na više polja.

Ograničenja jednostrukog polja

Uvjet CONSTRAINT s jednim poljem odmah slijedi definiciju polja koje ograničava i sadrži 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 koja pohranjuju naziv, godinu, cijenu i stanje korištenih automobila koje razmatrate za kupnju. Pretpostavimo i da često zaboravite unesite vrijednost stanja automobila te da uvijek želite zabilježiti te podatke. Na polju Uvjet možete stvoriti ograničenje koje sprječava ostavljanje polja praznim pomoću sljedećeg postupka:

  1. Na kartici Stvaranje u grupi Makronaredbe & klikniteDizajn upita.

  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.

    Rešetka dizajna je skrivena, a prikazuje se kartica objekta SQL prikaza.

  3. Upišite sljedeću SQL naredbu:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Pretpostavimo da nakon vremena primijetite da u polju Uvjet postoji mnogo sličnih vrijednosti koje bi trebale biti iste. Na primjer, neki od automobila imaju vrijednost Uvjeta loših, 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.

Kada očistite vrijednosti tako da su dosljednije, možete stvoriti tablicu pod nazivom CarCondition s jednim poljem s nazivom Uvjet, koja sadrži sve vrijednosti koje želite koristiti za stanje automobila:

  1. Na kartici Stvaranje u grupi Makronaredbe & klikniteDizajn upita.

  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.

    Rešetka dizajna je skrivena, a prikazuje se kartica objekta SQL prikaza.

  3. Upišite sljedeću SQL naredbu:

    CREATE TABLE CarCondition (Uvjet TEXT(10))

  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

  5. Stvorite primarni ključ za tablicu pomoću naredbe ALTER TABLE:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Da biste u novu tablicu CarCondition umetnuli vrijednosti iz polja Uvjet tablice Automobili, upišite sljedeći SQL u karticu objekta SQL prikaza:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Napomena: SQL naredba u ovom koraku je dodavanje upita. 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 zahtijevali da se bilo koja nova vrijednost umetnuta u polje Uvjet tablice Automobili podudara s vrijednošću polja Uvjet u tablici CarCondition, zatim možete stvoriti odnos između carCondition i Cars u polju s nazivom Uvjet pomoću sljedećeg postupka:

  1. Na kartici Stvaranje u grupi Makronaredbe & klikniteDizajn upita.

  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.

    Rešetka dizajna je skrivena, a prikazuje se kartica objekta SQL prikaza.

  3. Upišite sljedeću SQL naredbu:

    ALTER TABLE Automobili ALTER COLUMN UVJET TEKST CONSTRAINT FKeyCondition REFERENCE CarCondition (uvjet)

  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Ograničenja višestrukih polja

Uvjet CONSTRAINT s 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}]}

Razmislite o drugom primjeru koji koristi tablicu Automobili. Pretpostavimo da želite biti sigurni da u tablici Automobili nema dva zapisa isti skup vrijednosti za naziv, godinu, uvjet i cijenu. Pomoću sljedećeg postupka možete stvoriti ograničenje UNIQUE koje se odnosi na ta polja:

  1. Na kartici Stvaranje u grupi Makronaredbe & klikniteDizajn upita.

  2. Na kartici Dizajn u grupi Vrsta upita kliknite Definicija podataka.

    Rešetka dizajna je skrivena, a prikazuje se kartica objekta SQL prikaza.

  3. Upišite sljedeću SQL naredbu:

    ALTER TABLE Automobili DODAJ CONSTRAINT čvorove UNIQUE (naziv, godina, uvjet, cijena)

  4. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Vrh stranice

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×