# Das KSqlShell Handbuch

Olaf
Gawenda

    o.gawenda@gmx.de

Olaf
Gawenda

    o.gawenda@gmx.de

Entwickler und Betreuer
2003
Olaf Gawenda
&FDLNotice;
31/07/2003
0.1.0

&ksqlshell; ist ein Client für die Datenbanksysteme MySql und PostgreSql unter KDE.

Datenbank
mysql
postgresql

## Einleitung

&ksqlshell; eignet sich besonders für den gleichzeitigen Zugriff auf verschiedene Datenbankserver und soll dabei helfen den Überblick zu bewahren. Durch das GUI werden bis jetzt folgende Funktionen unterstützt:

- Erstellung von Datenbanken und Tabellen

- Ändern von Feldnamen und Typen an bestehenden Tabellen

- Absetzen von SQL- Befehlen mit Eingabedialog für vorzugebende Werte

- Einfaches Speichern und Verwalten der SQL-Befehle

- Einfügen, Ändern und Löschen von Werten in der Tabellenansicht

- Transponieren der Tabellenansicht

## Installation

Erforderlich sind QT3.x und die Entwicklerpakete "mysql-devel" sowie "postgresql-devel".

Zum Compilieren des Programms sind die folgenden Befehle einzugeben:

    % ./configure --prefix="kdedir"
    % make
    % make install

Bei Fehlern im Programm benachrichtigen Sie bitte den Autor Olaf Gawenda.

## Verwendung von KSqlShell

### Übersicht

Die Oberfläche teilt sich in die Bereiche "Navigation", "Ausgabe" und "Befehlseingabe".

#### Navigation

Die erste Spalte der Navigationsleiste zeigt hierarchisch die "Serververbindungen", "Datenbanken", "Tabellen" sowie die "Felder". In der zweiten ist der Status der Verbindung, die Anzahl der Tabelleneinträge bzw. der Feldtyp zu sehen. Durch drücken der rechten Maustaste auf einen dieser Einträge erhält man ein Menü in dem abhängig von der Art des Eintrages Aktionen wie z.B. das Umbenennen einer Tabelle gestartet werden können.

#### Ausgabe

Im Ausgabefenster können neben den Resultaten von SQL-Abfragen die Liste der Felder von Tabellen mit ihren Attributen sowie die Befehlsliste angezeigt werden. Durch drücken der rechten Maustaste auf einen der Karteireiter erscheint ein Menü mit den Punkten "Fenster lösen", "umbenennen" und "schließen". "Fenster lösen" läßt die Ausgabe in einem eigenen Fenster erscheinen und mit "umbenennen" kann der Name geändert werden.

Bis auf die Befehlsliste und die Fehleranzeige unterteilt sich jedes Ausgabefenster in ein Textfeld mit div. Informationen sowie einer Tabellenansicht und enthält u.a. die Schaltflächen: "Fenster lösen / einfügen", "schließen" und "neu laden" (Befehl wird erneut ausgeführt und das Resultat erscheint im gleichen Fenster).

#### Befehlseingabe

Dieses Texteingabefeld dient zum Absetzen von SQL-Befehlen. Der Prompt zeigt dabei die Verbindung sowie die Datenbank an, an die der Befehl geschickt wird. Über die Navigationsleiste kann beides geändert werden.

Um einen Befehl auszuführen, ist am Ende ein Semikolon einzugeben und die Eingabetaste zu drücken. Mehrere Befehle (durch Semikolon getrennt) werden nacheinander ausgeführt.

### Einrichtung einer Datenbankverbindung

Klicken auf "neue Verbindung" oder im Menü "Verbindungen" den Punkt "neue Verbindung" wählen. Es erscheint ein Eingabedialog, in dem der Datenbanktyp, die IP oder der Servername, Port, Benutzer, Passwort sowie eine Datenbank auf dem Server einzugeben sind.

### Erstellen einer Datenbank

Über "neue Datenbank" gelangt man zu einem Eingabefeld, in dem der Name der neuen Datenbank angegeben wird. Ist die Datenbank angelegt, so erscheint sie in der Navigationsleiste.

### Erstellen einer Tabelle

