Táblák vagy indexek létrehozása, illetve módosítása adatdefiníciós lekérdezéssel

Módosíthat vagy létrehozhat táblákat, megkötéseket, indexeket és kapcsolatokat úgy, hogy SQL nézetben adatdefiniáló lekérdezéseket készít.

A cikk ismerteti az adatdefiniáló lekérdezéseket és azok használatát a táblák, megkötések, indexek és kapcsolatok létrehozása során. Segítséget nyújt annak eldöntésében is, hogy mikor érdemes adatdefiniáló lekérdezést alkalmazni.

Megjegyzés : Webes adatbázisban ezek az eljárások nem nem alkalmazhatók.

Tartalom

Áttekintés

Tábla létrehozása vagy módosítása

Index létrehozása

Megkötés vagy kapcsolat létrehozása

Áttekintés

Más lekérdezésektől eltérően az adatdefiniáló lekérdezés nem olvas be adatokat. Az adatdefiniáló lekérdezés adatbázis-objektumok létrehozását, módosítását vagy törlését teszi lehetővé a DDL (Data Definition Language) nyelv használatával.

Megjegyzés : A DDL nyelv az SQL nyelv része.

Az adatdefiniáló lekérdezések használata megkönnyíti a munkát. Rendszeresen törölheti és újraépítheti az adatbázisséma egyes részeit csupán néhány lekérdezés futtatásával. Érdemes megfontolni az adatdefiniáló lekérdezések alkalmazását, ha jól ismeri az SQL-utasításokat, és adott táblákat, megkötéseket, indexeket vagy kapcsolatokat szeretne törölni és újra létrehozni.

Figyelmeztetés : Az adatdefiniáló lekérdezésekkel végzett módosítás kockázatos lehet, mivel a műveletek végrehajtásakor nem jelennek meg megerősítő párbeszédpanelek. Ha hibát vét, adatok veszhetnek el, vagy véletlenül megváltoztathatja a táblatervet. Amikor adatdefiniáló lekérdezéssel módosítja az adatbázis-objektumokat, járjon el körültekintően. Ha nem Ön tartja karban az adatbázist, az adatdefiniáló lekérdezés futtatása előtt kérje a rendszergazda segítségét.

Fontos : Adatdefiniáló lekérdezés futtatása előtt minden esetben készítsen biztonsági másolatot az érintett táblákról.

DDL-kulcsszavak

Kulcsszó

Használható karakter

CREATE

Még nem létező index vagy tábla létrehozása

ALTER

Meglévő tábla vagy oszlop módosítása

DROP

Tábla, oszlop vagy megkötés törlése

ADD

Oszlop vagy megkötés felvétele a táblába

COLUMN

Az ADD, ALTER vagy DROP kulcsszóval együtt használható

CONSTRAINT

Az ADD, ALTER vagy DROP kulcsszóval együtt használható

INDEX

A CREATE kulcsszóval együtt használható

TABLE

Az ALTER, CREATE vagy DROP kulcsszóval együtt használható

Vissza a lap tetejére

Tábla létrehozása vagy módosítása

Táblát a CREATE TABLE paranccsal hozhat létre. A CREATE TABLE parancs szintaxisa a következő:

