Přihlásit se pomocí účtu Microsoft
Přihlaste se nebo si vytvořte účet.
Dobrý den,
Vyberte jiný účet.
Máte více účtů.
Zvolte účet, pomocí kterého se chcete přihlásit.

Tabulky, omezení, indexy a relace v Accessu můžete vytvářet a upravovat zápisem dotazů na definici dat v zobrazení SQL. Tento článek vysvětluje dotazy na definici dat a jejich použití k vytváření tabulek, omezení, indexů a relací. Tento článek vám také může pomoct při rozhodování, kdy použít dotaz definice dat.

V tomto článku

Přehled

Na rozdíl od jiných dotazů Accessu dotaz definice dat nenačítá data. Místo toho dotaz definice dat používá k vytváření, úpravám nebo odstraňování databázových objektů jazyk definice dat.

Poznámka: Jazyk DDL (Data Definition Language) je součástí jazyk SQL (Structured Query Language) (SQL).

Dotazy na definici dat mohou být velmi pohodlné. Části schématu databáze můžete pravidelně odstraňovat a znovu vytvářet pouze spuštěním některých dotazů. Pokud znáte příkazy SQL a plánujete odstranit a znovu vytvořit konkrétní tabulky, omezení, indexy nebo relace, zvažte použití definičního dotazu na data.

Upozornění: Použití dotazů na definici dat k úpravě databázových objektů může být riskantní, protože akce nejsou doprovázeny potvrzovacími dialogovými okny. Pokud uděláte chybu, můžete ztratit data nebo neúmyslně změnit návrh tabulky. Při použití dotazu definice dat k úpravě objektů v databázi buďte opatrní. Pokud nejste zodpovědní za údržbu databáze, kterou používáte, měli byste se před spuštěním dotazu na definici dat poradit se správcem databáze.

Důležité informace: Před spuštěním dotazu definice dat vytvořte záložní kopii všech tabulek.

Klíčová slova DDL

Klíčové slovo

Použití

CREATE

Vytvořte index nebo tabulku, která ještě neexistuje.

ALTER

Úprava existující tabulky nebo sloupce

DROP

Odstraňte existující tabulku, sloupec nebo omezení.

ADD

Přidání sloupce nebo omezení do tabulky

COLUMN

Použití s funkcemi ADD, ALTER nebo DROP

CONSTRAINT

Použití s funkcemi ADD, ALTER nebo DROP

INDEX

Použití s create

TABLE

Použití s funkcemi ALTER, CREATE nebo DROP

Začátek stránky

Vytvoření nebo úprava tabulky

K vytvoření tabulky použijte příkaz CREATE TABLE. Příkaz CREATE TABLE má následující syntaxi:

