V Accesse môžete vytvárať a upravovať tabuľky, obmedzenia, indexy a vzťahy písaním dotazov definujúci údaje v zobrazení SQL. Tento článok vysvetľuje dotazy na definíciu údajov a spôsob ich používania na vytváranie tabuliek, obmedzení, indexov a vzťahov. Tento článok vám tiež pomôže rozhodnúť sa, kedy použiť dotaz definujúci údaje.
Obsah tohto článku
Prehľad
Na rozdiel od iných dotazov Accessu dotaz definujúci údaje nenačítáva údaje. Namiesto toho dotaz definujúci údaje používa jazyk definície údajov na vytvorenie, úpravu alebo odstránenie databázových objektov.
Poznámka: Jazyk DDL (Data Definition Language) je súčasťou jazyka SQL (Structured Query Language).
Dotazy na definíciu údajov môžu byť veľmi pohodlné. Časti schémy databázy môžete pravidelne odstraňovať a opätovne vytvárať iba spustením niektorých dotazov. Ak poznáte príkazy SQL a plánujete odstrániť a znova vytvoriť konkrétne tabuľky, obmedzenia, indexy alebo vzťahy, zvážte použitie dotazu na definíciu údajov.
Upozornenie: Použitie dotazov na definovanie údajov na úpravu databázových objektov môže byť riskantné, pretože akcie nie sú sprevádzané potvrdzovacími dialógovými oknami. Ak sa pomýlite, môžete prísť o údaje alebo neúmyselne zmeniť návrh tabuľky. Pri používaní dotazu na definovanie údajov na úpravu objektov v databáze buďte opatrní. Ak nenesiete zodpovednosť za údržbu používanej databázy, pred spustením dotazu na definíciu údajov by ste sa mali poradiť so správcom databázy.
Dôležité: Pred spustením dotazu na definíciu údajov vytvorte záložnú kópiu všetkých príslušných tabuliek.
Kľúčové slová DDL
Kľúčové slovo |
Použitie |
CREATE |
Vytvorte index alebo tabuľku, ktorá ešte neexistuje. |
ALTER |
Upravte existujúcu tabuľku alebo stĺpec. |
DROP |
Odstráňte existujúcu tabuľku, stĺpec alebo obmedzenie. |
ADD |
Pridanie stĺpca alebo obmedzenia do tabuľky. |
COLUMN |
Použitie s funkciou ADD, ALTER alebo DROP |
CONSTRAINT |
Použitie s funkciou ADD, ALTER alebo DROP |
INDEX |
Použitie s funkciou CREATE |
TABLE |
Použitie s funkciou ALTER, CREATE alebo DROP |
Vytvorenie alebo úprava tabuľky
Ak chcete vytvoriť tabuľku, použite príkaz CREATE TABLE. Príkaz CREATE TABLE má nasledujúcu syntax:
CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
Jedinými požadovanými prvkami príkazu CREATE TABLE sú samotný príkaz CREATE TABLE a názov tabuľky, ale zvyčajne budete chcieť definovať niektoré polia alebo iné aspekty tabuľky. Zoberme si tento jednoduchý príklad.
Predpokladajme, že chcete vytvoriť tabuľku na uloženie názvu, roka a ceny ojazdených áut, ktoré zvažujete na kúpu. Chcete povoliť maximálne 30 znakov pre názov a 4 znaky pre daný rok. Ak chcete na vytvorenie tabuľky použiť dotaz definujúci údaje, postupujte takto:
Poznámka: Na spustenie dotazu na definíciu údajov môže byť najskôr potrebné povoliť obsah databázy:
-
Na paneli hlásení kliknite na položku Povoliť obsah.
Vytvorenie tabuľky
-
Na karte Vytvoriť kliknite v skupine Makrá & Kód na položku Návrh dotazu.
-
Na karte Návrh kliknite v skupine Typ dotazu na položku Definícia údajov.
Mriežka návrhu je skrytá a zobrazí sa karta objektu zobrazenia SQL.
-
Zadajte nasledujúci príkaz SQL:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.
Úprava tabuľky
Ak chcete upraviť tabuľku, použite príkaz ALTER TABLE. Pomocou príkazu ALTER TABLE môžete pridávať, upravovať alebo odstraňovať (odstraňovať) stĺpce alebo obmedzenia. Príkaz ALTER TABLE má nasledujúcu syntax:
ALTER TABLE table_name predicate
pričom predikát môže byť niektorá z týchto možností:
ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
ADD CONSTRAINT multifield_constraint
ALTER COLUMN field type[(size)]
DROP COLUMN field
DROP CONSTRAINT constraint
Predpokladajme, že chcete pridať textové pole s veľkosťou 10 znakov na uloženie informácií o stave každého auta. Môžete vykonávať nasledovné:
-
Na karte Vytvoriť kliknite v skupine Makrá & Kód na položku Návrh dotazu.
-
Na karte Návrh kliknite v skupine Typ dotazu na položku Definícia údajov.
Mriežka návrhu je skrytá a zobrazí sa karta objektu zobrazenia SQL.
-
Zadajte nasledujúci príkaz SQL:
ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.
Vytvorenie registra
Ak chcete vytvoriť index v existujúcej tabuľke, použite príkaz CREATE INDEX. Príkaz CREATE INDEX má nasledujúcu syntax:
CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]
Jedinými povinnými prvkami sú príkaz CREATE INDEX, názov indexu, argument ON, názov tabuľky obsahujúcej polia, ktoré chcete indexovať, a zoznam polí, ktoré sa majú zahrnúť do indexu.
-
Argument DESC spôsobuje, že index sa vytvorí v zostupnom poradí, čo môže byť užitočné, ak často spúšťate dotazy, ktoré vyhľadávajú najvyššie hodnoty indexovaného poľa, alebo ktoré zoraďujú indexované pole v zostupnom poradí. Index sa predvolene vytvára vo vzostupnom poradí.
-
Argument WITH PRIMARY vytvára indexované pole alebo polia ako primárny kľúč tabuľky.
-
Argument WITH DISALLOW NULL spôsobuje, že index vyžaduje zadávanie hodnoty pre indexované pole, čo znamená, že hodnoty null nie sú povolené.
Predpokladajme, že máte tabuľku s názvom Autá s poľami, ktoré obsahujú názov, rok, cenu a stav ojazdených áut, ktoré zvažujete na kúpu. Predpokladajme tiež, že tabuľka sa stala veľkou a pole roka často zahrniete do dotazov. V poli Year (Rok) môžete vytvoriť index, ktorý dotazom pomôže rýchlejšie vrátiť výsledky pomocou nasledujúceho postupu:
-
Na karte Vytvoriť kliknite v skupine Makrá & Kód na položku Návrh dotazu.
-
Na karte Návrh kliknite v skupine Typ dotazu na položku Definícia údajov.
Mriežka návrhu je skrytá a zobrazí sa karta objektu zobrazenia SQL.
-
Zadajte nasledujúci príkaz SQL:
CREATE INDEX YearIndex ON Cars (Rok)
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.
Vytvorenie obmedzenia alebo vzťahu
Obmedzenie vytvára logickú podmienku, ktorú musí pole alebo kombinácia polí spĺňať pri vkladaní hodnôt. Obmedzenie UNIQUE napríklad bráni obmedzenému poľu prijať hodnotu, ktorá by duplikovala existujúcu hodnotu poľa.
Vzťah je typ obmedzenia, ktorý odkazuje na hodnoty poľa alebo kombináciu polí v inej tabuľke, aby sa určilo, či je možné vložiť hodnotu do obmedzeného poľa alebo kombináciu polí. Na označenie, že obmedzenie je vzťah, nepoužívate špeciálne kľúčové slovo.
Ak chcete vytvoriť obmedzenie, použite klauzulu CONSTRAINT v príkazoch CREATE TABLE alebo ALTER TABLE. Existujú dva druhy klauzúl CONSTRAINT: jeden na vytvorenie obmedzenia pre jedno pole a druhý na vytvorenie obmedzenia pre viacero polí.
Obmedzenia s jedným poľom
Jednopoľová klauzula CONSTRAINT bezprostredne nasleduje za definíciou poľa, ktoré obmedzuje, a má nasledujúcu syntax:
CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
Predpokladajme, že máte tabuľku s názvom Autá s poľami, ktoré obsahujú názov, rok, cenu a stav ojazdených áut, ktoré zvažujete na kúpu. Predpokladajme tiež, že často zabudnete zadať hodnotu stavu auta a že tieto informácie chcete vždy zaznamenať. V poli Podmienka môžete vytvoriť obmedzenie, ktoré zabráni ponechaniu poľa prázdneho pomocou nasledujúceho postupu:
-
Na karte Vytvoriť kliknite v skupine Makrá & Kód na položku Návrh dotazu.
-
Na karte Návrh kliknite v skupine Typ dotazu na položku Definícia údajov.
Mriežka návrhu je skrytá a zobrazí sa karta objektu zobrazenia SQL.
-
Zadajte nasledujúci príkaz SQL:
ALTER TABLE Autá Alter COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.
Predpokladajme, že po určitom čase si všimnete, že v poli Podmienka existuje veľa podobných hodnôt, ktoré by mali byť rovnaké. Napríklad niektoré autá majú hodnotu podmienky nízkej a iné majú zlú hodnotu.
Poznámka: Ak chcete postupovať podľa zvyšných postupov, pridajte falošné údaje do tabuľky Autá, ktorú ste vytvorili v predchádzajúcich krokoch.
Po vyčistení hodnôt tak, aby boli konzistentnejšie, môžete vytvoriť tabuľku s názvom CarCondition s jedným poľom s názvom Podmienka, ktorá obsahuje všetky hodnoty, ktoré chcete použiť pre stav automobilov:
-
Na karte Vytvoriť kliknite v skupine Makrá & Kód na položku Návrh dotazu.
-
Na karte Návrh kliknite v skupine Typ dotazu na položku Definícia údajov.
Mriežka návrhu je skrytá a zobrazí sa karta objektu zobrazenia SQL.
-
Zadajte nasledujúci príkaz SQL:
CREATE TABLE CarCondition (Podmienka TEXT(10))
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.
-
Vytvorte hlavný kľúč pre tabuľku pomocou príkazu ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY
-
Ak chcete do novej tabuľky CarCondition vložiť hodnoty z poľa Podmienka tabuľky Cars (Autá), na kartu objektu zobrazenia SQL zadajte nasledujúci príkaz SQL:
Vložiť do carcondition SELECT ODLIŠNÉ podmienky z automobilov;
Poznámka: Príkaz SQL v tomto kroku je pripájací dotaz. Na rozdiel od dotazu definujúci údaje pripájací dotaz končí bodkočiarkou.
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.
Vytvorenie vzťahu pomocou obmedzenia
Ak chcete požadovať, aby každá nová hodnota vložená do poľa Podmienka v tabuľke Autá zodpovedá hodnote poľa Podmienka v tabuľke CarCondition, potom môžete vytvoriť vzťah medzi položkami CarCondition a Cars v poli s názvom Podmienka pomocou nasledujúceho postupu:
-
Na karte Vytvoriť kliknite v skupine Makrá & Kód na položku Návrh dotazu.
-
Na karte Návrh kliknite v skupine Typ dotazu na položku Definícia údajov.
Mriežka návrhu je skrytá a zobrazí sa karta objektu zobrazenia SQL.
-
Zadajte nasledujúci príkaz SQL:
ALTER TABLE Autá ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Podmienka)
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.
Viacpoľové obmedzenia
Klauzulu CONSTRAINT s viacerými poľami možno použiť iba mimo klauzuly definície poľa a má nasledujúcu syntax:
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}]}
Zoberme si ďalší príklad, ktorý používa tabuľku Autá. Predpokladajme, že chcete mať istotu, že žiadne dva záznamy v tabuľke Autá nemajú rovnakú množinu hodnôt pre názvy, rok, podmienku a cenu. Pomocou nasledujúceho postupu môžete vytvoriť obmedzenie UNIQUE, ktoré sa vzťahuje na tieto polia:
-
Na karte Vytvoriť kliknite v skupine Makrá & Kód na položku Návrh dotazu.
-
Na karte Návrh kliknite v skupine Typ dotazu na položku Definícia údajov.
Mriežka návrhu je skrytá a zobrazí sa karta objektu zobrazenia SQL.
-
Zadajte nasledujúci príkaz SQL:
ALTER TABLE Autá ADD CONSTRAINT NoDupes UNIQUE (názov, rok, podmienka, cena)
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.