SQL-Konsole zur effektiven Datenbankverwaltung

Datenbank

Wussten Sie schon, dass sich viele Aufgaben der täglichen Datenbankverwaltung mit einer einzigen SQL-Anweisung erledigen lassen?

Dazu sind noch nicht einmal umfangreiche SQL-Kenntnisse notwendig. Sie benötigen lediglich ein wenig Hintergrundwissen und ein Werkzeug, das Ihnen die Eingabe und direkte Ausführung von SQL-Anweisungen ermöglicht. Beides bieten wir Ihnen in diesem Beitrag an. Nutzen Sie außerdem unser kostenloses Tool, damit Sie Ihre Datenbanken in Zukunft wesentlich schneller verwalten können.

Im ersten Schritt müssen Sie dazu unsere Lösung, die aus einem einzigen Formular samt VBA-Code besteht, in Ihre Datenbank importieren.

Wir haben daher eine Beispieldatenbank vorbereitet. Um die Lösung in Ihren Anwendungen einzusetzen, übertragen Sie das Formular „SQL-Direkteingabe“ in Ihre Datenbank. Für diesen Zweck verwenden Sie in Access 2003, 2002/XP, 2000 und 97 das Menü DATEI-EXTERNE DATEN-IMPORTIEREN.

In Access 2007 wechseln Sie in der Multifunktionsleiste auf die Registerkarte „Externe Daten“ und klicken in der Gruppe „Importieren“ auf die Schaltfläche ACCESS. Lokalisieren Sie im nachfolgenden Dialog per DURCHSUCHEN die Beispieldatenbank, aktivieren Sie die Option IMPORTIEREN SIE TABELLEN, ABFRAGEN, FORMULARE…IN DIE AKTUELLE DATENBANK und klicken Sie auf OK. Markieren Sie danach das Formular, klicken Sie auf OK und bestätigen Sie die Abschlussmeldung mit SCHLIEßEN.

Anschließend können Sie das Formular ganz einfach per Doppelklick öffnen. Es besteht aus einem mehrzeiligen Textfeld und einer Schaltfläche. Nach der Eingabe einer SQL-Anweisung drücken Sie zweimal die Return-Taste und die SQL-Anweisung wird sofort ausgeführt.

Für mehr zeilige SQL-Anweisungen fügen Sie einen Zeilenumbruch mit der Tastenkombination Strg+Return-Taste ein. Durch das zweimalige Drücken der Return-Taste wird die Eingabe im Textfeld abgeschlossen und die Schaltfläche SQL betätigt.

Die Ereignisprozedur „Beim Klicken“ dieser Schaltfläche liest den Inhalt des Textfeldes aus und übergibt ihn zur Ausführung mit der Anweisung „DoCmd.RunSQL“ an Access.

Tritt dabei ein Fehler auf, wird dazu eine Meldungsbox angezeigt, nach deren Bestätigung Sie Ihre Eingabe prüfen und korrigieren können. Im Folgenden einige Beispiele dafür, wie Sie Ihre Datenbank per SQL in Zukunft noch schneller verwalten können.

Tabelleninhalte ganz einfach löschen
Vor einem Datenimport oder nach Testläufen in einer Kundendatenbank müssen häufig die Inhalte verschiedener Tabellen gelöscht werden. Dazu setzen Sie einfach die SQL-Anweisung „DELETE“ wie folgt ein:

DELETE * FROM Tabelle

Für „Tabelle“ geben Sie dabei den Namen der Tabelle an, deren Inhalt gelöscht werden soll. Die Anweisung veranlasst Access, alle Datensätze aus der angegebenen Tabelle zu löschen, die Tabelle selbst aber in der Datenbank zu belassen. Die Tabelle kann also anschließend zum Beispiel über einen Import wieder gefüllt werden. Möchten Sie nur bestimmte Datensätze aus einer Tabelle löschen, können Sie eine „WHERE“-Klausel einsetzen, die die Datensätze spezifiziert.

Die folgende SQL-Anweisung löscht zum Beispiel alle alten Kundenanfragen aus dem Jahr 2000 aus einer Tabelle „Anfragen“:

DELETE * FROM [Kunden-Anfragen]WHERE Year([Anfrage-Datum])=2007

Bitte beachten Sie dabei:
Die Funktion „Year()“ ist eine Access-Funktion, die für das als Parameter angegebene Datum nur die Jahreszahl als Ergebnis liefert. Die SQL-Anweisung selektiert dann nur die Datensätze, bei denen das Anfragedatum zwischen dem 1.1.2007 und dem 31.12.2007 liegt.

Bitte beachten Sie, dass solche Löschungen nicht rückgängig gemacht werden können! Außerdem sollten Sie Tabellen oder Feldnamen, die Sonderzeichen wie beispielsweise den Bin de strich enthalten, in eckige Klammern setzen!