Der Dialog für das Einrichten einer neuen Tabelle ist über die entsprechende Schaltfläche oder über, das durch Rechtsklick auf eine Datenbank in der Navigationsleiste erscheinende Menü, zu erreichen. Er unterscheidet sich in Abhängigkeit vom Datenbanktyp (PgSql oder MySql).

In beiden Fällen ist der Name der Tabelle anzugeben. Der Dialog enthält nach Aufruf eine Liste mit vier Zeilen und ein Texteingabefeld für den Create-Befehl. Jede Zeile entspricht einer Spalte der neuen Tabelle. Klickt man mit der linken Maustaste auf eine Zeilennummer, so wird ein Menü mit den Punkten "Spalte einfügen" und "Spalte löschen" sichtbar. Damit läßt sich die Anzahl der Felder (Spalten der Tabelle) verändern. Neben dem Feldnamen und dem Typ können die Länge bzw. die Dezimalstellen ("Länge, Dezimal") und ein Attribut wie z.B. "unsigned" vorgegeben werden. Der unter "Standard" eingetragene Wert wird beim Einfügen (Insert-Befehl) in die Tabelle eingetragen, wenn nichts Anderes vorgegeben ist. "Nicht Null" bedeutet, die Wertebelegung des Feldes mit "NULL" (unbekannter Wert) ist nicht zulässig. Die mit "Unique" oder "Primary Key" gekennzeichneten Felder bilden ein Tupel, welches bezüglich jeder in die Tabelle eingetragenen Zeile eindeutig ist bzw. zur eindeutigen Identifikation dieser verwendet werden kann, wobei "Primary Key" eine Kombination von "Nicht Null" und "Unique" darstellt.

Nicht alle Möglichkeiten zur Erstellung einer Tabelle sind über die Liste abbildbar. Durch Klicken auf die Schaltfläche "Create-Befehl ändern" erscheint im Textfeld ein Create-Befehl, der aus der bisherigen Eingabe in die Liste resultiert. Er kann nun geändert und ausgeführt werden. Eine auf diese Art erzeugte Tabelle erscheint nicht sofort in der Navigationsleiste!

Der Dialog für MySql-Datenbanken enthält zusätzlich die Eingabemöglichkeiten: "Index", "Werte" sowie "Optionen". Die Geschwindigkeit des Select-Befehls erhöht sich, wenn nach bestimmten Werten in einer mit "Index" gekennzeichneten Spalte "selektiert" wird. Für die Datentypen "enum" und "set" werden in "Werte" die Menge der erlaubten Werte eingetragen, wobei diese durch ein Komma zu trennen sind (z.B. 'a', '2', 'c'). "Optionen" enthält eine vom Datentyp abhängige Auswahl von Optionen ("auto_increment" für den Typ "int").

Zusätzlich enthält der PgSql-Dialog die Eingabemöglichkeiten "Erbt", "OIDS" und "Check".

### Daten in eine Tabelle eintragen

Über den Menüpunkt "einfügen" des Tabellenmenüs bzw. über die entsprechende Schaltfläche ist der Dialog zum Eintragen von Werten in die Tabelle erreichbar.

Das Dialogfenster enthält eine Liste mit Namen und Typen der Felder sowie die Werteingabe. Sind Standardwerte für Felder der Tabelle vorgegeben worden, so erscheinen diese beim Aufruf des Dialoges unter "Wert". In Abhängigkeit vom Feldtyp sind Anführungszeichen zu setzen (z.B. 'abc' für ein "varchar(10)"-Feldtyp). Es können auch Funktionen wie "now()" in z.B. ein "timestamp"-Feld eingetragen werden, wobei dann keine Anführungszeichen zu verwenden sind.

Ist die Eingabe fehlerhaft (z.B. durch Eintrag eines Buchstabens in ein nummerisches Feld) erscheint eine Fehleranzeige. Durch Klicken auf "neue Eingabe" gelangt man wieder zum Eingabedialog und kann eine Korrektur vornehmen. "Befehl ändern" erlaubt es den Insert-Befehl zu ändern und auszuführen.

### Anzeigen des Inhalts einer Tabelle

