Az Accessben adatdefiníciós lekérdezések SQL-nézetben való megírásával táblákat, korlátozásokat, indexeket és kapcsolatokat hozhat létre és módosíthat. Ez a cikk bemutatja az adatdefiníciós lekérdezéseket, és azt, hogyan hozhat létre táblákat, korlátozásokat, indexeket és kapcsolatokat. Ez a cikk azt is segítheti, hogy eldöntse, mikor használjon adatdefiníciós lekérdezést.

A témakör tartalma

Áttekintés

Más Access-lekérdezésekkel ellentétben az adatdefiníciós lekérdezések nem kérnek le adatokat. Ehelyett az adatdefiníciós lekérdezések az Adatdefiníciós nyelv használatával hoznak létre, módosítanak vagy törölnek adatbázis-objektumokat.

Megjegyzés: Az adatdefiníciós nyelv (DDL) a Structured Query Language (SQL) része.

Az adatdefiníciós lekérdezések nagyon kényelmesek lehetnek. Az adatbázisséma részeit rendszeresen törölheti és újra létrehozhatja, csupán néhány lekérdezés futtatásával. Érdemes lehet adatdefiníciós lekérdezést használni, ha ismeri az SQL-utasításokat, és adott táblák, megkötések, indexek vagy kapcsolatok törlését és újbóli létrehozását tervezi.

Figyelmeztetés: Az adatbázis-objektumok adatdefiníciós lekérdezésekkel történő módosítása kockázatos lehet, mivel a műveletekhez nem tartoznak megerősítő párbeszédpanelek. Ha hibát követ el, elveszítheti az adatokat, vagy véletlenül módosíthatja egy tábla tervét. Legyen óvatos, ha adatdefiníciós lekérdezéssel módosítja az adatbázisban lévő objektumokat. Ha nem ön felelős a használt adatbázis karbantartásáért, adatdefiníciós lekérdezés futtatása előtt forduljon az adatbázis rendszergazdájához.

Fontos: Készítsen biztonsági másolatot az érintett táblákról az adatdefiníciós lekérdezés futtatása előtt.

DDL-kulcsszavak

Kulcsszó

Felhasználás

CREATE

Hozzon létre egy még nem létező indexet vagy táblát.

ALTER

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

DROP

Meglévő tábla, oszlop vagy kényszer törlése.

ADD

Oszlop vagy kényszer hozzáadása egy táblához.

COLUMN

Használat AZ ADD, ALTER vagy DROP paranccsal

CONSTRAINT

Használat AZ ADD, ALTER vagy DROP paranccsal

INDEX

Használat a CREATE használatával

TABLE

Használat ALTER, CREATE vagy DROP használatával

Vissza a lap tetejére

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

Tábla létrehozásához használja a CREATE TABLE parancsot. A CREATE TABLE parancs szintaxisa a következő:

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

A CREATE TABLE parancsnak csak magát a CREATE TABLE parancsot és a tábla nevét kell használnia, de általában a tábla egyes mezőit vagy más jellemzőit érdemes definiálni. Vegyük ezt az egyszerű példát.

Tegyük fel, hogy létre szeretne hozni egy táblát, amely a megvásárolni kívánt használt autók nevét, évét és árát tárolja. Legfeljebb 30 karaktert szeretne megadni a névhez, és 4 karaktert az évhez. Ha adatdefiníciós lekérdezéssel szeretné létrehozni a táblát, tegye a következőket:

Megjegyzés: Előfordulhat, hogy először engedélyeznie kell az adatbázis tartalmát egy adatdefiníciós lekérdezés futtatásához:

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

Táblázat létrehozása

  1. A Létrehozás lap Makrók & Kód csoportjában kattintson a Lekérdezéstervező elemre.

  2. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiníció elemre.

    A tervezőrács rejtett, és megjelenik az SQL-nézet objektumlapja.

  3. Írja be a következő SQL-utasítást:

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

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

