Kreiranje ili izmena tabela ili indeksa pomoću upita za definisanje podataka

Tabele, ograničenja, indekse i relacije možete kreirati i izmeniti pisanjem upita za definisanje podataka u SQL prikazu.

Ovaj članak objašnjava upite za definisanje podataka i način njihovog korišćenja za kreiranje tabela, ograničenja, indeksa i relacija. Ovaj članak vam takođe može pomoći da odlučite kada ćete koristiti upit za definisanje podataka.

Napomena : Ove procedure nije moguće koristiti u Veb bazi podataka.

U ovom članku

Pregled

Kreiranje ili izmena tabele

Kreiranje indeksa

Kreiranje ograničenja ili relacije

Pregled

Za razliku od drugih upita, upit za definisanje podataka ne preuzima podatke. Umesto toga, upit za definisanje podataka koristi jezik za definisanje podataka da bi kreirao, izmenio ili izbrisao objekte baze podataka.

Napomena : Jezik za definisanje podataka (DDL) predstavlja deo jezika Structured Query Language (SQL).

Upiti za definisanje podataka mogu biti vrlo praktični. Jednostavnim pokretanjem nekih upita možete redovno brisati i ponovo kreirati delove šeme baze podataka. Razmislite o korišćenju upita za definisanje podataka ako poznajete SQL izraze i planirate da izbrišete i ponovo kreirate određene tabele, ograničenja, indekse ili relacije.

Upozorenje : Korišćenje upita za definisanje podataka radi izmene objekata baze podataka može biti rizično zato što radnje ne prate dijalozi za potvrdu. Ako napravite grešku, možete izgubiti podatke ili nenamerno promeniti dizajn tabele. Budite pažljivi kada upite za definisanje podataka koristite 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 pokretanja upita za definisanje podataka.

Važno : Napravite rezervnu kopiju svih uključenih tabela pre pokretanja upita za definisanje podataka.

DDL ključne reči

Ključna reč

Upotreba

CREATE

Kreiranje indeksa ili tabele koja ne postoji.

ALTER

Izmena postojeće tabele ili kolone.

DROP

Brisanje postojeće tabele, kolone ili ograničenja.

ADD

Dodavanje kolone ili ograničenja u tabelu.

COLUMN

Koristi se uz ključne reči ADD, ALTER ili DROP

CONSTRAINT

Koristi se uz ključne reči ADD, ALTER ili DROP

INDEX

Koristi se uz ključnu reč CREATE

TABLE

Koristi se uz ključne reči ALTER, CREATE ili DROP

Vrh stranice

Kreiranje ili izmena tabele

Za kreiranje tabele koristite komandu CREATE TABLE. 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 obavezni elementi komande CREATE TABLE su sama komanda CREATE TABLE i ime tabele, ali obično ćete želeti da definišete neka polja ili druge aspekte tabele. Razmislite o ovom jednostavnom primeru.

Pretpostavimo da želite da kreirate tabelu da biste uskladištili ime, godinu i cenu polovnih automobila o čijoj kupovini razmišljate. Želite da dozvolite najviše 30 znakova za ime i 4 znaka za godinu. Da biste za kreiranje tabele koristili upit za definisanje podataka, uradite sledeće:

Napomena : Možda ćete prvo morati da omogućite sadržaj baze podataka da bi upit za definisanje podataka mogao da se pokrene:

  • Na traci sa porukama kliknite na dugme Omogući sadržaj.

Kreiranje tabele

  1. Na kartici Kreiranje, u grupi Makroi i kôd kliknite na dugme Dizajn upita.

  2. Zatvorite dijalog Prikazivanje tabele.

  3. Na kartici Dizajn, u grupi Tip upita kliknite na dugme Definisanje podataka.

    Koordinatna mreža dizajna je skrivena, a prikazana je kartica objekta SQL prikaza.

  4. Otkucajte sledeći SQL izraz:

    CREATE TABLE Automobili (Ime TEXT(30), Godina TEXT(4), Cena CURRENCY)

  5. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Izmena tabele

Za izmenu tabele koristite komandu ALTER TABLE. Komandu ALTER TABLE možete koristiti za dodavanje, izmenu ili otpuštanje (uklanjanje) kolona ili ograničenja. Komanda ALTER TABLE ima sledeću sintaksu:

ALTER TABLE table_name predicate

pri čemu predicate može biti bilo šta 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 tekst od 10 znakova za skladištenje informacija o stanju svakog automobila. Možete da uradite sledeće:

  1. Na kartici Kreiranje, u grupi Makroi i kôd kliknite na dugme Dizajn upita.

  2. Zatvorite dijalog Prikazivanje tabele.

  3. Na kartici Dizajn, u grupi Tip upita kliknite na dugme Definisanje podataka.

    Koordinatna mreža dizajna je skrivena, a prikazana je kartica objekta SQL prikaza.

  4. Otkucajte sledeći SQL izraz:

    ALTER TABLE Automobili ADD COLUMN Stanje TEXT(10)

  5. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Vrh stranice

Kreiranje indeksa

Za kreiranje indeksa 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 obavezni elementi su sama 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 dovodi do kreiranja indeksa u opadajućem redosledu, što može biti korisno ako često pokrećete upite koji traže najveće vrednosti za indeksirano polje ili koji sortiraju indeksirano polje u opadajućem redosledu. Indeks se podrazumevano kreira u rastućem redosledu.

  • Argument WITH PRIMARY uspostavlja indeksirana polja kao primarni ključ tabele.

  • Argument WITH DISALLOW NULL dovodi do toga da indeks zahteva da se unese vrednost za indeksirano polje, tj. nisu dozvoljena polja bez vrednosti.

Pretpostavimo da imate tabelu pod imenom „Automobili“ sa poljima koja skladište ime, godinu, cenu i stanje polovnih automobila o čijoj kupovini razmišljate. Pretpostavimo takođe da je tabela postala velika i da u upite često uključujete polje za godinu. Da bi upiti brže davali rezultate, za polje „Godina“ možete kreirati indeks pomoću sledeće procedure:

  1. Na kartici Kreiranje, u grupi Makroi i kôd kliknite na dugme Dizajn upita.

  2. Zatvorite dijalog Prikazivanje tabele.

  3. Na kartici Dizajn, u grupi Tip upita kliknite na dugme Definisanje podataka.

    Koordinatna mreža dizajna je skrivena, a prikazana je kartica objekta SQL prikaza.

  4. Otkucajte sledeći SQL izraz:

    CREATE INDEX Indeks_Godina ON Automobili (Godina)

  5. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Vrh stranice

Kreiranje ograničenja ili relacije

Ograničenje uspostavlja logički uslov koji polje ili kombinacija polja moraju da ispune kada se umetnu vrednosti. Na primer, ograničenje UNIQUE sprečava ograničeno polje da primi vrednost koja bi duplirala postojeću vrednost za to polje.

Relacija predstavlja tip ograničenja koje upućuje na vrednosti polja ili kombinacije polja u drugoj tabeli da bi se utvrdilo da li je moguće umetnuti vrednost u ograničeno polje ili kombinaciju polja. Za ukazivanje na to da ograničenje predstavlja relaciju ne koristi se posebna ključna reč.

Za kreiranje ograničenja koristite odredbu CONSTRAINT u okviru komande CREATE TABLE ili ALTER TABLE. Postoje dve vrste odredbe CONSTRAINT: jedna za kreiranje ograničenja u jednom polju i druga za kreiranje ograničenja u više polja.

Ograničenja u jednom polju

Odredba CONSTRAINT za jedno polje trenutno prati 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šte ime, godinu, cenu i stanje polovnih automobila o čijoj kupovini razmišljate. Takođe pretpostavimo da često zaboravljate da unesete vrednost za stanje automobila, a da uvek želite da zapišete ove informacije. Pomoću sledeće procedure u polju „Stanje“ možete kreirati ograničenje koje će vas sprečavati da ostavite polje prazno:

  1. Na kartici Kreiranje, u grupi Makroi i kôd kliknite na dugme Dizajn upita.

  2. Zatvorite dijalog Prikazivanje tabele.

  3. Na kartici Dizajn, u grupi Tip upita kliknite na dugme Definisanje podataka.

    Koordinatna mreža dizajna je skrivena, a prikazana je kartica objekta SQL prikaza.

  4. Otkucajte sledeći SQL izraz:

    ALTER TABLE Automobili ALTER COLUMN Stanje TEXT CONSTRAINT StanjePotrebno NOT NULL

  5. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Sada pretpostavimo da, posle nekog vremena, primetite da u polju „Stanje“ postoji mnogo sličnih vrednosti koje bi trebalo da budu iste. Na primer, polje „Stanje“ za neke automobile ima vrednost loše, a za druge vrednost veoma loše.

Napomena : Ako želite da nastavite sa izvršavanjem preostalih procedura, dodajte neke lažne podatke u tabelu „Automobili“ koju ste kreirali u okviru prethodnih koraka.

Kada uredite vrednosti da bi bile doslednije, možete kreirati tabelu „Stanje automobila“ sa jednim poljem pod imenom „Stanje“ koja sadrži sve vrednosti koje želite da koristite za stanje automobila:

  1. Na kartici Kreiranje, u grupi Makroi i kôd kliknite na dugme Dizajn upita.

  2. Zatvorite dijalog Prikazivanje tabele.

  3. Na kartici Dizajn, u grupi Tip upita kliknite na dugme Definisanje podataka.

    Koordinatna mreža dizajna je skrivena, a prikazana je kartica objekta SQL prikaza.

  4. Otkucajte sledeći SQL izraz:

    CREATE TABLE Stanje automobila (Stanje TEXT(10))

  5. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

  6. Kreirajte primarni ključ za tabelu pomoću izraza ALTER TABLE:

    ALTER TABLE Stanje automobila ALTER COLUMN Stanje TEXT CONSTRAINT Stanje automobilaPK PRIMARY KEY

  7. Da biste vrednosti iz polja „Stanje“ tabele „Automobili“ umetnuli u novu tabelu „Stanje automobila“, na kartici objekta SQL prikaza otkucajte sledeći SQL izraz:

    INSERT INTO Stanje automobila SELECT DISTINCT Stanje FROM Automobili;

    Napomena : SQL izraz u ovom koraku predstavlja upit za dodavanje. Za razliku od upita za definisanje podataka, upit za dodavanje se završava tačkom i zarezom.

  8. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Kreiranje relacije pomoću ograničenja

Da biste zahtevali da se svaka nova vrednost koja se umetne u polje „Stanje“ tabele „Automobili“ podudara sa vrednošću polja „Stanje“ tabele „Stanje automobila“, u polju pod imenom „Stanje“ možete kreirati relaciju između tabela „Stanje automobila“ i „Automobili“ pomoću sledeće procedure:

  1. Na kartici Kreiranje, u grupi Makroi i kôd kliknite na dugme Dizajn upita.

  2. Zatvorite dijalog Prikazivanje tabele.

  3. Na kartici Dizajn, u grupi Tip upita kliknite na dugme Definisanje podataka.

    Koordinatna mreža dizajna je skrivena, a prikazana je kartica objekta SQL prikaza.

  4. Otkucajte sledeći SQL izraz:

    ALTER TABLE Automobili ALTER COLUMN Stanje TEXT CONSTRAINT FKeyStanje REFERENCES Stanje automobila (Stanje)

  5. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Ograničenja u više polja

Odredbu CONSTRAINT za više polja moguće je koristiti samo izvan odredbe za definisanje polja, a ona 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“. Pretpostavimo da želite da se uverite da u tabeli „Automobili“ ne postoje dva zapisa koja imaju isti skup vrednosti za polja „Ime“, „Godina“, „Stanje“ i „Cena“. Ograničenje UNIQUE koje se primenjuje na ova polja možete kreirati pomoću sledeće procedure:

  1. Na kartici Kreiranje, u grupi Makroi i kôd kliknite na dugme Dizajn upita.

  2. Zatvorite dijalog Prikazivanje tabele.

  3. Na kartici Dizajn, u grupi Tip upita kliknite na dugme Definisanje podataka.

    Koordinatna mreža dizajna je skrivena, a prikazana je kartica objekta SQL prikaza.

  4. Otkucajte sledeći SQL izraz:

    ALTER TABLE Automobili ADD CONSTRAINT NoDupes UNIQUE (Ime, Godina, Stanje, Cena)

  5. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Vrh stranice

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Office Insider korisnicima

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Zvuči da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×