CREATE TABLE table_name 
(field1 type [(size)] [NOT NULL] [index1]
[, field2 type [(size)] [NOT NULL] [index2]
[, ...][, CONSTRAINT constraint1 [, ...]])

Jediné požadované prvky příkazu CREATE TABLE jsou samotný příkaz CREATE TABLE a název tabulky, ale obvykle budete chtít definovat některá pole nebo jiné aspekty tabulky. Podívejte se na tento jednoduchý příklad.

Předpokládejme, že chcete vytvořit tabulku s názvem, rokem a cenou ojetých vozů, které zvažujete k nákupu. Chcete povolit maximálně 30 znaků pro název a 4 znaky pro rok. Pokud chcete k vytvoření tabulky použít dotaz definice dat, postupujte takto:

Poznámka: Možná budete muset nejdřív povolit obsah databáze, aby se spustil dotaz na definici dat:

  • Na panelu zpráv klikněte na Povolit obsah.

Vytvoření tabulky

  1. Na kartě Vytvořit klikněte ve skupině Makra & Kód na Návrh dotazu.

  2. Na kartě Návrh klikněte ve skupině Typ dotazu na definice dat.

    Návrhová mřížka je skrytá a zobrazí se karta objektu zobrazení SQL.

  3. Zadejte následující příkaz SQL:

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

  4. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

Změna tabulky

K úpravě tabulky použijte příkaz ALTER TABLE. Pomocí příkazu ALTER TABLE můžete přidat, upravit nebo odstranit (odebrat) sloupce nebo omezení. Příkaz ALTER TABLE má následující syntaxi:

ALTER TABLE table_name predicate

kde predikát může být některý z následujících:

ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Předpokládejme, že chcete přidat 10mísedné textové pole, do kterého se budou ukládat informace o stavu každého auta. Můžete udělat toto:

  1. Na kartě Vytvořit klikněte ve skupině Makra & Kód na Návrh dotazu.

  2. Na kartě Návrh klikněte ve skupině Typ dotazu na definice dat.

    Návrhová mřížka je skrytá a zobrazí se karta objektu zobrazení SQL.

  3. Zadejte následující příkaz SQL:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  4. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

Začátek stránky

Vytvoření rejstříku

Pokud chcete vytvořit index pro existující tabulku, použijte příkaz CREATE INDEX. Příkaz CREATE INDEX má následující syntaxi:

CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...])
[WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

Jedinými povinnými prvky jsou příkaz CREATE INDEX, název indexu, argument ON, název tabulky obsahující pole, která chcete indexovat, a seznam polí, která mají být zahrnuta do indexu.

  • Argument DESC způsobí, že se index vytvoří v sestupném pořadí, což může být užitečné, pokud často spouštíte dotazy, které hledají nejvyšší hodnoty indexovaného pole nebo seřadí indexované pole v sestupném pořadí. Ve výchozím nastavení se index vytváří ve vzestupném pořadí.

  • Argument WITH PRIMARY vytvoří indexované pole nebo pole jako Primární klíč tabulky.

  • Argument WITH DISALLOW NULL způsobí, že index vyžaduje zadání hodnoty pro indexované pole – to znamená, že hodnoty null nejsou povoleny.

Předpokládejme, že máte tabulku s názvem Auta s poli obsahujícími název, rok, cenu a stav ojetých aut, která zvažujete k nákupu. Předpokládejme také, že se tabulka stala velkou a že do dotazů často zahrnete pole year. Pomocí následujícího postupu můžete vytvořit index v poli Rok, který vašim dotazům pomůže rychleji vracet výsledky:

  1. Na kartě Vytvořit klikněte ve skupině Makra & Kód na Návrh dotazu.

  2. Na kartě Návrh klikněte ve skupině Typ dotazu na definice dat.

    Návrhová mřížka je skrytá a zobrazí se karta objektu zobrazení SQL.

  3. Zadejte následující příkaz SQL:

    CREATE INDEX YearIndex on Cars (Year)

  4. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

Začátek stránky

Vytvoření omezení nebo relace

Omezení stanoví logickou podmínku, kterou musí pole nebo kombinace polí splňovat při vkládání hodnot. Například omezení UNIQUE brání omezenému poli v přijetí hodnoty, která by duplikovala existující hodnotu pole.

Relace je typ omezení, které odkazuje na hodnoty pole nebo kombinace polí v jiné tabulce a určuje, zda lze hodnotu vložit do omezeného pole nebo kombinace polí. K označení, že omezení je relace, nepoužíváte speciální klíčové slovo.

K vytvoření omezení použijte klauzuli CONSTRAINT v příkazu CREATE TABLE nebo ALTER TABLE. Existují dva typy klauzulí CONSTRAINT: jedna pro vytvoření omezení pro jedno pole a druhá pro vytvoření omezení pro více polí.

Omezení jednoho pole

Klauzule CONSTRAINT s jedním polem okamžitě následuje za definicí pole, které omezuje, a má následující syntaxi:

CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)]
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Předpokládejme, že máte tabulku s názvem Auta s poli obsahujícími název, rok, cenu a stav ojetých aut, která zvažujete k nákupu. Předpokládejme také, že často zapomínáte zadat hodnotu stavu vozu a že tyto informace chcete vždy zaznamenat. Pomocí následujícího postupu můžete vytvořit omezení pole Podmínka, které vám zabrání nechat pole prázdné:

  1. Na kartě Vytvořit klikněte ve skupině Makra & Kód na Návrh dotazu.

  2. Na kartě Návrh klikněte ve skupině Typ dotazu na definice dat.

    Návrhová mřížka je skrytá a zobrazí se karta objektu zobrazení SQL.

  3. Zadejte následující příkaz SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  4. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