Über das Tabellenmenü bzw. die Schaltflächen gibt es zwei Möglichkeiten zum Anzeigen von Tabelleninhalten. Unter "anzeigen (alles)" erhält man alle Zeilen der Tabelle. Durch "anzeigen" wird ein Eingabedialog zum Auswählen bestimmter Zeilen gestartet.

Der Eingabedialog besteht aus einer Liste, wie der für das "Eintragen von Werten", mit Feldnamen und Typen sowie der Werteingabe.

Nach Aufruf des Dialoges sind unter "Wert" keine Einträge vorhanden (man erhält alle Zeilen der Tabelle). Werden für ein oder mehrere Felder Werte mit einem Vergleichsoperator vorgegeben, so schränkt sich die Auswahl der Zeilen auf die ein, für die alle Vergleiche zutreffen. Wie beim Dialog für das "Eintragen von Werten" sind in Abhängigkeit des Feldtyps Anführungszeichen zu setzen und es können Funktionen verwendet werden.

Das Ausgabefenster besteht aus einem Textfeld, einer Eingabemöglichkeit für die folgenden Zeilen und der Tabellenansicht. Im Textfeld sind Verbindung, Datenbank, Tabelle, Zeitpunkt der Abfrage (lokal), die Zeilennummern und der "Select"-Befehl zu sehen. Durch Verschieben der Linie unterhalb des Textfeldes kann es vollständig angezeigt werden. Zum Ändern der Eingabe klickt man auf "neue Eingabe". Es erscheint erneut der Eingabedialog mit den bisher eingetragenen Werten.

Die Ausgabetabelle hat maximal so viele Zeilen, wie unter "Einstellungen" angegeben wurde. Durch klicken auf "folgende Zeilen anzeigen" erhält man die nächsten.

In der Tabellenansicht können direkt Änderungen vorgenommen werden. Dazu ist mit der linken Maustaste auf eine Zeilennummer zu klicken. Es erscheint ein Menü mit den Punkten "andern" (update), "einfügen" (insert) und "löschen" (delete).

Nach Auswahl eines Menüpunktes erscheint dieser anstelle der Zeilennummer. Bei "einfügen" wird eine neue Zeile eingefügt und, so vorhanden, Standardwerte eingetragen. Bis auf "oid" bei PgSql-Datenbanken sind alle Felder editierbar. Mit Klick auf "neu laden" wird der entsprechende SQL-Befehl ausgeführt und der neue Tabelleninhalt angezeigt. Ist "neu laden" noch nicht geklickt worden, so kann durch "rückgängig" der Ausgangszustand wieder hergestellt werden.

Für die Darstellung von Tabellen mit vielen Spalten und wenig Zeilen eignet sich "Ergebnis transponieren".

Bei PgSql-Datenbanken werden Objekt-ID's der Tabellen mit angezeigt.

### Absetzen von SQL-Befehlen

Das Eingeben von SQL-Befehlen erfolgt im Befehlsfenster (rechts unten) nach dem Prompt. Dieser zeigt die Verbindung sowie die Datenbank, an die die Befehle geschickt werden. Wechseln kann man die Verbindung bzw. Datenbank durch Klicken auf die entsprechenden Einträge in der Navigationsliste. Das Abschicken erfolgt durch Eingabe eines Semikolons (am Ende des Befehls) und dem Drücken der Eingabetaste. Sollen mehrere Befehle nacheinander ausgeführt werden, so sind diese durch Semikolas zu trennen.

Bringen dabei ein oder mehrere Befehle Ergebnisse hervor, so werden diese jeweils in einem Ausgabefenster angezeigt. Durch Klicken auf "Befehl ändern und ausführen" oder "neu laden" im Ausgabefenster kann der eingegebene Befehl geändert und ausgeführt bzw. nochmal ausgeführt werden. Ist Letzteres der Fall, so wird das Ergebis im gleichen Fenster mit der aktuellen lokalen Zeit angezeigt.

Das Befehlseingabefenster (Shell) speichert die ausgeführten Befehle in einer Liste (bis zu 1000). Mit den Tasten "Pfeil hoch" bzw. "Pfeil runter" können diese wieder angezeigt werden.