Komplette Tabellen entfernen
Wenn Sie Tabellen komplett aus der Datenbank löschen möchten, nutzen Sie die SQL-Anweisung „DROP TABLE“ wie folgt:

DROP TABLE Tabelle

Für „Tabelle“ geben Sie den Namen der Tabelle an, die komplett gelöscht werden soll. Auch hier ist zu beachten, dass diese Aktion nicht rückgängig gemacht werden kann und Sie Tabellennamen mit Sonderzeichen in eckige Klammern setzen müssen!

Definitionen Ihrer Tabellen ändern
Gelegentlich müssen in Tabellen neue Felder mit jeweils gleichem Namen und gleichem Datentyp hinzugefügt werden.

Zum Beispiel:
Verschiedene Tabellen sollen um ein Feld „EMail“ erweitert werden. Anstatt jede Tabelle im Entwurfsmodus zu öffnen und das Feld hinzuzufügen, geben Sie im Formular „SQL-Direkteingabe“ eine SQL-Anweisung wie die folgende ein:

ALTER TABLE Personal ADD COLUMN EMail TEXT(200)

Diese Anweisung fügt der Tabelle „Personal“ ein Feld „EMail“ hinzu und setzt dessen Feldgröße auf 200 Zeichen.

Nachdem diese Anweisung ausgeführt ist, ändern Sie einfach nur den Namen der Tabelle auf die nächste anzupassende Tabelle und in kürzester Zeit haben Sie alle betroffenen Tabellen geändert, ohne jedes Mal in den Tabellenentwurf wechseln zu müssen. Natürlich können Sie auch Felder mit anderen Datentypen über eine solche SQL-Anweisung hinzufügen.

Geben Sie dazu beispielsweise statt „TEXT(xxx)“ „DATE“ für Datums-/Zeitfelder oder „CURRENCY“ für Währungsfelder an. Weitere mögliche Typen sind in der Online-Hilfe aufgelistet.

Ähnlich einfach können Sie übrigens auch Felder aus mehreren Tabellen löschen. Die folgende Anweisung löscht zum Beispiel das Feld „PreisInDM“ aus einer Tabelle „Artikel“:

ALTER TABLE Artikel DROP COLUMN PreisInDM

Feldinhalte auf den neuesten Stand bringen Um z. B. den Preis für einen Artikel um 20 % zu erhöhen, setzen Sie normalerweise eine Aktualisierungsabfrage ein. Auch hier kann eine SQL-Anweisung viel Zeit sparen:

UPDATE Artikel SET VKPreis = VKPreis * 1.2

Diese Anweisung multipliziert den aktuellen Inhalt des Feldes „VKPreis“ mit „1.2“ und schreibt das Ergebnis dann zurück in das Feld. Auf Wunsch können Sie wieder mit Kriterien arbeiten und zum Beispiel nur Artikel einer bestimmten Warengruppe aktualisieren:

UPDATE Artikel SET VKPreis = VKPreis * 1.2 WHERE Warengruppe = ‚Grafikkarten‘

Wenn Sie diese „WHERE“-Klausel einmal mit der aus Beispiel 1 vergleichen, sehen Sie, dass Vergleiche auf Textfelder immer mit, Vergleiche auf Werte aber ohne Hochkommas anzugeben sind.

Zusammenführen von Tabellen
Zum Abschluss noch eine SQL-Anweisung, die besonders nützlich für das Zusammenführen von vorhandenen und neuen Datensätzen ist. Zunächst eine ganz einfache Anweisung, die Adressen aus einer Tabelle „Neue Adressen“ in einen vorhandenen Adressenstamm übernimmt.

Nachdem die Tabelle in die Datenbank importiert ist, fügt die folgende Anweisung die neuen Datensätze aus der Tabelle „NeueAdressen“ in die vorhandene Tabelle „Adressen“ ein:

INSERT INTO Adressen SELECT * FROM NeueAdressen

Auch hier können Sie gegebenenfalls wieder mit Kriterien arbeiten, um zum Beispiel nur Adressen von Kunden aus Deutschland aufzunehmen:

INSERT INTO Adressen SELECT * FROM NeueAdressen WHERE Land´ = ‚Deutschland‘

Außerdem ist es möglich, auf diesem Wege direkt einen einzelnen neuen Datensatz per SQL-Anweisung anlegen:

INSERT INTO Adressen (Vorname, Nachname, Strasse, PLZ, Ort) VALUES (‚Johannes‘, ‚Schmidt‘, ‚Am Bahnhof 12‘, 80911, ‚München‘)

Hinter „INSERT INTO Tabelle“ geben Sie zunächst in Klammern die Namen der Felder ein, die mit den ebenfalls in Klammern stehenden Zeichenketten und Werten hinter dem Schlüsselwort „VALUES“ gefüllt werden sollen. Texte sind wieder in einfache Hochkommas einzuschließen, numerische Werte oder Zahlen geben Sie ohne Hochkommas an.