Kapitel 20
Die Abfragesprache SQL
418
Unterabfragen mit EXISTS
Mithilfe des Befehlswortes EXISTS ermitteln Sie, ob eine Unterabfrage ein Ergebnis zurückliefert.
Abfragen mit EXISTS verwenden normalerweise so genannte korrelierte Unterabfragen. Bei diesen
Unterabfragen wird ein Wert der die Unterabfrage umgebenden Abfrage in der Bedingung der
Unterabfrage verwendet, d.h., für jeden Wert der Abfrage wird die Unterabfrage mit der entspre-
chenden Bedingung ausgeführt.
Für welche Filme aus der Tabelle tblFilme existieren keine Einträge in der Tabelle tblWochen? In der
SQL-Abfrage wird die FilmNr von tblFilme in der Bedingung der Unterabfrage eingesetzt (Abfrage:
qrysubFilmeNichtGeplant).
Datendefinitionsabfragen
In den folgenden Abschnitten soll die Erstellung und Änderung von Tabellen mithilfe von SQL-
Datendefinitionsbefehlen (»SQL-Data Definition Language«, abgekürzt »DDL«) beschrieben wer-
den. Nach unserer Erfahrung werden die hier beschriebenen Befehle in Access selten eingesetzt, aber
für einige Aufgaben sind sie notwendig.
Zur Erstellung einer Datendefinitionsabfrage rufen Sie in der Abfrage-Entwurfsansicht die Register-
karte Entwurf/Gruppe Abfragetyp/Schaltfläche Datendefinition auf, um ein Fenster zur Erfassung
von DDL-Befehlen zu öffnen.
DDL-Befehle für Tabellen
Mit
CREATE TABLE
und
ALTER TABLE
stehen Ihnen Befehle zum Erstellen und Ändern von Tabellen zur
Verfügung.
Erstellen einer Tabelle
Die allgemeine Form des SQL-DDL-Befehls zur Erstellung einer Tabelle lautet:
Die Bezeichnungen der Feldtypen, z.B.
Text
,
Integer
,
Double
usw., können Sie der Access-Hilfe ent-
nehmen. Für
[Index]
können Sie eine
CONSTRAINT
-Klausel einsetzen, die weiter unten beschrieben
ist. Mit dem Befehl
legen Sie beispielsweise eine Tabelle tblFilme mit drei Feldern an.
SELECT tblFilme.Filmtitel
FROM tblFilme
WHERE
Exists (SELECT * FROM tblWochen
WHERE tblFilme.FilmNr = tblWochen.FilmNr)=False
ORDER BY tblFilme.Filmtitel
CREATE TABLE Tabelle (Feld1 Typ [(Größe)][Index1], Feld2 Typ [(Größe)][Index2], ...)
CREATE TABLE tblFilme (FilmNr COUNTER, Filmtitel TEXT, Zusatztext MEMO)
Datendefinitionsabfragen
419
Abfragen
Ändern einer Tabelle
Mithilfe der DLL-Anweisung
ALTER TABLE
können Sie neue Felder zu Tabellen hinzufügen bzw.
Felder aus Tabellen löschen.
lautet die allgemeine Form des Befehls. So fügt beispielsweise der Befehl
der Tabelle tblFilme ein Feld
Original
vom Typ
Text
mit der Länge 50 Zeichen hinzu. Mit
entfernen Sie das Feld wieder.
Löschen einer Tabelle
Eine Tabelle kann mit dem Befehl
DROP
gelöscht werden, beispielsweise entfernt die Befehlszeile
die Tabelle tblFilme aus der Datenbank.
DDL-Befehle für Indizes
Mithilfe der Befehle
CREATE INDEX
und
DROP INDEX
können Sie neue Schlüssel erstellen bzw. vor-
handene löschen.
Erstellen eines Indexes
Der SQL-DDL-Befehl
CREATE INDEX
ermöglicht es Ihnen, einen neuen Index zu einer Tabelle hinzu-
zufügen. Allgemein wird der Befehl durch
beschrieben. In der einfachsten Form erzeugt
einen aufsteigenden Index für das Feld
Original
der Tabelle tblFilme, während
einen Primärschlüssel erstellen würde.
ALTER TABLE Tabelle {ADD {COLUMN Feld Typ[(Größe)] [CONSTRAINT Index] | CONSTRAINT
Mehrfelderindex} |
DROP {COLUMN Feld I CONSTRAINT Indexname } }
ALTER TABLE tblFilme ADD COLUMN Original Text (50)
ALTER TABLE tblFilme DROP COLUMN Original
DROP TABLE tblFilme
CREATE [ UNIQUE ] INDEX Index
ON Tabelle (Feld [ASC|DESC][, Feld [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
CREATE INDEX Original ON tblFilme (Original)
CREATE INDEX FilmNr ON tblFilme (FilmNr) WITH PRIMARY

Get Microsoft Office Access 2007 - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.