Erstellen oder Ändern von Tabellen oder Indizes mithilfe einer Datendefinitionsabfrage

Wichtig :  Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: hier.

In Microsoft Office Access 2007 ganz einfach zu erstellen und Ändern von Tabellen, Einschränkungen und Indizes in der Entwurfsansicht, und, um Beziehungen mithilfe der Dialogfeld "Beziehungen" erstellen. Alternativ können Sie erstellen und ändern diese Elemente durch Schreiben von Daten Definition-Abfragen in SQL-Ansicht.

In diesem Artikel wird beschrieben, was Datendefinitionsabfragen sind, und es wird zeigt, wie mit solchen Abfragen Tabellen, Indizes, Einschränkungen und Beziehungen erstellt werden. Dieser Artikel kann Ihnen bei der Entscheidung helfen, wann eine Datendefinitionsabfrage verwendet werden sollte.

Was möchten Sie tun?

Erfahren, wann eine Datendefinitionsabfrage verwendet werden sollte

Erstellen oder Ändern von Tabellen

Erstellen eines Indexes

Erstellen einer Einschränkung oder einer Beziehung

Wann eine Datendefinitionsabfrage verwendet werden sollte

Im Gegensatz zu anderen Abfragen werden mit einer Datendefinitionsabfrage keine Daten abgerufen. Bei den meisten Abfragen wird die DML (Data Manipulation Language, Datenbearbeitungssprache) verwendet, die SQL-Befehle (Structured Query Language) umfasst, mit denen festgelegt wird, wie Daten aus vorhandenen Datenbankobjekten kombiniert und bearbeitet werden, damit Sie die gewünschten Datenergebnisse erhalten. In Datendefinitionsabfragen wird hingegen die DDL (Data Definition Language, Datendefinitionssprache) verwendet, die SQL-Befehle umfasst, mit denen die Definition von Datenbankobjekten festgelegt wird, in denen Indexdaten gespeichert sind, und SQL-Befehle, mit denen der Benutzerzugriff auf Datenbankobjekte gesteuert wird. In Office Access 2007 kann mit einer Datendefinitionsabfrage die Definition eines Datenbankobjekts festgelegt oder geändert werden.

Im Allgemeinen sollten Sie zum Erstellen von Tabellen, Einschränkungen, Indizes und Beziehungen die von Office Access 2007 gebotenen grafischen Entwurfsoberflächen nutzen (z. B. die Entwurfsansicht und das Fenster "Beziehungen"). Wenn Sie jedoch mit Tabellen arbeiten, die Sie regelmäßig löschen und neu erstellen, kann die Verwendung dieser Oberflächen recht zeitaufwändig sein. Bei Verwendung einer Datendefinitionsabfrage können Sie die Abfrage einmal schreiben und sie dann im Bedarfsfall immer wieder ausführen. Sie sollten jedoch nur dann mit Datendefinitionsabfragen arbeiten, wenn Sie mit SQL-Anweisungen vertraut sind und bestimmte Tabellen, Einschränkungen oder Indizes regelmäßig löschen und neu erstellen möchten.

Wichtig : Die Verwendung von Datendefinitionsabfragen zum Ändern von Datenbankobjekten kann gefährlich sein, da für die Aktionen keine Bestätigungsdialogfelder angezeigt werden. Wenn Sie einen Fehler machen, laufen Sie Gefahr, Daten zu verlieren oder den Entwurf einer Tabelle unabsichtlich zu ändern. Gehen Sie bei der Verwendung von Datendefinitionsabfragen zum Ändern von Objekten in der Datenbank mit äußerster Vorsicht vor. Wenn Sie für die Pflege der von Ihnen verwendeten Datenbank nicht zuständig sind, sollten Sie vor der Ausführung einer Datenbankdefinitionsabfrage den Datenbankadministrator zu Rate ziehen. Darüber hinaus wird dringend empfohlen, eine Sicherheitskopie aller Tabellen anzulegen, für die Sie eine solche Abfrage ausführen möchten.

Seitenanfang

Erstellen oder Ändern von Tabellen

Zum Erstellen einer Tabelle verwenden Sie den CREATE TABLE-Befehl. Der CREATE TABLE-Befehl hat die folgende Syntax:

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

Die einzigen obligatorischen Elemente eines CREATE TABLE-Befehls sind der CREATE TABLE-Befehl selbst, der Name der Tabelle, mindestens ein Feld sowie der Datentyp eines jeden Felds. Lassen Sie uns hierzu ein einfaches Beispiel erörtern.

Einmal angenommen, Sie möchten eine Tabelle erstellen, in der der Name, das Baujahr und der Preis von Gebrauchtwagen gespeichert werden soll, deren Kauf Sie in Betracht ziehen. Für das Namensfeld möchten Sie bis zu 30 Zeichen vorsehen, und das Feld für das Jahr soll 4 Zeichen umfassen. Wenn Sie diese Tabelle mit einer Datendefinitionsabfrage erstellen möchten, gehen Sie wie folgt vor:

