Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel 12 MySQL und PostgreSQL
  gp 12.1 Relationales Datenbanksystem
  gp 12.2 Relationaler Datenbankserver
  gp 12.3 SQL-Server im Überblick
  gp 12.4 MySQL
    gp 12.4.1 Anwendungsgebiete von MySQL
    gp 12.4.2 Schnittstellen von MySQL
    gp 12.4.3 Installation von MySQL
    gp 12.4.4 MySQL-Server starten und stoppen
    gp 12.4.5 Konfigurationsdatei my.cnf
    gp 12.4.6 Kommandozeilenwerkzeuge für und von mysql
    gp 12.4.7 Grafische Clients
    gp 12.4.8 MySQL-Crashkurs
    gp 12.4.9 Datentypen
    gp 12.4.10 Datenbank anlegen, verwenden und löschen
    gp 12.4.11 Tabelle anlegen
    gp 12.4.12 Schlüsselfelder (Tabellen anlegen)
    gp 12.4.13 Indizes
    gp 12.4.14 Tabellentypen (Tabellen anlegen)
    gp 12.4.15 Autowerte definieren
    gp 12.4.16 Tabellen umbenennen und ändern
    gp 12.4.17 Daten einfügen, ändern und löschen
    gp 12.4.18 Daten importieren
    gp 12.4.19 Datenausgabe
    gp 12.4.20 NULL ist 0 oder undefiniert?
    gp 12.4.21 Unscharfe Suche
  gp 12.5 MySQL C-API
    gp 12.5.1 Verbindung mit dem MySQL-Server aufbauen
    gp 12.5.2 Aufgetretene Fehler ermitteln – mysql_errno() und mysql_error()
    gp 12.5.3 Schließt die Verbindung zum Server – mysql_close()
    gp 12.5.4 Erstes Beispiel
    gp 12.5.5 Verschiedene Informationen ermitteln
    gp 12.5.6 Datenbanken, Tabellen und Felder ausgeben (MYSQL_RES)
    gp 12.5.7 Ergebnismenge zeilenweise bearbeiten (MYSQL_ROW)
    gp 12.5.8 Ergebnismenge spaltenweise einlesen (und ausgeben) (MYSQL_FIELD)
    gp 12.5.9 Ein Beispiel
    gp 12.5.10 Ergebnismenge – weitere Funktionen
    gp 12.5.11 Befehle an den Server – mysql_query() und mysql_real_query()
    gp 12.5.12 Weitere Funktionen
    gp 12.5.13 Veraltete Funktionen
    gp 12.5.14 Neue Funktionen ab Version 4.1.x
  gp 12.6 Beispiel eines Newssystems mit MySQL
    gp 12.6.1 Die Headerdatei my_cgi.h
    gp 12.6.2 (Pseudo-)Planung
    gp 12.6.3 Datenbank und Tabellen anlegen
    gp 12.6.4 MySQL-Clients mit GUI
    gp 12.6.5 Randnotiz
  gp 12.7 Neue SQL-Funktionen für die Shell – MySQL erweitern
  gp 12.8 MySQL-Funktionen mit der UDF-Schnittstelle entwerfen
    gp 12.8.1 UDF-Sequenzen
    gp 12.8.2 UDF_INIT-Struktur
    gp 12.8.3 UDF_ARGS-Struktur
    gp 12.8.4 Rückgabewert
    gp 12.8.5 Benutzerdefinierte Funktionen erstellen
    gp 12.8.6 Benutzerdefinierte Funktion kompilieren, installieren und ausführen
  gp 12.9 PostgreSQL – objektrelationales Datenbankverwaltungssystem
    gp 12.9.1 PostgreSQL im Vergleich zu MySQL
    gp 12.9.2 Unterschiede in der Syntax zwischen MySQL und PostgreSQL
    gp 12.9.3 PostgreSQL installieren
    gp 12.9.4 Konfigurationsdateien bei PostgreSQL – (postgresql.conf, pg_hba_conf)
    gp 12.9.5 CRASHKURS PostgreSQL
    gp 12.9.6 PostgreSQL C-API – libpg
    gp 12.9.7 Umgebungsvariablen und Passwortdatei
    gp 12.9.8 PostgreSQL und Threads
    gp 12.9.9 Ausblick


Rheinwerk Computing

12.7 Neue SQL-Funktionen für die Shell – MySQL erweitern  toptop

Um gleich Missverständnisse zu diesem Abschnitt zu vermeiden, hier geht es nicht mehr um die C-API von MySQL. Es geht darum, neue – oder besser – benutzerdefinierte Funktionen in C zu erstellen und zur MySQL-Shell hinzuzufügen. MySQL wurden mittlerweile zahlreiche Funktionen z. B. mathematischer Natur (COS(), SIN() ...) oder zur Stringmanipulation (CONCAT() ...) hinzugefügt. Hier ein Beispiel anhand der mathematischen Funktion COS(), wie Sie Funktionen in der MySQL-Shell (und natürlich auch bei Ihrer Clientanwendung mit mysql_real_query()) verwenden können:

mysql> CREATE DATABASE rechnungen;
Query OK, 1 row affected (0.26 sec)
mysql> USE rechnungen;
Database changed 
mysql> CREATE TABLE xyz ( erg FLOAT );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO xyz (erg) VALUES ( COS(2.32) );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO xyz (erg) VALUES ( COS(12.22) );
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM xyz;
+-----------+
| erg       |
+-----------+
| -0.681056 |
|  0.940611 |
+-----------+
2 rows in set (0.00 sec)

Wenn Sie jetzt MySQL um eigene Funktionen erweitern wollen, haben Sie zwei Möglichkeiten:

gp  Sie fügen die Funktion dynamisch zur Laufzeit über die UDF-Schnittstelle hinzu (UDF = User-Definable Function). Dabei fügen Sie die benutzerdefinierte Funktion dynamisch mit CREATE FUNCTIONS hinzu oder löschen diese wieder mit DROP FUNCTONS. Der Vorteil gegenüber der gleich folgenden zweiten Möglichkeit an benutzerdefinierten Funktionen ist, Sie können jederzeit zu Ihrer binären Distribution Funktionen hinzufügen und müssen nicht den kompletten Server-Quellcode (mysqld) verändern. Und bei einer Aktualisierung Ihrer MySQL-Distribution können Sie die zuvor installierten benutzerdefinierten Funktionen weiterhin verwenden.
gp  Die zweite Möglichkeit erfordert etwas mehr Erfahrung im Umgang mit MySQL. Sie fügen Funktionen nativ zum MySQL-Server hinzu. Das bedeutet allerdings, dass Sie den Server neu kompilieren müssen – auch bei einem Versionswechsel. Der Vorteil hierbei ist, da ja die Funktionen fest einkompiliert sind, dass Sie die Funktionen nicht extra installieren müssen und sie wie übliche MySQL-Funktionen verwenden können.

Im Folgenden soll Ihnen anhand von recht einfachen und primitiven Beispielen gezeigt werden, wie Sie die UDF-Schnittstelle verwenden und Ihre selbst geschriebenen Funktionen in MySQL erstellen können.

 << zurück
  
  Zum Katalog
Zum Katalog: Linux-UNIX-Programmierung
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Katalog: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Katalog: Shell-Programmierung






 Shell-
 Programmierung


Zum Katalog: Linux Handbuch






 Linux Handbuch


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de