In der Datenbank befinden sich derzeit 477 Specials. Alle Specials anzeigen... |
My- und andere SQL | |
My- und andere SQL
CREATE TABLE serien (SerieID int(11) AUTO_INCREMENT PRIMARY KEY, Titel varchar(30), Autor varchar(30), Genre varchar(30), Verlag varchar(30));
«serien» ist einfach der Name der Tabelle. Darauf folgt eine Liste der Felder, die die
Tabelle haben soll, im Format «Feldname Feldtyp(Länge) Besonderheiten».
Solche Besonderheiten können beispielsweise PRIMARY KEY sein, das ein Feld als Schlüssel
festlegt. AUTO_INCREMENT erspart Euch das Heraufzählen des Schlüssels, denn dieses Feld
wird «automatisch incrementiert». SQL-Statements werden mit Semikola abgeschlossen;
dadurch könnt Ihr Euer Statement in mehrere Zeilen aufteilen, um es übersichtlicher zu halten.
INSERT INTO serien VALUES (1, 'Die Beispiel-Serie', 'A. U. Tor', 'Horror', 'ABComics'); Hier werden in der Klammer einfach die Werte für alle Felder aufgezählt. Wenn Ihr nur einige Felder belegen wollt, könnt Ihr das wie folgt machen INSERT INTO serien (Titel, Autor, Verlag) VALUES ('Die Beispiel-Serie', 'A. U. Tor', 'ABComics'); Wieder auslesen könnt Ihr mit SELECT SELECT Titel, Verlag FROM serien WHERE Autor='A. U. Tor'; Diese Anfrage liefert die Felder 'Titel' und 'Verlag' aus allen Datensätzen, bei denen im Feld 'Autor' der Wert 'A. U. Tor' steht. Im WHERE-Teil könnt Ihr auch mehrere Bedingungen mit AND, OR oder NOT verknüpfen SELECT Titel FROM serien WHERE Autor='A. U. Tor' AND (Verlag='ABComics' OR Verlag='EFGraphics'); Neben dem einfachen Vergleich (Feld = Wert) könnt Ihr die normalen Vergleichsoperatoren (<, >, <=, >=, !=) verwenden. Außerdem könnt Ihr mit dem Schlüsselwort IN einen Vergleich mit mehreren Werten machen SELECT Titel FROM serien WHERE anzahl_folgen IN (5, 7, 10); Eine weitere Möglichkeit ist ein Ähnlichkeitsvergleich mit Hilfe von LIKE. Dabei werden sogenannte Joker verwendet. Vielleicht kennt Ihr das Fragezeichen als Joker für ein einzelnes Zeichen und den Stern als Joker für beliebig viele Zeichen. Ein Suchmuster 'M?SQL*' findet also 'MySQL', 'MySQL-Datenbank', 'MaSQL-Tippfehler', und so weiter. Mit LIKE könnt Ihr etwas ähnliches machen, allerdings mit anderen Jokersymbolen: Der Unterstrich (_) steht für genau ein Zeichen, das Prozentzeichen (%) für beliebig viele Zeichen. SELECT Titel FROM serie WHERE Titel LIKE 'Spider%'; Wenn ein _ oder ein % selbst gefunden werden soll, müßt Ihr es wie gewohnt mit einem \ entwerten SELECT Titel FROM serie WHERE Tiel LIKE 'Spider\_Man%'; findet alles, was mit 'Spider_Man' beginnt. Um alle Datensätze in der Tabelle zu bekommen, könnt Ihr die WHERE-Klausel einfach weglassen SELECT Titel FROM serie; Mit Hilfe der Schlüsselwörter GROUP BY und ORDER BY könnt Ihr die Ergebnisse Eures SELECTs ordnen SELECT Titel, Verlag FROM serien WHERE Autor='A. U. Tor' ORDER BY Titel ASC; ORDER BY sortiert die Datensätze nach den Einträgen im angegebenen Feld entweder aufsteigend (ASC) oder absteigend (DESC). ASC ist die Standard-Einstellung, Ihr könnt das Schlüsselwort hier also auch weglassen. Ihr könnt auch nach mehreren Feldern sortieren; wenn der Eintrag im ersten Feld gleich ist, wird nach dem Eintrag im zweiten Feld sortiert, dann nach dem dritten, und so weiter SELECT Titel, Verlag FROM serien WHERE Autor='A. U. Tor' ORDER BY Verlag ASC, Titel ASC; GROUP BY ordnet die Datensätze nur in Gruppen nach den Einträgen im angegebenen Feld, aber ohne die Gruppen in eine bestimmte Reihenfolge zu bringen. Außerdem könnt Ihr angeben, welchen Ausschnitt aus den Datensätzen, auf die die WHERE-Klausel zutrifft, Ihr haben wollt SELECT Titel FROM serien WHERE Verlag='ABComics' ORDER BY Titel LIMIT 10,5;
Damit bekommt Ihr ab dem zehnten Datensatz die nächsten fünf Datensätze. Das wird
oft dafür benutzt, um die Datensätze auf mehre Seiten zu verteilen (erste Seite Nummer 0-5,
zweite Seite Nummer 5-10, ...). Dazu ruft Ihr einfach die Datensätze «portionsweise»
ab.
UPDATE serien SET Verlag='ABComics AG' WHERE Verlag='ABComics'; Die im SET-Teil angegebenen Zuweisungen werden in allen Datensätzen ausgeführt, für die die WHERE-Klausel zutrifft. Dabei könnt Ihr auch die alten Werte benutzen, z. B. für ein Inkrement UPDATE counter SET anzahl=anzahl+1 WHERE ip='127.0.0.1'; Auch zum Löschen von Datensätzen gibt es ein Statement DELETE FROM serien WHERE Autor='A. U. Tor'; Ganze Tabellen löschen könnt Ihr mit DROP serien;
SQL bietet noch eine ganze Reihe weiterer Möglichkeiten. So könnt Ihr bespielweise Daten
aus mehreren Tabellen kombinieren, Minima, Maxima und die Anzahl von Datensätzen bestimmen,
im SQL-Statement rechnen und einiges mehr. Mehr dazu (wie üblich) im Manual Eurer Datenbank.
USE checklist; SELECT Titel FROM serien ...; Wenn Ihr von Eurem Webspace-Anbieter nur eine Datenbank zur Verfügung gestellt bekommt, greift Ihr automatisch auf diese Datenbank zu, ohne daß Ihr ein USE-Statement braucht. Eine neue Datenbank erstellt Ihr mit CREATE DATABASE checklist; wieder gelöscht wird sie mit DROP DATABASE checklist; Kleine Anmerkung am Rande: In vielen DBMS könnt Ihr sogenannte Constraints festlegen. Das sind einfach Beschränkungen, die die Daten erfüllen müssen: Eine Serie darf nicht 0 Folgen haben, die SerienID, auf die ein Eintrag in der Hefte-Tabelle verweist, muß auch in der Serien-Tabelle existieren, ein Heft darf keinen Preis < 0 haben, und so weiter. Andere DBMS bieten die Möglichkeit, diese Constraints automatisch überprüfen zu lassen, MySQL kann das (noch) nicht. Hier müßt Ihr selbst darauf achten, daß Ihr keine unsinnigen Daten eintragt. |
Special vom: | 16.01.2003 |
Autor dieses Specials: | Henning Kockerbeck |
Die weiteren Unterseiten dieses Specials: | |
Die reine Lehre - HTML | |
Stilvoll - CSS | |
Kleiner Grundkurs Programmieren | |
Jetzt wird's dynamisch - JavaScript | |
Die andere Seite der Dynamik - PHP | |
Neue Gefilde - XML | |
Weiterführende Links | |
Zurück zur Hauptseite des Specials |