Hinweis : Damit eine Datendefinitionsabfrage ausgeführt werden kann, müssen Sie zunächst den Inhalt der Datenbank aktivieren.

  1. Klicken Sie auf der Statusleiste auf Optionen und dann auf Diesen Inhalt aktivieren.

  2. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.

  3. Schließen Sie das Dialogfeld Tabelle anzeigen.

  4. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Datendefinition.

    Der Entwurfsbereich wird ausgeblendet, und die Objektregisterkarte SQL-Ansicht angezeigt.

  5. Geben Sie die folgende SQL-Anweisung ein:

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

  6. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Ändern einer Tabelle

Zum Ändern einer Tabelle verwenden Sie den ALTER TABLE-Befehl. Mithilfe des ALTER TABLE-Befehls können Sie Spalten oder Einschränkungen hinzufügen, ändern oder verwerfen (löschen). Der ALTER TABLE-Befehl hat folgende Syntax:

ALTER TABLE table_name predicate

wobei predicate für eine der folgenden Entitäten stehen kann:

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

ADD CONSTRAINT multifield_constraint

ALTER COLUMN field type[(size)]

DROP COLUMN field

DROP CONSTRAINT constraint

Einmal angenommen, Sie möchten ein 10 Zeichen umfassendes Feld zum Speichern von Angaben zum Zustand des jeweiligen Wagens hinzufügen. In dem Fall können Sie wie folgt vorgehen:

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.

  2. Schließen Sie das Dialogfeld Tabelle anzeigen.

  3. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Datendefinition.

    Der Entwurfsbereich wird ausgeblendet, und die Objektregisterkarte SQL-Ansicht angezeigt.

  4. Geben Sie die folgende SQL-Anweisung ein:

    ALTER TABLE Cars ADD COLUMN Condition TEXT(10)

  5. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Seitenanfang

Erstellen eines Indexes

Zum Erstellen eines Indexes für eine vorhandene Tabelle verwenden Sie den CREATE INDEX-Befehl. Der CREATE INDEX-Befehl hat die folgende Syntax:

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

Die einzigen obligatorischen Elemente sind der CREATE INDEX-Befehl, der Name des Index, das Argument ON, der Name der Tabelle, die die Felder enthält, die Sie indizieren möchten, sowie die Liste der Felder, die in den Index eingeschlossen werden sollen.

  • Mit dem Argument DESC wird festgelegt, dass der Index in absteigender Reihenfolge erstellt werden soll, was hilfreich sein kann, wenn Sie häufig Abfragen ausführen, mit denen Sie nach den höchsten Werten des indizierten Feldes suchen. oder mit denen das indizierte Feld in absteigender Reihenfolge sortiert wird. Standardmäßig wird ein Index in aufsteigender Reihenfolge erstellt.

  • Mit dem Argument WITH PRIMARY werden das oder die indizierten Felder als Primärschlüssel der Tabelle eingerichtet.

  • Das Argument WITH DISALLOW NULL sorgt dafür, dass in das indizierte Feld ein Wert eingegeben werden muss, d. h. Nullwerte sind unzulässig.

Einmal angenommen, Sie verfügen über eine Tabelle mit Namen "Cars" mit Feldern, in denen Sie den Namen, das Baujahr, den Preis und den Zustand von Gebrauchtwagen speichern, deren Kauf Sie in Betracht ziehen. Nehmen wir darüber hinaus an, dass die Tabelle recht umfangreich geworden ist und dass Sie das Feld mit dem Baujahr häufig in Abfragen verwenden. Sie können nun mit dem folgenden Verfahren einen Index für das Feld "Year" erstellen, damit die Abfrageergebnisse schneller zurückgegeben werden:

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.

  2. Schließen Sie das Dialogfeld Tabelle anzeigen.

  3. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Datendefinition.

    Der Entwurfsbereich wird ausgeblendet, und die Objektregisterkarte SQL-Ansicht angezeigt.

  4. Geben Sie die folgende SQL-Anweisung ein:

    CREATE INDEX YearIndex ON Cars (Year)

  5. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Seitenanfang

Erstellen einer Einschränkung oder einer Beziehung

Mit einer Einschränkung wird eine logische Bedingung festgelegt, der ein Feld oder eine Kombination aus Felder entsprechen muss, wenn Werte eingefügt werden. Beispielsweise verhindert die Einschränkung UNIQUE, dass in das mit der Einschränkung versehene Feld ein Wert eingegeben wird, der bereits vorhanden ist, sodass keine Duplikate möglich sind.

Eine Beziehung ist ein Einschränkungstyp, der auf die Werte eines Felds oder einer Kombination aus Feldern in einer anderen Tabelle verweist, um zu ermitteln, ob ein Wert in das eingeschränkte Feld bzw. die Feldkombination eingegeben werden kann.