Teď předpokládejme, že po nějaké době zjistíte, že v poli Podmínka existuje mnoho podobných hodnot, které by měly být stejné. Některá auta mají například stavovou hodnotu chudá a jiná mají hodnotu špatnou.

Poznámka: Pokud chcete postupovat podle zbývajících postupů, přidejte do tabulky Auta, kterou jste vytvořili v předchozích krocích, nějaká falešná data.

Po vyčištění hodnot tak, aby byly konzistentnější, můžete vytvořit tabulku s názvem CarCondition s jedním polem s názvem Podmínka, která obsahuje všechny hodnoty, které chcete použít pro stav aut:

  1. Na kartě Vytvořit klikněte ve skupině Makra & Kód na Návrh dotazu.

  2. Na kartě Návrh klikněte ve skupině Typ dotazu na definice dat.

    Návrhová mřížka je skrytá a zobrazí se karta objektu zobrazení SQL.

  3. Zadejte následující příkaz SQL:

    CREATE TABLE CarCondition (Text podmínky(10))

  4. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

  5. Vytvořte primární klíč pro tabulku pomocí příkazu ALTER TABLE:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMÁRNÍ KLÍČ

  6. Pokud chcete vložit hodnoty z pole Podmínka tabulky Auta do nové tabulky CarCondition, zadejte na kartu objektu zobrazení SQL následující kód SQL:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Poznámka: Příkaz SQL v tomto kroku je Přidávací dotaz. Na rozdíl od definičního dotazu dat končí přidávací dotaz středníkem.

  7. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

Vytvoření relace pomocí omezení

Pokud chcete vyžadovat, aby nová hodnota vložená do pole Podmínka tabulky Auta odpovídala hodnotě pole Podmínka v tabulce CarCondition, můžete vytvořit relaci mezi CarCondition a Cars v poli s názvem Podmínka pomocí následujícího postupu:

  1. Na kartě Vytvořit klikněte ve skupině Makra & Kód na Návrh dotazu.

  2. Na kartě Návrh klikněte ve skupině Typ dotazu na definice dat.

    Návrhová mřížka je skrytá a zobrazí se karta objektu zobrazení SQL.

  3. Zadejte následující příkaz SQL:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Podmínka)

  4. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

Omezení více polí

Klauzuli CONSTRAINT s více poli lze použít pouze mimo klauzuli definice pole a má následující syntaxi:

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}]}

Podívejte se na další příklad, který používá tabulku Auta. Předpokládejme, že chcete zajistit, aby žádné dva záznamy v tabulce Auta neměly stejnou sadu hodnot pro Název, Rok, Podmínku a Cenu. Pomocí následujícího postupu můžete vytvořit omezení UNIQUE, které se vztahuje na tato pole:

  1. Na kartě Vytvořit klikněte ve skupině Makra & Kód na Návrh dotazu.

  2. Na kartě Návrh klikněte ve skupině Typ dotazu na definice dat.

    Návrhová mřížka je skrytá a zobrazí se karta objektu zobrazení SQL.

  3. Zadejte následující příkaz SQL:

    ALTER TABLE Auta ADD CONSTRAINT NoDupes UNIQUE (název, rok, podmínka, cena)

  4. Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.

Začátek stránky

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?
Po stisknutí tlačítka pro odeslání se vaše zpětná vazba použije k vylepšování produktů a služeb Microsoftu. Váš správce IT bude moci tato data shromažďovat. Prohlášení o zásadách ochrany osobních údajů.

Děkujeme vám za zpětnou vazbu.

×