### Speichern und Verwalten von SQL-Befehlen

#### Speichern

Klickt man nach Eingabe eines SQL-Befehls in das Befehlsfenster auf die Schaltfläche "Befehl speichern", so erscheint ein Dialog mit drei Textfeldern. Unter "Speichere Befehl als:" ist ein Name für den Befehl einzutragen. Der Befehl selber erscheint im Feld "Befehl:", wo er nochmals geändert werden kann und im Feld "Befehlsbeschreibung" kann man eine Beschreibung hinterlegen.

Alle Befehle werden in einer XML-Datei, deren Pfand unter "Einstellungen" zu ändern ist, gespeichert.

#### Ausführen von gespeicherten SQL-Befehlen

Der "Datenbankmenüpunkt" (Rechtsklick auf einen Datenbankeintrag in der Navigationsleiste) "Befehl ausführen" zeigt alle Namen der zu dieser Datenbank gespeicherten Befehle an.

Wählt man einen an, so erscheint ein Dialog mit der Befehlsbeschreibung und dem eigentlichen Befehl. Klick auf "OK" führt diesen aus.

#### Eingabe von Werten für SQL-Befehle

Oft ist es erforderlich SQL-Befehle mit veränderlichen Werten auszuführen. Um dabei den Befehl nicht direkt ändern zu müssen, gibt es die Möglichkeit einen Eingabedialog über den SQL-Befehl anzusteuern. Man schreibt dazu genau an der Stelle des SQL-Befehls, an der ein Wert des Eingabedialoges im Befehl erscheinen soll: `<input "Name" ["Typ"]>[Standardwert]</input>`. Die in eckigen Klammern stehenden Angaben sind dabei optional.

Z.B. durch die Eingabe von:

select * from db where Db = <input "Datenbank" "char(64) binary"></input> and Host = <input "Rechner">'localhost'</input>;

im Befehlsfenster erhält man den folgenden Dialog.

Klickt man nun auf "OK", so wird das unter "Wert" Eingetragene an die entsprechenden Stellen in den SQL-Befehl eingesetzt und der Befehl wird ausgeführt. Besteht der Befehl aus mehreren (durch Semikolon getrennten) Einzelbefehlen, so erscheinen die durch "<input ..." gekennzeichneten Werte aller Befehle im Dialog. Gleiche (d.h. im Namen und im Typ gleiche) Input's erscheinen dabei nur einmal.

#### Die Befehlsliste

Über das Menü "Befehle", Menüpunkt "Befehlsliste" erhält man die Liste aller gespeicherten Befehle. Neben der eigentlichen Liste gibt es Textfelder für den Befehl und dessen Beschreibung. Befehl und Beschreibung erscheinen durch Klick auf einen Befehlsnamen in der Liste. Beides kann im jeweiligen Fenster geändert und durch "Befehl speichern" in die Befehlsdatei (siehe: "Einstellungen") übertragen werden. Die Liste kann um neue Verbindungen, Datenbanken und Befehle erweitert werden, wobei Verbindungen bzw. Datenbanken nicht in der Navigationsleiste enthalten sein müssen.

Das Ausführen von Befehlen erfolgt durch den entsprechenden Menüpunkt. Duch "kopieren" bzw. "auschneiden" und "Befehl einfügen" ist es möglich Befehle auf andere Verbindungen bzw. Datenbanken zu übertragen.

## Einrichten von KSqlShell

Neben dem Zeitintervall zur Synchronisation der Navigationsleiste und der maximalen Zeilenzahl in den Ausgabefenstern wird hier die Datei zum Speichern der SQL-Befehle angegeben. Das Zeitintervall sollte mit zunehmender Zahl von Verbindungen, Datenbanken und Tabellen in der Navigationsleiste vergrößert werden.

## Mitwirkende und Lizenz

KSqlShell

Programm Copyright 2003 Olaf Gawenda, o.gawenda@gmx.de

Entwickler

- Olaf Gawenda o.gawenda@gmx.de

Dokumentation Copyright 2003 Olaf Gawenda, o.gawenda@gmx.de

&underGPL; &underFDL;

&documentation.index;