Tabele, ograničenja, indekse i relacije možete da kreirate i izmenite u programu Access tako što ćete upisati upite za definisanje podataka u SQL prikazu. Ovaj članak objašnjava upite za definisanje podataka i kako da ih koristite za kreiranje tabela, ograničenja, indeksa i relacija. Ovaj članak vam takođe može pomoći da odlučite kada da koristite upit za definisanje podataka.
U ovom članku:
Pregled
Za razliku od drugih Access upita, upit za definisanje podataka ne preuzima podatke. Umesto toga, upit za definisanje podataka koristi jezik definicije podataka za kreiranje, izmenu ili brisanje objekata baze podataka.
Napomena: Data Definition Language (DDL) je deo structured Query Language (SQL).
Upiti za definisanje podataka mogu biti veoma praktični. Samo pokretanjem nekih upita možete redovno da brišete i ponovo kreirate delove šeme baze podataka. Razmotrite korišćenje upita za definisanje podataka ako ste upoznati sa SQL izrazima i planirate da izbrišete i ponovo kreirate određene tabele, ograničenja, indekse ili relacije.
Upozorenje: Korišćenje upita za definisanje podataka za izmenu objekata baze podataka može biti rizično zato što se radnje ne prate u dijalozima za potvrdu. Ako pogrešite, možete da izgubite podatke ili da nenamerno promenite dizajn tabele. Budite pažljivi kada koristite upit za definisanje podataka da biste izmenili objekte u bazi podataka. Ako niste odgovorni za održavanje baze podataka koju koristite, trebalo bi da se obratite administratoru baze podataka pre nego što pokrenete upit za definisanje podataka.
Važno: Napravite rezervnu kopiju svih uključenih tabela pre nego što pokrenete upit za definisanje podataka.
DDL ključne reči
Ključna reč |
Upotrebite |
CREATE |
Kreirajte indeks ili tabelu koja već ne postoji. |
ALTER |
Izmenite postojeću tabelu ili kolonu. |
DROP |
Izbrišite postojeću tabelu, kolonu ili ograničenje. |
ADD |
Dodajte kolonu ili ograničenje u tabelu. |
COLUMN |
Koristi se uz ADD, ALTER ili DROP |
CONSTRAINT |
Koristi se uz ADD, ALTER ili DROP |
INDEX |
Koristi se uz CREATE |
TABLE |
Koristi se uz ALTER, CREATE ili DROP |
Kreiranje ili izmena tabele
Da biste kreirali tabelu, koristite komandu KREIRAJ TABELU. Komanda CREATE TABLE ima sledeću sintaksu:
CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
Jedini neophodni elementi komande CREATE TABLE jesu sama komanda KREIRAJ TABELA i ime tabele, ali obično ćete želeti da definišete neka polja ili druge aspekte tabele. Razmislite o ovom jednostavnom primeru.
Recimo da želite da napravite tabelu za skladištenje imena, godine i cene korišćenih automobila koje razmatrate za kupovinu. Želite da dozvolite do 30 znakova za ime i 4 znaka za godinu. Da biste koristili upit za definisanje podataka za kreiranje tabele, uradite sledeće:
Napomena: Možda ćete prvo morati da omogućite sadržaj baze podataka da bi upit za definisanje podataka bio pokrenut:
-
Na traci sa porukama kliknite na dugme Omogući sadržaj.
Kreiranje tabele
-
Na kartici Kreiranje, u grupi Makroi & kôd izaberite stavku Dizajn upita.
-
Na kartici Dizajn , u grupi Tip upita kliknite na dugme Definicija podataka.
Koordinatna mreža dizajna je skrivena i prikazuje se kartica objekta SQL prikaza.
-
Otkucajte sledeći SQL izraz:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Izmena tabele
Da biste izmenili tabelu, koristite komandu ALTER TABLE. Možete da koristite komandu ALTER TABLE da biste dodali, izmenili ili otpustili (uklonili) kolone ili ograničenja. Komanda ALTER TABLE ima sledeću sintaksu:
ALTER TABLE table_name predicate
gde predikat može da bude nešto od sledeć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 da dodate tekstualno polje od 10 znakova za skladištenje informacija o stanju svakog automobila. Možete da uradite sledeće:
-
Na kartici Kreiranje, u grupi Makroi & kôd izaberite stavku Dizajn upita.
-
Na kartici Dizajn , u grupi Tip upita kliknite na dugme Definicija podataka.
Koordinatna mreža dizajna je skrivena i prikazuje se kartica objekta SQL prikaza.
-
Otkucajte sledeći SQL izraz:
ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Kreiranje indeksa
Da biste kreirali indeks u postojećoj tabeli, koristite komandu CREATE INDEX. Komanda CREATE INDEX ima sledeću sintaksu:
CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]
Jedini potrebni elementi su komanda CREATE INDEX, ime indeksa, argument ON, ime tabele koja sadrži polja koja želite da indeksirate i lista polja koja će biti uključena u indeks.
-
Argument DESC uzrokuje kreiranje indeksa opadajućim redosledom, što može biti korisno ako često pokrećete upite koji traže najviše vrednosti za indeksirano polje ili koji sortiraju indeksirano polje opadajućim redosledom. Indeks se podrazumevano kreira rastućim redosledom.
-
Argument WITH PRIMARY uspostavlja indeksirana polja kao primarni ključ tabele.
-
Argument WITH DISALLOW NULL uzrokuje da indeks zahteva da se unese vrednost za indeksirano polje – to jesti prazne vrednosti nisu dozvoljene.
Pretpostavimo da imate tabelu pod imenom "Automobili" sa poljima koja skladišti ime, godinu, cenu i uslov korišćenih automobila koje razmatrate za kupovinu. Pretpostavimo i da je tabela postala velika i da često uključujete polje godine u upite. Možete da napravite indeks u polju Godina da biste pomogli upitima da brže vraćaju rezultate pomoću sledeće procedure:
-
Na kartici Kreiranje, u grupi Makroi & kôd izaberite stavku Dizajn upita.
-
Na kartici Dizajn , u grupi Tip upita kliknite na dugme Definicija podataka.
Koordinatna mreža dizajna je skrivena i prikazuje se kartica objekta SQL prikaza.
-
Otkucajte sledeći SQL izraz:
CREATE INDEX YearIndex ON Cars (Year)
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Kreiranje ograničenja ili relacije
Ograničenje uspostavlja logički uslov koji polje ili kombinacija polja moraju da ispunjavaju kada se umetnu vrednosti. Na primer, ograničenje UNIQUE sprečava ograničeno polje da prihvati vrednost koja bi duplirana postojeću vrednost za polje.
Relacija je tip ograničenja koji se odnosi na vrednosti polja ili kombinacije polja u drugoj tabeli kako bi se utvrdilo da li se vrednost može umetnuti u ograničeno polje ili kombinaciju polja. Specijalnu ključnu reč ne koristite da biste naznačili da je ograničenje relacija.
Da biste kreirali ograničenje, koristite odredbu CONSTRAINT u komandama CREATE TABLE ili ALTER TABLE. Postoje dve vrste odredbi CONSTRAINT: jedna za kreiranje ograničenja za jedno polje i druga za kreiranje ograničenja za više polja.
Ograničenja za jedno polje
Odredba CONSTRAINT sa jednim poljem odmah sledi definiciju polja koje ograničava i ima sledeć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 tabelu pod imenom "Automobili" sa poljima koja skladišti ime, godinu, cenu i uslov korišćenih automobila koje razmatrate za kupovinu. Pretpostavimo i da često zaboravite da unesete vrednost za stanje automobila i da uvek želite da snimite ove informacije. Možete da kreirate ograničenje za polje Uslov koje vas sprečava da ostavite polje prazno koristeći sledeću proceduru:
-
Na kartici Kreiranje, u grupi Makroi & kôd izaberite stavku Dizajn upita.
-
Na kartici Dizajn , u grupi Tip upita kliknite na dugme Definicija podataka.
Koordinatna mreža dizajna je skrivena i prikazuje se kartica objekta SQL prikaza.
-
Otkucajte sledeći SQL izraz:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Pretpostavimo da posle određenog vremena primetite da u polju Uslov postoji mnogo sličnih vrednosti koje bi trebalo da budu iste. Na primer, neki automobili imaju lošu vrednost uslova , dok drugi imaju lošu vrednost.
Napomena: Ako želite da pratite preostale procedure, dodajte neke lažne podatke u tabelu "Automobili" koje ste kreirali u prethodnom koraku.
Kada očistite vrednosti tako da one bude doslednije, možete da napravite tabelu pod imenom "CarCondition" sa jednim poljem pod imenom "Uslov" koja sadrži sve vrednosti koje želite da koristite za stanje automobila:
-
Na kartici Kreiranje, u grupi Makroi & kôd izaberite stavku Dizajn upita.
-
Na kartici Dizajn , u grupi Tip upita kliknite na dugme Definicija podataka.
Koordinatna mreža dizajna je skrivena i prikazuje se kartica objekta SQL prikaza.
-
Otkucajte sledeći SQL izraz:
CREATE TABLE CarCondition (Condition TEXT(10))
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
-
Kreiranje primarnog ključa za tabelu pomoću izraza ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY
-
Da biste umetnuli vrednosti iz polja Uslov tabele "Automobili" u novu CarCondition tabelu, otkucajte sledeći SQL na kartici objekta SQL prikaza:
INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;
Napomena: SQL izraz u ovom koraku je upit za dodavanje. Za razliku od upita za definisanje podataka, upit za dodavanje završava se tačkom i zarezom.
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Kreiranje relacije pomoću ograničenja
Da biste zahtevali da se svaka nova vrednost umetnuta u polje Uslov tabele "Automobili" podudara sa vrednošću polja "Uslov" u tabeli "CarCondition", možete da kreirate relaciju između kolona CarCondition i Automobili na polju pod imenom Uslov, koristeći sledeću proceduru:
-
Na kartici Kreiranje, u grupi Makroi & kôd izaberite stavku Dizajn upita.
-
Na kartici Dizajn , u grupi Tip upita kliknite na dugme Definicija podataka.
Koordinatna mreža dizajna je skrivena i prikazuje se kartica objekta SQL prikaza.
-
Otkucajte sledeći SQL izraz:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Uslov)
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Ograničenja za više polja
Odredba CONSTRAINT sa više polja može da se koristi samo izvan odredbe definicije polja i ima sledeć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}]}
Razmotrite drugi primer koji koristi tabelu "Automobili". Recimo da želite da proverite da li dva zapisa u tabeli "Automobili" imaju isti skup vrednosti za polja "Ime", "Godina", "Uslov" i "Cena". Možete da kreirate jedinstveno ograničenje koje se primenjuje na ova polja pomoću sledeće procedure:
-
Na kartici Kreiranje, u grupi Makroi & kôd izaberite stavku Dizajn upita.
-
Na kartici Dizajn , u grupi Tip upita kliknite na dugme Definicija podataka.
Koordinatna mreža dizajna je skrivena i prikazuje se kartica objekta SQL prikaza.
-
Otkucajte sledeći SQL izraz:
ALTER TABLE Automobili ADD CONSTRAINT NoDupes UNIQUE (ime, godina, uslov, cena)
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.