Táblázat módosítása

Tábla módosításához használja az ALTER TABLE parancsot. Az ALTER TABLE paranccsal oszlopokat vagy megkötéseket adhat hozzá, módosíthat vagy elvethet (eltávolíthat). Az ALTER TABLE parancs szintaxisa a következő:

ALTER TABLE table_name predicate

ahol a predikátum az alábbiak bármelyike lehet:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Tegyük fel, hogy egy 10 karakterből álló szövegmezőt szeretne hozzáadni az egyes autók állapotával kapcsolatos információk tárolásához. A következőket teheti:

  1. A Létrehozás lap Makrók & Kód csoportjában kattintson a Lekérdezéstervező elemre.

  2. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiníció elemre.

    A tervezőrács rejtett, és megjelenik az SQL-nézet objektumlapja.

  3. Írja be a következő SQL-utasítást:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

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

Vissza a lap tetejére

Tárgymutató létrehozása

Ha egy meglévő táblán szeretne indexet létrehozni, használja a CREATE INDEX parancsot. A CREATE INDEX parancs szintaxisa a következő:

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

Az egyetlen szükséges elem az INDEX LÉTREHOZÁSA parancs, az index neve, az ON argumentum, az indexbe foglalni kívánt mezőket tartalmazó tábla neve és az indexbe foglalandó mezők listája.

  • A DESC argumentum hatására az index csökkenő sorrendben jön létre, ami akkor lehet hasznos, ha gyakran futtat olyan lekérdezéseket, amelyek az indexelt mező legfontosabb értékeit keresik, vagy ha az indexelt mezőt csökkenő sorrendbe rendezi. Alapértelmezés szerint az indexek növekvő sorrendben jönnek létre.

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

  • A WITH DISALLOW NULL argumentum miatt az index megköveteli az indexelt mező értékének megadását – azaz a null értékek nem engedélyezettek.

Tegyük fel, hogy van egy Cars nevű táblája, amely a megvásárolni kívánt használt autók nevét, évét, árát és állapotát tárolja. Tegyük fel azt is, hogy a tábla nagy méretű lett, és gyakran szerepel az év mező a lekérdezésekben. Létrehozhat egy indexet az Év mezőben, hogy a lekérdezések gyorsabban visszaadják az eredményeket az alábbi eljárással:

  1. A Létrehozás lap Makrók & Kód csoportjában kattintson a Lekérdezéstervező elemre.

  2. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiníció elemre.

    A tervezőrács rejtett, és megjelenik az SQL-nézet objektumlapja.

  3. Írja be a következő SQL-utasítást:

    CREATE INDEX YearIndex ON Cars (Year)

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

Vissza a lap tetejére

Kényszer vagy kapcsolat létrehozása

A kényszer olyan logikai feltételt határoz meg, amelyet egy mezőnek vagy mezőkombinációnak meg kell felelnie az értékek beszúrásakor. Az EGYEDI kényszer például megakadályozza, hogy a korlátozott mező olyan értéket fogadjon el, amely duplikálná a mező meglévő értékét.

A kapcsolat olyan kényszertípus, amely egy másik tábla mezőinek vagy mezőkombinációinak értékeire hivatkozik annak meghatározásához, hogy egy érték beszúrható-e a korlátozott mezőbe vagy a mezők kombinációjába. Nem használ speciális kulcsszót annak jelzésére, hogy a kényszer egy kapcsolat.

Kényszer létrehozásához használjon CONSTRAINT záradékot egy CREATE TABLE vagy ALTER TABLE parancsban. Kétféle CONSTRAINT záradék létezik: az egyik egy mezőre vonatkozó kényszer létrehozására, a másik pedig több mezőre vonatkozó kényszer létrehozására.

Egymezős kényszerek

Az egymezős CONSTRAINT záradék azonnal követi annak a mezőnek a definícióját, amelyet korlátoz, és a következő szintaxissal rendelkezik:

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

Tegyük fel, hogy van egy Cars nevű táblája, amely a megvásárolni kívánt használt autók nevét, évét, árát és állapotát tárolja. Tegyük fel azt is, hogy gyakran elfelejt megadni egy értéket az autó állapotához, és hogy mindig rögzíteni szeretné ezeket az információkat. A Feltétel mezőre olyan kényszert hozhat létre, amely megakadályozza, hogy üresen hagyja a mezőt az alábbi eljárással:

  1. A Létrehozás lap Makrók & Kód csoportjában kattintson a Lekérdezéstervező elemre.

  2. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiníció elemre.

    A tervezőrács rejtett, és megjelenik az SQL-nézet objektumlapja.

  3. Írja be a következő SQL-utasítást:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

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

Tegyük fel, hogy egy idő után megfigyelheti, hogy a Feltétel mezőben sok hasonló értéknek kell megegyeznie. Egyes autók esetében például a Condition (Feltétel) értéke gyenge , míg másoknál a rossz érték szerepel.

Megjegyzés: Ha a többi eljárást is követni szeretné, adjon hozzá néhány hamis adatot az előző lépésekben létrehozott Cars táblához.

Miután megtisztította az értékeket, hogy konzisztensebbek legyenek, létrehozhat egy CarCondition nevű táblát egy Condition nevű mezővel, amely tartalmazza az autók állapotához használni kívánt összes értéket:

  1. A Létrehozás lap Makrók & Kód csoportjában kattintson a Lekérdezéstervező elemre.

  2. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiníció elemre.

    A tervezőrács rejtett, és megjelenik az SQL-nézet objektumlapja.

  3. Írja be a következő SQL-utasítást:

    CREATE TABLE CarCondition (Condition TEXT(10))

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

  5. Hozzon létre egy elsődleges kulcsot a táblához egy ALTER TABLE utasítással:

    ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY

  6. Ha a Cars tábla Condition (Állapot) mezőjéből szeretne értékeket beszúrni az új CarCondition táblába, írja be a következő SQL-t az SQL nézet objektumlapjára:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Megjegyzés: Ebben a lépésben az SQL-utasítás egy hozzáfűző lekérdezés. Az adatdefiníciós lekérdezésektől eltérően a hozzáfűző lekérdezés pontosvesszővel végződik.

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

Kapcsolat létrehozása kényszer használatával

Ha azt szeretné, hogy a Cars tábla Feltétel mezőjébe beszúrt új értékek egyezzenek a CarCondition tábla Feltétel mezőjének értékével, az alábbi eljárással hozhat létre kapcsolatot a CarCondition és a Cars mező között:

  1. A Létrehozás lap Makrók & Kód csoportjában kattintson a Lekérdezéstervező elemre.

  2. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiníció elemre.

    A tervezőrács rejtett, és megjelenik az SQL-nézet objektumlapja.

  3. Írja be a következő SQL-utasítást:

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

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

Többmezős kényszerek

A többmezős CONSTRAINT záradék csak meződefiníciós záradékon kívül használható, és a következő szintaxissal rendelkezik:

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

Vegyünk egy másik példát, amely a Cars táblát használja. Tegyük fel, hogy meg szeretne győződni arról, hogy a Cars tábla egyik rekordja sem rendelkezik azonos értékkészlettel a Name (Név), Year (Év), Condition (Feltétel) és Price (Ár) értékekkel. Az alábbi eljárással létrehozhat egy EGYEDI kényszert, amely ezekre a mezőkre vonatkozik:

  1. A Létrehozás lap Makrók & Kód csoportjában kattintson a Lekérdezéstervező elemre.

  2. A Tervezés lap Lekérdezés típusa csoportjában kattintson az Adatdefiníció elemre.

    A tervezőrács rejtett, és megjelenik az SQL-nézet objektumlapja.

  3. Írja be a következő SQL-utasítást:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (név, év, feltétel, ár)

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

Vissza a lap tetejére

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.