CREATE TABLE táblanév 
(mező1 típusa [(méret)] [NOT NULL] [index1]
[, mező2 típusa [(méret)] [NOT NULL] [index2]
[, ...][, CONSTRAINT megkötés1 [, ...]])

A CREATE TABLE parancs kötelező része maga a CREATE TABLE parancs és a tábla neve, de rendszerint a tábla néhány mezőjét vagy egyéb jellemzőit is meg kell határozni. Vegyük az alábbi egyszerű példát.

Tegyük fel, hogy olyan táblát kíván létrehozni, amelyben a megvételre kiszemelt használt autók típusát, gyártási idejét és árát szeretné tárolni. Maximálisan 30 karaktert engedélyezzen a típusnévhez, 4 karaktert a gyártás évéhez. Ha a táblát adatdefiniáló lekérdezéssel szeretné létrehozni, hajtsa végre a következő műveleteket:

Megjegyzés : Lehetséges, hogy előbb engedélyeznie kell az adatbázis tartalmát ahhoz, hogy adatdefiniáló lekérdezést futtathasson. Ehhez végezze el a következő műveletet:

  • Az üzenetsávon kattintson a Tartalom engedélyezése gombra.

Tábla létrehozása

  1. A Létrehozás lap Makrók és kódok csoportjában kattintson a Lekérdezéstervező gombra.

  2. Zárja be a Tábla megjelenítése párbeszédpanelt.

  3. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiniáló gombra.

    Ekkor a tervezőrács rejtett állapotba kerül, és megjelenik az SQL nézet objektumlap.

  4. Írja be az alábbi SQL-utasítást:

    CREATE TABLE Autók (Név TEXT(30), Év TEXT(4), Ár CURRENCY)

  5. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

Tábla módosítása

A táblákat az ALTER TABLE paranccsal módosíthatja. Az ALTER TABLE paranccsal felvehet, módosíthat vagy elvethet (eltávolíthat) oszlopokat, illetve megkötéseket. Az ALTER TABLE parancs szintaxisa a következő:

ALTER TABLE táblanév predikátum

A predikátum az alábbi kifejezések bármelyike lehet:

ADD COLUMN mezőtípus[(méret)] [NOT NULL] [CONSTRAINT megkötés]

ADD CONSTRAINT többmezős_megkötés

ALTER COLUMN mezőtípus[(méret)]

DROP COLUMN mező

DROP CONSTRAINT megkötés

Tegyük fel, hogy 10 karakterből álló szövegmezőt szeretne felvenni a táblába az egyes autók állapotának leírására. Az alábbi műveletek közül választhat:

  1. A Létrehozás lap Makrók és kódok csoportjában kattintson a Lekérdezéstervező gombra.

  2. Zárja be a Tábla megjelenítése párbeszédpanelt.

  3. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiniáló gombra.

    Ekkor a tervezőrács rejtett állapotba kerül, és megjelenik az SQL nézet objektumlap.

  4. Írja be az alábbi SQL-utasítást:

    ALTER TABLE Autók ADD COLUMN Állapot TEXT(10)

  5. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

Vissza a lap tetejére

Index létrehozása

Meglévő táblák indexének létrehozásához a CREATE INDEX parancs használható. A CREATE INDEX parancs szintaxisa a következő:

CREATE [UNIQUE] INDEX indexnév ON tábla (mező1 [DESC][, mező2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]

A parancsban kötelező megadni a CREATE INDEX parancsot, az index nevét, az ON argumentumot, az indexelni kívánt mezőket tartalmazó tábla nevét és az indexbe foglalandó mezők listáját.

  • Ha a DESC argumentumot használja, az index csökkenő sorrendben jön létre, ami akkor hasznos, ha gyakran futtat olyan lekérdezéseket, amelyek az indexelt mezők legnagyobb értékeire keresnek, vagy olyanokat, amelyek az indexelt mezőket csökkenő sorrendbe rendezik. Alapértelmezés szerint a program az indexet növekvő sorrendben hozza létre.

  • A WITH PRIMARY argumentum alkalmazásával az indexelt mezőt vagy mezőket a tábla elsődleges kulcs hozza létre.

  • A WITH DISALLOW NULL argumentum használatával előírja, hogy az indexelt mezőnek értéket kell adni – ez azt jelenti, hogy nulla érték nem engedélyezett.

Tegyük fel, hogy az Autók nevű táblában a megfelelő mezőkben tárolja a vásárlásra kiszemelt használt autók márkájára, gyártási évére, árára és állapotára vonatkozó információt. Tegyük fel továbbá, hogy a tábla mérete igen nagy, és a lekérdezésekben az Év mező gyakran szerepel. A lekérdezések meggyorsítása érdekében létrehozhatja az Év mezőre vonatkozó indexet. Ehhez használja az alábbi eljárást:

  1. A Létrehozás lap Makrók és kódok csoportjában kattintson a Lekérdezéstervező gombra.

  2. Zárja be a Tábla megjelenítése párbeszédpanelt.

  3. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiniáló gombra.

    Ekkor a tervezőrács rejtett állapotba kerül, és megjelenik az SQL nézet objektumlap.

  4. Írja be az alábbi SQL-utasítást:

    CREATE INDEX Évindex ON Autók (Év)

  5. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

Vissza a lap tetejére

Megkötés vagy kapcsolat létrehozása

A megkötés olyan logikai feltételt létesít, amelynek meg kell felelnie egy mezőnek vagy több mező kombinációjának, amikor értékeket ad meg. A UNIQUE megkötés például letiltja az ismétlődő értékek megadását egy mező értékeiként.

A kapcsolat olyan megkötés, amely egy másik táblában lévő mező vagy mezőkombináció értékeire vonatkozik, és meghatározza, hogy egy érték megadható-e a korlátozott mező vagy mezőkombináció értékeként. Nem szükséges külön kulcsszóval jelölni, hogy egy megkötés egyben kapcsolat is.

Megkötéseket a CREATE TABLE és az ALTER TABLE parancs CONSTRAINT záradéka segítségével hozhat létre. Kétféle CONSTRAINT záradék létezik: az egyikkel egymezős, a másikkal többmezős megkötést hozhat létre.

Egy mezőre vonatkozó megkötések

Az egy mezőre vonatkozó CONSTRAINT záradék közvetlenül a megfelelő mező definíciója után szerepel, szintaxisa pedig az alábbi:

CONSTRAINT megkötés_neve {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES idegen_tábla [(idegen_mező)]
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Tegyük fel, hogy az Autók nevű táblában a megfelelő mezőkben tárolja a vásárlásra kiszemelt használt autók márkájára, gyártási évére, árára és állapotára vonatkozó információt. Tegyük fel azt is, hogy gyakran elfelejti megadni az autók állapotára vonatkozó értéket, és erre az információra mindig szüksége van. Ebben az esetben létrehozhat egy megkötést, így megelőzheti, hogy a mező üresen maradjon. Ehhez járjon el az alábbiak szerint:

  1. A Létrehozás lap Makrók és kódok csoportjában kattintson a Lekérdezéstervező gombra.

  2. Zárja be a Tábla megjelenítése párbeszédpanelt.

  3. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiniáló gombra.

    Ekkor a tervezőrács rejtett állapotba kerül, és megjelenik az SQL nézet objektumlap.

  4. Írja be az alábbi SQL-utasítást:

    ALTER TABLE Autók ALTER COLUMN Állapot TEXT CONSTRAINT ConditionRequired NOT NULL

  5. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

Most tegyük fel, hogy bizonyos idő elteltével több hasonló érték lesz az Állapot mezőben, amelyek ugyanarra az állapotra vonatkoznak. Néhány autó esetén például az Állapot mezőben erősen használt, másoknál rossz szerepel.

Megjegyzés : Ha a példa további lépéseit követni szeretné, vegyen fel hibás adatokat az előző lépések során létrehozott Autók nevű táblába.

Miután egységesítette az értékeket, létrehozhat egy Autó Állapota nevű táblát, amelynek egy mezője van, az Állapot mező. Ez az összes olyan értéket tartalmazza, amelyet az autók állapotának leírására kíván használni:

  1. A Létrehozás lap Makrók és kódok csoportjában kattintson a Lekérdezéstervező gombra.

  2. Zárja be a Tábla megjelenítése párbeszédpanelt.

  3. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiniáló gombra.

    Ekkor a tervezőrács rejtett állapotba kerül, és megjelenik az SQL nézet objektumlap.

  4. Írja be az alábbi SQL-utasítást:

    CREATE TABLE AutóÁllapota (Állapot TEXT(10))

  5. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

  6. Az ALTER TABLE utasítás segítségével hozza létre a tábla elsődleges kulcsát:

    ALTER TABLE AutóÁllapota ALTER COLUMN Állapot TEXT CONSTRAINT AutóÁllapotaEK PRIMARY KEY

  7. Szúrja be az Autók tábla Állapot mezőjének értékeit az új AutóÁllapota nevű táblába. Ehhez az SQL nézet objektumlapon írja be az alábbi SQL-utasítást:

    INSERT INTO AutóÁllapota SELECT DISTINCT Állapot FROM Autók;

    Megjegyzés : Az ebben a lépésben alkalmazott SQL-utasítás egy úgynevezett hozzáfűző lekérdezés. Az adatdefiniáló lekérdezéssel ellentétben a hozzáfűző lekérdezés végén pontosvessző áll.

  8. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

Kapcsolat létrehozása megkötés használatával

Ha elő szeretné írni, hogy az Autók tábla Állapot mezőjébe bevitt új értékek az AutóÁllapota tábla Állapot mezőjében szereplő értékeknek feleljenek meg, létrehozhat egy kapcsolatot az AutóÁllapota tábla és az Autók tábla között az Állapot mezőben. Ehhez járjon el az alábbiak szerint:

  1. A Létrehozás lap Makrók és kódok csoportjában kattintson a Lekérdezéstervező gombra.

  2. Zárja be a Tábla megjelenítése párbeszédpanelt.

  3. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiniáló gombra.

    Ekkor a tervezőrács rejtett állapotba kerül, és megjelenik az SQL nézet objektumlap.

  4. Írja be az alábbi SQL-utasítást:

    ALTER TABLE Autók ALTER COLUMN Állapot TEXT CONSTRAINT FKeyCondition REFERENCES AutóÁllapota (Állapot)

  5. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

Több mezőre vonatkozó megkötések

A több mezőre vonatkozó CONSTRAINT záradék csak a mezőt definiáló záradékon kívül alkalmazható, és szintaxisa a következő:

CONSTRAINT megkötés_neve 
{PRIMARY KEY (elsődleges_kulcsmező1[, elsődleges_kulcsmező2[, ...]]) |
UNIQUE (egyedi1[, egyedi2[, ...]]) |
NOT NULL (nem_null1[, nem_null2[, ...]]) |
FOREIGN KEY [NO INDEX] (hiv_mező1[, hiv_mező2[, ...]])
REFERENCES idegen_tábla
[(idegen_kulcsmező1[, idegen_kulcsmező2[, ...]])] |
[ON UPDATE {CASCADE | SET NULL}]
[ON DELETE {CASCADE | SET NULL}]}

Tekintse át az alábbi példát, amelyben az Autók nevű táblát alkalmazzuk. Tegyük fel, hogy azt szeretné, hogy az Autók táblában ne legyen két olyan rekord, amely a Név, Év, Állapot és Ár mezőkben azonos értéket tartalmaz. Ehhez hozza létre az adott mezőkre alkalmazott UNIQUE megkötést az alábbi eljárás szerint:

  1. A Létrehozás lap Makrók és kódok csoportjában kattintson a Lekérdezéstervező gombra.

  2. Zárja be a Tábla megjelenítése párbeszédpanelt.

  3. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiniáló gombra.

    Ekkor a tervezőrács rejtett állapotba kerül, és megjelenik az SQL nézet objektumlap.

  4. Írja be az alábbi SQL-utasítást:

    ALTER TABLE Autók ADD CONSTRAINT NoDupe UNIQUE (név, év, állapot, ár)

  5. A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.

Vissza a lap tetejére

Ismeretek bővítése
Oktatóanyagok megismerése
Új szolgáltatások listájának lekérése
Részvétel az Office Insider programban

Hasznos volt az információ?

Köszönjük a visszajelzését!

Köszönjük visszajelzését. Jobbnak látjuk, ha az Office egyik támogatási szakemberéhez irányítjuk.

×