Hauptmenü

Untermenü

MySQL - SQL - Funktionen

1. Einführung

Genau wie in PHP bietet uns SQL etliche vorgegebene Funktionen, mit denen bestimmte Operationen durchgeführt werden. Allerdings gibt es da je nach RDMS Unterschiede. Darum konzentriere ich mich natürlich auf die von MySQL. Wer sich jetzt fragt, ob man Funktionen jetzt auch selber wie in echten Programmiersprachen" definieren kann, den muss ich ein wenig enttäuschen. Prinzipiell ist es möglich. Wenn sie in C++ geschrieben sind, in einer Datenbank gespeichert wurden und obendrein das dynamische Laden von Bibliotheken erlaubt ist. Also vergesst es erst mal.

Aufgepasst!

Bei einigen(!) Funktion darf zwischen dem Namen und der ersten öffnenden Klammer kein Leerzeichen enthalten sein, sonst gibt es eine Fehlermeldung! Lasst also im Zweifelsfall das Leerzeichen weg.


# Das funktioniert
FUNKTION(irgendwas)
# Das NICHT
FUNKTION (irgendwas)

Eine Besonderheit

Man kann MySQL mittels IGNORE_SPACE in einen Modus versetzen, wo man nach der Funktion ein Leerzeichen setzen darf, ohne dass das Statement fehlerhaft ist. Man muss dabei aber auf zwei Dinge achten. Erstens müssen so genannte Schlüsselwörter in Backticks gesetzt werden, wenn sie Tabellen oder Spalten darstellen.


# Falsch
INSERT INTO count (idnum);
# Richtig
INSERT INTO `count` (idnum);

Und zweitens kann man sich nicht darauf verlassen, dass der Modus vorhanden ist. Also immer schön das Leerzeichen weglassen. Auch wenn es einem schwer fällt. So wie mir.

2. Wichtig!

Hier gibt es definitiv keine komplette Übersicht, sondern nur eine klitzekleine Auswahl der gebräuchlichsten und sinnvollen Funktionen, die uns von MySQL zur Verfügung gestellt wird. Eine komplette Auflistung (MySQL 5.1) findet ihr hier.

Wer schon mal einen Blick in das Online-Handbuch geworfen hat, findet dort immer wieder Beispiele, die zwar möglich, aber in Kombination mit einer Programmiersprache wie PHP überflüssig wie ein Kropf(f) sind. Dazu habe ich ja schon bei der Übersicht unter dem Punkt "Tinnef" meinen Senf dazugegeben.

Ein Tipp

Benutzt die folgenden Funktionen nur dann, wenn es sich auf Inhalte(!) von Datenbanken bezieht. Oder anders ausgedrückt, wenn ihr euch damit einen weiteren Programmierschritt ersparen könnt. Auch wenn ich jetzt ein wenig vorgreife, so zeige ich euch mal, wie man sie sinnvoll nutzt. Und das geschieht üblicherweise nur in SELECT- und WHERE-Blöcken.

3. Zwei grundsätzliche Beispiele

Länge einer Zeichenkette

Man will aus einem unerfindlichen Grund die Anzahl von Zeichen in einem Feld herausfinden. Jetzt könnte man auf die Idee kommen, den String über eine Abfrage zu holen und die Länge mit strlen per PHP zu prüfen. Das ist in diesem Fall aber überflüssig, da uns MySQL schon eine entsprechende Funktion mitgibt.


SELECT CHAR_LENGTH(feldnameFROM tabelle WHERE id 1;

Berechnung einer Summe

Möchte man zum Beispiel bei einem Online-Shop eine Statistik erstellen und auflisten, welches Produkt für welchen Umsatz gesorgt hat, so kann man das wunderbar per SQL erledigen.


SELECT SUM(preis anzahlFROM bestellung where id 4;

Auch in diesem Fall wäre es ziemlich suboptimal, erst alle Produkte und die Anzahl der Bestellungen zu holen, um dann die jeweilige Summe per PHP zu berechnen.

4. Mathematische Funktionen

... habe ich bis dato nur ein Mal genutzt, als es um die Berechnung von Geokoordinaten in einer Datenbank ging. Warum nicht öfter? Weil man das meiner Meinung nach in den meisten Fällen auch wunderbar per PHP machen kann. Wen es trotzdem interessiert, der findet wie gehabt einen kompletten Überblick im Online-Handbuch.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt