Tabele, omejitve, indekse in relacije v Accessu lahko ustvarjate in spreminjate tako, da vnesete poizvedbe za definicijo podatkov v pogledu SQL. V tem članku so razložene poizvedbe za definicijo podatkov in kako jih uporabiti za ustvarjanje tabel, omejitev, indeksov in relacij. V tem članku se lahko tudi odločite, kdaj boste uporabili poizvedbo za definicijo podatkov.
V tem članku
Pregled
V nasprotju z drugimi Accessovmi poizvedbami poizvedba za definicijo podatkov ne pridobi podatkov. Poizvedba za definicijo podatkov uporablja jezik definicije podatkov za ustvarjanje, spreminjanje ali brisanje predmetov zbirke podatkov.
Opomba: Jezik za definicijo podatkov (DDL) je del jezika SQL (Structured Query Language).
Poizvedbe za definicijo podatkov so lahko zelo priročne. Dele sheme zbirke podatkov lahko redno brišete in znova ustvarjate le tako, da zaženete nekaj poizvedb. Če poznate izjave SQL in nameravate izbrisati in znova ustvariti določene tabele, omejitve, indekse ali relacije, razmislite o uporabi poizvedbe za definicijo podatkov.
Opozorilo: Uporaba poizvedb za definicijo podatkov za spreminjanje predmetov zbirke podatkov je lahko tvegana, ker dejanja ne spremljajo potrditvena pogovorna okna. Če se zmotite, lahko izgubite podatke ali nenamerno spremenite načrt tabele. Bodite previdni pri uporabi poizvedbe za definicijo podatkov za spreminjanje predmetov v zbirki podatkov. Če niste odgovorni za vzdrževanje zbirke podatkov, ki jo uporabljate, se pred zagonom poizvedbe za definicijo podatkov posvetujte s skrbnikom zbirke podatkov.
Pomembno: Ustvarite varnostno kopijo vseh tabel, ki so vključene, preden zaženete poizvedbo za definicijo podatkov.
Ključne besede DDL
Ključna beseda |
Uporabi |
CREATE |
Ustvarite indeks ali tabelo, ki še ne obstaja. |
ALTER |
Spremenite obstoječo tabelo ali stolpec. |
DROP |
Izbrišite obstoječo tabelo, stolpec ali omejitev. |
ADD |
V tabelo dodajte stolpec ali omejitev. |
COLUMN |
Uporaba s funkcijo ADD, ALTER ali DROP |
CONSTRAINT |
Uporaba s funkcijo ADD, ALTER ali DROP |
INDEX |
Uporaba s funkcijo CREATE |
TABLE |
Uporaba s funkcijo ALTER, CREATE ali DROP |
Ustvarjanje ali spreminjanje tabele
Če želite ustvariti tabelo, uporabite ukaz CREATE TABLE. V ukazu CREATE TABLE je ta sintaksa:
CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
Edini obvezni elementi ukaza CREATE TABLE so ukaz CREATE TABLE in ime tabele, vendar boste po navadi želeli določiti nekatera polja ali druge vidike tabele. Oglejte si ta preprost primer.
Denimo, da želite ustvariti tabelo za shranjevanje imena, leta in cene rabljenih avtomobilov, ki jih želite kupiti. Za ime želite dovoliti največ 30 znakov in 4 znake za leto. Če želite za ustvarjanje tabele uporabiti poizvedbo za definicijo podatkov, naredite to:
Opomba: Morda boste morali najprej omogočiti vsebino zbirke podatkov, da se bo poizvedba za definicijo podatkov zagnala:
-
V Vrstici s sporočili kliknite Omogoči vsebino.
Ustvarjanje tabele
-
Na zavihku Ustvari v skupini Makri & Koda kliknite Načrt poizvedbe.
-
Na zavihku Načrt v skupini Vrsta poizvedbe kliknite Definicija podatkov.
Mreža načrta je skrita in prikazan je zavihek predmeta pogleda SQL.
-
Vnesite to izjavo SQL:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
-
Na zavihku Načrt v skupini Rezultati kliknite Zaženi.
Spreminjanje tabele
Če želite spremeniti tabelo, uporabite ukaz ALTER TABLE. Z ukazom ALTER TABLE lahko dodate, spremenite ali spustite (odstranite) stolpce ali omejitve. Ukaz ALTER TABLE ima to sintakso:
ALTER TABLE table_name predicate
kjer je lahko predikat nekaj od naslednjega:
ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
ADD CONSTRAINT multifield_constraint
ALTER COLUMN field type[(size)]
DROP COLUMN field
DROP CONSTRAINT constraint
Denimo, da želite dodati 10-mestno polje z besedilom za shranjevanje informacij o stanju posameznega avtomobila. Naredite lahko to:
-
Na zavihku Ustvari v skupini Makri & Koda kliknite Načrt poizvedbe.
-
Na zavihku Načrt v skupini Vrsta poizvedbe kliknite Definicija podatkov.
Mreža načrta je skrita in prikazan je zavihek predmeta pogleda SQL.
-
Vnesite to izjavo SQL:
ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
-
Na zavihku Načrt v skupini Rezultati kliknite Zaženi.
Ustvarjanje kazala
Če želite ustvariti indeks za obstoječo tabelo, uporabite ukaz CREATE INDEX. V ukazu CREATE INDEX je ta sintaksa:
CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]
Edini obvezni elementi so ukaz CREATE INDEX, ime indeksa, argument ON, ime tabele s polji, ki jih želite indeksirati, in seznam polj, ki jih želite vključiti v indeks.
-
Argument DESC povzroči, da se indeks ustvari v padajočem vrstnem redu, kar je lahko koristno, če pogosto zaženete poizvedbe, ki za indeksirana polja poiščejo najvišje vrednosti ali ki razvrstijo indeksirana polja v padajočem vrstnem redu. Indeks je privzeto ustvarjen v naraščajočem vrstnem redu.
-
Argument WITH PRIMARY določi indeksirana polja kot primarni ključ tabele.
-
Argument WITH DISALLOW NULL povzroči, da indeks zahteva vnos vrednosti za indeksirana polja, kar pomeni, da ničelne vrednosti niso dovoljene.
Denimo, da imate tabelo z imenom »Avtomobili« s polji, v kateri so shranjeni ime, leto, cena in stanje rabljenih avtomobilov, o katerih razmišljate o nakupu. Vzemimo za primer, da je tabela postala velika in da v poizvedbe pogosto vključite polje »leto«. V polju »Leto« lahko ustvarite indeks, da bodo poizvedbe hitreje vrnile rezultate tako, da upoštevate ta postopek:
-
Na zavihku Ustvari v skupini Makri & Koda kliknite Načrt poizvedbe.
-
Na zavihku Načrt v skupini Vrsta poizvedbe kliknite Definicija podatkov.
Mreža načrta je skrita in prikazan je zavihek predmeta pogleda SQL.
-
Vnesite to izjavo SQL:
CREATE INDEX YearIndex ON Cars (Year)
-
Na zavihku Načrt v skupini Rezultati kliknite Zaženi.
Ustvarjanje omejitve ali relacije
Omejitev določa logičen pogoj, ki ga mora polje ali kombinacija polj izpolniti, ko so vstavljene vrednosti. Omejitev UNIQUE na primer preprečuje omejenemu polju, da bi sprejelo vrednost, ki bi podvajala obstoječo vrednost za polje.
Relacija je vrsta omejitve, ki se sklicuje na vrednosti polja ali kombinacije polj v drugi tabeli, da ugotovite, ali je vrednost mogoče vstaviti v omejeno polje ali kombinacijo polj. Posebne ključne besede ne uporabite za označevanje, da je omejitev relacija.
Če želite ustvariti omejitev, uporabite stavek CONSTRAINT v ukazu CREATE TABLE ali ALTER TABLE. Obstajata dve vrsti stavkov CONSTRAINT: eden za ustvarjanje omejitve za eno polje, drugi pa za ustvarjanje omejitve v več poljih.
Omejitve enega polja
Stavek CONSTRAINT za eno polje takoj sledi definiciji polja, ki ga omejuje, in ima to sintakso:
CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
Denimo, da imate tabelo z imenom »Avtomobili« s polji, v kateri so shranjeni ime, leto, cena in stanje rabljenih avtomobilov, o katerih razmišljate o nakupu. Denimo tudi, da pogosto pozabite vnesete vrednost za stanje avtomobila in da želite vedno zabeležiti te podatke. Za polje Pogoj lahko ustvarite omejitev, ki vam preprečuje, da bi polje zapustili prazno, tako da upoštevate ta postopek:
-
Na zavihku Ustvari v skupini Makri & Koda kliknite Načrt poizvedbe.
-
Na zavihku Načrt v skupini Vrsta poizvedbe kliknite Definicija podatkov.
Mreža načrta je skrita in prikazan je zavihek predmeta pogleda SQL.
-
Vnesite to izjavo SQL:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL
-
Na zavihku Načrt v skupini Rezultati kliknite Zaženi.
Recimo, da boste čez nekaj časa opazili, da je v polju Pogoj veliko podobnih vrednosti, ki bi morale biti enake. Nekateri avtomobili imajo na primer vrednost Pogoj slabo, drugi pa vrednost slabo.
Opomba: Če želite spremljati preostale postopke, dodajte nekaj lažnih podatkov v tabelo »Avtomobili«, ki ste jo ustvarili v prejšnjih korakih.
Ko počistite vrednosti, tako da so bolj dosledne, lahko ustvarite tabelo z imenom CarCondition z enim poljem z imenom Pogoj, ki vsebuje vse vrednosti, ki jih želite uporabiti za stanje avtomobilov:
-
Na zavihku Ustvari v skupini Makri & Koda kliknite Načrt poizvedbe.
-
Na zavihku Načrt v skupini Vrsta poizvedbe kliknite Definicija podatkov.
Mreža načrta je skrita in prikazan je zavihek predmeta pogleda SQL.
-
Vnesite to izjavo SQL:
CREATE TABLE CarCondition (Condition TEXT(10))
-
Na zavihku Načrt v skupini Rezultati kliknite Zaženi.
-
Ustvarite primarni ključ za tabelo z izjavo ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY
-
Če želite vstaviti vrednosti iz polja Pogoj v tabeli »Avtomobili« v novo tabelo »CarCondition«, na zavihek predmeta pogleda SQL vnesite ta SQL:
INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;
Opomba: Izjava SQL v tem koraku je poizvedba za dodajanje. Poizvedba za dodajanje se za razliko od poizvedbe za definicijo podatkov konča s podpičjem.
-
Na zavihku Načrt v skupini Rezultati kliknite Zaženi.
Ustvarjanje relacije z omejitev
Če želite, da se vsaka nova vrednost, ki je vstavljena v polje Pogoj v tabeli Avtomobili, ujema z vrednostjo polja Pogoj v tabeli CarCondition, lahko nato ustvarite relacijo med CarCondition in Cars v polju z imenom Pogoj tako, da upoštevate ta postopek:
-
Na zavihku Ustvari v skupini Makri & Koda kliknite Načrt poizvedbe.
-
Na zavihku Načrt v skupini Vrsta poizvedbe kliknite Definicija podatkov.
Mreža načrta je skrita in prikazan je zavihek predmeta pogleda SQL.
-
Vnesite to izjavo SQL:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Condition)
-
Na zavihku Načrt v skupini Rezultati kliknite Zaženi.
Omejitve za več polj
Stavek CONSTRAINT iz več polj je mogoče uporabiti le zunaj stavka definicije polja in ima to sintakso:
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}]}
Oglejte si še en primer, ki uporablja tabelo »Avtomobili«. Denimo, da se želite prepričati, da nobena dva zapisa v tabeli »Avtomobili« nimata enakega nabora vrednosti za »Ime«, »Leto«, »Pogoj« in »Cena«. Ustvarite lahko omejitev UNIQUE, ki velja za ta polja, tako da upoštevate ta postopek:
-
Na zavihku Ustvari v skupini Makri & Koda kliknite Načrt poizvedbe.
-
Na zavihku Načrt v skupini Vrsta poizvedbe kliknite Definicija podatkov.
Mreža načrta je skrita in prikazan je zavihek predmeta pogleda SQL.
-
Vnesite to izjavo SQL:
ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (ime, leto, pogoj, cena)
-
Na zavihku Načrt v skupini Rezultati kliknite Zaženi.