Verwenden Sie zum Erstellen einer Einschränkung eine CONSTRAINT-Klausel in einem CREATE TABLE- oder ALTER TABLE-Befehl. Es gibt zwei Arten von CONSTRAINT-Klauseln: eine zum Erstellen einer Einschränkung für ein einzelnes Feld, und eine weitere zum Erstellen einer Einschränkung für mehrere Felder.

Einschränkungen für einzelne Felder

Eine CONSTRAINT-Klausel für ein einzelnes Feld folgt unmittelbar auf die Definition des Felds, das hiermit eingeschränkt wird, und weist die folgende Syntax auf:

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

Einmal angenommen, Sie verfügen über eine Tabelle mit Namen "Cars" mit Felder, in denen Sie den Namen, das Baujahr, den Preis und den Zustand von Gebrauchtwagen speichern, deren Kauf Sie in Betracht ziehen. Nehmen wir weiter an, dass Sie häufig vergessen, einen Wert für den Zustand des Wagens einzugeben, diese Angabe aber immer aufgezeichnet werden soll. Sie können nun eine Einschränkung für das Feld "Condition" erstellen, die verhindert, dass das Feld leer bleibt. Gehen Sie hierzu wie folgt vor:

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.

  2. Schließen Sie das Dialogfeld Tabelle anzeigen.

  3. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Datendefinition.

    Der Entwurfsbereich wird ausgeblendet, und die Objektregisterkarte SQL-Ansicht angezeigt.

  4. Geben Sie die folgende SQL-Anweisung ein:

    ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL

  5. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Nehmen wir nun an, dass Sie nach einiger Zeit feststellen, dass das Feld "Condition" zahlreiche ähnliche Werte enthält, die eigentlich gleich sein sollten, d. h. das bei einigen Wagen als Wert für "Condition" der Eintrag poor (armselig) und bei anderen der Eintrag bad (schlecht) vorgenommen wurde. Nachdem Sie die Werte so bereinigt haben, dass sie konsistenter sind, könnten Sie eine Tabelle mit Namen "CarCondition" mit einem Feld mit Namen "Condition" erstellen, die alle Werte enthält, die Sie für die Beschreibung des Zustands von Gebrauchtwagen verwenden möchten:

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.

  2. Schließen Sie das Dialogfeld Tabelle anzeigen.

  3. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Datendefinition.

    Der Entwurfsbereich wird ausgeblendet, und die Objektregisterkarte SQL-Ansicht angezeigt.

  4. Geben Sie die folgende SQL-Anweisung ein:

    CREATE TABLE CarCondition (Condition TEXT(10))

  5. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

  6. Geben Sie zum Einfügen der Werte aus dem Feld "Condition" der Tabelle "Cars" in die neue Tabelle "CarCondition" die folgende SQL-Anweisung auf der Objektregisterkarte "SQL-Ansicht" ein:

    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    Hinweis : Die SQL-Anweisung in diesem Schritt ist eine Anfügeabfrage. Im Gegensatz zu einer Datendefinitionsabfrage wird eine Anfügeabfrage mit einem Semikolon abgeschlossen.

  7. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Damit alle neuen Werte, die in das Feld "Condition" der Tabelle "Cars" eingegeben werden, einem Wert des Felds "Condition" in der Tabelle "CarCondition" entsprechen, können Sie nun eine Beziehung zwischen dem Feld "Condition" in den Tabellen "CarCondition" und "Cars" erstellen. Gehen Sie hierzu wie folgt vor:

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.

  2. Schließen Sie das Dialogfeld Tabelle anzeigen.

  3. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Datendefinition.

    Der Entwurfsbereich wird ausgeblendet, und die Objektregisterkarte SQL-Ansicht angezeigt.

  4. Geben Sie die folgende SQL-Anweisung ein:

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

  5. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Einschränkungen für mehrere Felder

Eine CONSTRAINT-Klausel, die sich auf mehrere Felder bezieht, kann nur außerhalb einer Felddefinitionsklausel verwendet werden und weist die folgende Syntax auf:

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

Nun wollen wir eine weiteres Beispiel in Verbindung mit der Tabelle "Cars" betrachten. Einmal angenommen, Sie möchten sicherstellen, dass es in der Tabelle "Cars" keine Datensätze gibt, die den gleichen Wertesatz für "Name", "Year", "Condition" und "Price" aufweisen. In diesem Fall können Sie mit dem folgenden Verfahren eine UNIQUE-Einschränkung erstellen, die für diese Felder gilt:

  1. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.

  2. Schließen Sie das Dialogfeld Tabelle anzeigen.

  3. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Datendefinition.

    Der Entwurfsbereich wird ausgeblendet, und die Objektregisterkarte SQL-Ansicht angezeigt.

  4. Geben Sie die folgende SQL-Anweisung ein:

    ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (name, year, condition, price)

  5. Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.

Seitenanfang

Hinweis : Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Ihre Fähigkeiten erweitern
Schulung erkunden
Neue Funktionen als Erster erhalten
An Office Insider teilnehmen

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×