Dieses Dokument soll kein Buch über MySQL ersetzen, sondern lediglich dem erfahrenen Anwender noch mal die grundlegenden Befehle in Kurzform vor Augen halten.
Ich gehe davon aus das jeder weiß wie er sich mit der Datenbank in Verbindung setzt.
Allgemeine Anweisungen an eine Datenbank
Eine Datenbank erstellen:
CREATE DATABASE datenbank_name;
CREATE DATABASE Meine_Firma;
Erstellt die Datenbank "Meine_Firma". Achtung einige Datenbanken unterscheiden Groß- und Kleinschreibung.
Eine bestimmte Datenbank nutzen:
USE datenbank_name;
USE Meine_Firma;
Benutzen der Datenbank "Meine_Firma".
Vorhandene Tabellen ansehen:
SHOW TABLES;
Zeigt die vorhandenen Tabellen in "Meine_Firma", da diese ja grade benutzt wird.
Eine Tabelle erstellen:
CREATE TABLE tabellen_name (spalten_name datentyp modifizierer);
CREATE TABLE Personal (Nachname CHAR(50)
Vorname CHAR(50)
Rang VARCHAR(30)
Gehalt INT);
Erstellt die Tabelle "Personal" mit den Spalten "Nachname", "Vorname", "Rang" und "Gehalt" mit den jeweils angegebenen Datentypen.
Werte in eine Tabelle eintragen:
INSERT INTO tabellen_name
VALUES (wert1, wert2, ...);
INSERT INTO Personal
VALUES (Schulze, Egon, Pfoertner, 3000);
Fügt den Datensatz des Pfoertners Egon Schulz mit einem Gehalt von 3000 Euro/Peseten/Murmeln zur Tabelle Personal hinzu.
Daten ändern:
UPDATE tabellen_name
SET spalte1=wert1, spalte2=wert2, ...
(WHERE bedingung);
UPDATE Personal
SET Gehalt=3200
WHERE Nachname = "Schulz";
Ändert das Gehalt aller mit Nachname "Schulz" auf 3200
Daten wieder löschen:
DELETE FROM tabellen_name
(WHERE bedingung);
DELETE FROM Personal
WHERE Nachname = "Schulz" AND Vorname = "Egon";
Löscht alle Datensätze bei denen der Nachname "Schulz" und der Vorname "Egon" ist
Eine Tabelle löschen:
DROP TABLE tabellen_name;
DROP TABLE Personal;
Löscht die Tabelle "Personal" aus der grade verwendeten Datenbank
Eine Datenbank löschen:
DROP DATABASE datenbank_name;
DROP DATABASE Meine_Firma;
Löscht die Datenbank "Meine_Firma"
Tabellen verändern
Spalten hinzufügen
ALTER TABLE tabellen_name ADD spalten_name;
ALTER TABLE Personal ADD Geschlecht CHAR (1);
Fügt der Tabelle "Personal" die Spalte "Geschlecht" hinzu
Spalten löschen
ALTER TABLE tabellen_name DROP spalten_name;
ALTER TABLE Personal DROP Geschlecht;
Löscht die Spalte "Geschlecht" aus der Tabelle "Personal"
Datentyp einer Spalte ändern
ALTER TABLE tabellen_name MODIFY spalten_name datentyp;
ALTER TABLE Personal MODIFY Rang VARCHAR(40);
Ändert den Datentyp der Spalte "Rang" in den angegebenen, also "VARCHAR(40)"
Bezeichnung einer Spalte ändern
ALTER TABLE tabellen_name CHANGE spalten_name_alt spalten_name_neu;
ALTER TABLE Personal CHANGE Rang Beruf VARCHAR(30);
Ändert den "Rang" in den "Beruf" mit dem Datentyp VARCHAR(30).
Namen einer Tabelle ändern
ALTER TABLE tabellen_name_alt RENAME tabellen_name_neu;
ALTER TABLE Personal RENAME Mitarbeiter;
Ändert den Namen der Tabelle "Personal" zu "Mitarbeiter".
ACHTUNG: Die Beziehungen werden NICHT automatisch mitgeändert!!!
Daten einer Datenbank abfragen
Allgemeine Form:
SELECT spalte1, spalte2, ...
FROM tabellen_name
WHERE bedingung;
Sortieren:
SELECT spalte1, spalte2, ...
FROM tabellen_name
ORDER BY spalten_name;
SELECT Nachname, Vorname
FROM Personal
ORDER BY Nachname;
Zeigt die Inhalte der Spalten "Nachname" und "Vorname" sortiert nach "Nachnamen" in aufsteigender Reihenfolge.
Abnehmend sortieren:
SELECT spalte1, spalte2, ...
FROM tabellen_name
ORDER BY spalten_name DESC;
SELECT Nachname, Vorname
FROM Personal
ORDER BY Nachname DESC;
Zeigt die Inhalte der Spalten "Nachname" und "Vorname" sortiert nach "Nachname" in absteigender Reihenfolge
Datensätze gruppieren:
SELECT spalten_name
FROM tabellen_name
GROUP BY spalten_name;
SELECT Rang
FROM Personal
GROUP BY Rang;
Zeigt zusammengefaßt alle Ränge an
Den höchste Wert einer Spalte ermitteln:
SELECT MAX(spalten_name) AS spalten_name
FROM tabellen_name;
SELECT MAX(Gehalt) AS Gehalt
FROM Personal;
Zeigt das höchste Gehalt an
Durchschnitt einer Gruppe ermitteln:
SELECT spalten_name, AVG(spalten_name)
FROM tabellen_name
GROUP BY spalten_name;
SELECT Rang, AVG(Gehalt)
FROM Personal
GROUP BY Rang;
Zeigt die durchschnittlichen Gehälter der einzelnen Ränge an.
Einschränken eines gruppierten Datensatzes:
SELECT spalten_name, AVG(spalten_name)
FROM tabellen_name
GROUP BY spalten_name
HAVING AVG(spalten_name) bedingung;
SELECT Rang, AVG(Gehalt)
FROM Personal
GROUP BY Rang
HAVING AVG(Gehalt) > 4000;
Zeigt Rang und durchschnittliches Gehalt an. Die Datensätze sind nach Rang gruppiert und müßen einen Durchschnitt von 4000 übersteigen.
Verknüpfte Abfragen über zwei Tabellen:
SELECT *
FROM tabelle1
INNER JOIN tabelle2
ON tabelle1.name=tabelle2.name;
Es werden alle Paare (zeile1,zeile2) von Zeilen gebildet, wobei zeile1 aus "tabelle1" und zeile2 aus "tabelle2" stammt. Stimmt der Eintrag von zeile1 in der Spalte "name" mit dem Eintrag von zeile2 in der Spalte "name" überein, so wird das ganze Paar als Zeile in eine neue Tabelle übernommen. Die so entstandene Tabelle wird ausgegeben.
Ersetzt man in dieser Abfrage "INNER" durch "LEFT", so werden darüber hinaus alle Zeilen aus "tabelle1" angezeigt, zu denen kein passender Eintrag in "tabelle2" existiert. Ganz analog kann man "INNER" durch "RIGHT" ersetzen, und durch "OUTER" erhält man aus beiden ursprünglichen Tabellen die Zeilen, die keinen Partner haben.
Vielen Dank an sc_m für diese Ergänzung
Ich hoffe dem Einen oder Anderen ist diese Kurzfassung in irgendeiner Form nützlich. Wenn ich noch Erweiterungen einbauen soll oder ihr Fehler entdeckt, schickt mir eine PN.
Ich gehe davon aus das jeder weiß wie er sich mit der Datenbank in Verbindung setzt.
Allgemeine Anweisungen an eine Datenbank
Eine Datenbank erstellen:
CREATE DATABASE datenbank_name;
CREATE DATABASE Meine_Firma;
Erstellt die Datenbank "Meine_Firma". Achtung einige Datenbanken unterscheiden Groß- und Kleinschreibung.
Eine bestimmte Datenbank nutzen:
USE datenbank_name;
USE Meine_Firma;
Benutzen der Datenbank "Meine_Firma".
Vorhandene Tabellen ansehen:
SHOW TABLES;
Zeigt die vorhandenen Tabellen in "Meine_Firma", da diese ja grade benutzt wird.
Eine Tabelle erstellen:
CREATE TABLE tabellen_name (spalten_name datentyp modifizierer);
CREATE TABLE Personal (Nachname CHAR(50)
Vorname CHAR(50)
Rang VARCHAR(30)
Gehalt INT);
Erstellt die Tabelle "Personal" mit den Spalten "Nachname", "Vorname", "Rang" und "Gehalt" mit den jeweils angegebenen Datentypen.
Werte in eine Tabelle eintragen:
INSERT INTO tabellen_name
VALUES (wert1, wert2, ...);
INSERT INTO Personal
VALUES (Schulze, Egon, Pfoertner, 3000);
Fügt den Datensatz des Pfoertners Egon Schulz mit einem Gehalt von 3000 Euro/Peseten/Murmeln zur Tabelle Personal hinzu.
Daten ändern:
UPDATE tabellen_name
SET spalte1=wert1, spalte2=wert2, ...
(WHERE bedingung);
UPDATE Personal
SET Gehalt=3200
WHERE Nachname = "Schulz";
Ändert das Gehalt aller mit Nachname "Schulz" auf 3200
Daten wieder löschen:
DELETE FROM tabellen_name
(WHERE bedingung);
DELETE FROM Personal
WHERE Nachname = "Schulz" AND Vorname = "Egon";
Löscht alle Datensätze bei denen der Nachname "Schulz" und der Vorname "Egon" ist
Eine Tabelle löschen:
DROP TABLE tabellen_name;
DROP TABLE Personal;
Löscht die Tabelle "Personal" aus der grade verwendeten Datenbank
Eine Datenbank löschen:
DROP DATABASE datenbank_name;
DROP DATABASE Meine_Firma;
Löscht die Datenbank "Meine_Firma"
Tabellen verändern
Spalten hinzufügen
ALTER TABLE tabellen_name ADD spalten_name;
ALTER TABLE Personal ADD Geschlecht CHAR (1);
Fügt der Tabelle "Personal" die Spalte "Geschlecht" hinzu
Spalten löschen
ALTER TABLE tabellen_name DROP spalten_name;
ALTER TABLE Personal DROP Geschlecht;
Löscht die Spalte "Geschlecht" aus der Tabelle "Personal"
Datentyp einer Spalte ändern
ALTER TABLE tabellen_name MODIFY spalten_name datentyp;
ALTER TABLE Personal MODIFY Rang VARCHAR(40);
Ändert den Datentyp der Spalte "Rang" in den angegebenen, also "VARCHAR(40)"
Bezeichnung einer Spalte ändern
ALTER TABLE tabellen_name CHANGE spalten_name_alt spalten_name_neu;
ALTER TABLE Personal CHANGE Rang Beruf VARCHAR(30);
Ändert den "Rang" in den "Beruf" mit dem Datentyp VARCHAR(30).
Namen einer Tabelle ändern
ALTER TABLE tabellen_name_alt RENAME tabellen_name_neu;
ALTER TABLE Personal RENAME Mitarbeiter;
Ändert den Namen der Tabelle "Personal" zu "Mitarbeiter".
ACHTUNG: Die Beziehungen werden NICHT automatisch mitgeändert!!!
Daten einer Datenbank abfragen
Allgemeine Form:
SELECT spalte1, spalte2, ...
FROM tabellen_name
WHERE bedingung;
Sortieren:
SELECT spalte1, spalte2, ...
FROM tabellen_name
ORDER BY spalten_name;
SELECT Nachname, Vorname
FROM Personal
ORDER BY Nachname;
Zeigt die Inhalte der Spalten "Nachname" und "Vorname" sortiert nach "Nachnamen" in aufsteigender Reihenfolge.
Abnehmend sortieren:
SELECT spalte1, spalte2, ...
FROM tabellen_name
ORDER BY spalten_name DESC;
SELECT Nachname, Vorname
FROM Personal
ORDER BY Nachname DESC;
Zeigt die Inhalte der Spalten "Nachname" und "Vorname" sortiert nach "Nachname" in absteigender Reihenfolge
Datensätze gruppieren:
SELECT spalten_name
FROM tabellen_name
GROUP BY spalten_name;
SELECT Rang
FROM Personal
GROUP BY Rang;
Zeigt zusammengefaßt alle Ränge an
Den höchste Wert einer Spalte ermitteln:
SELECT MAX(spalten_name) AS spalten_name
FROM tabellen_name;
SELECT MAX(Gehalt) AS Gehalt
FROM Personal;
Zeigt das höchste Gehalt an
Durchschnitt einer Gruppe ermitteln:
SELECT spalten_name, AVG(spalten_name)
FROM tabellen_name
GROUP BY spalten_name;
SELECT Rang, AVG(Gehalt)
FROM Personal
GROUP BY Rang;
Zeigt die durchschnittlichen Gehälter der einzelnen Ränge an.
Einschränken eines gruppierten Datensatzes:
SELECT spalten_name, AVG(spalten_name)
FROM tabellen_name
GROUP BY spalten_name
HAVING AVG(spalten_name) bedingung;
SELECT Rang, AVG(Gehalt)
FROM Personal
GROUP BY Rang
HAVING AVG(Gehalt) > 4000;
Zeigt Rang und durchschnittliches Gehalt an. Die Datensätze sind nach Rang gruppiert und müßen einen Durchschnitt von 4000 übersteigen.
Verknüpfte Abfragen über zwei Tabellen:
SELECT *
FROM tabelle1
INNER JOIN tabelle2
ON tabelle1.name=tabelle2.name;
Es werden alle Paare (zeile1,zeile2) von Zeilen gebildet, wobei zeile1 aus "tabelle1" und zeile2 aus "tabelle2" stammt. Stimmt der Eintrag von zeile1 in der Spalte "name" mit dem Eintrag von zeile2 in der Spalte "name" überein, so wird das ganze Paar als Zeile in eine neue Tabelle übernommen. Die so entstandene Tabelle wird ausgegeben.
Ersetzt man in dieser Abfrage "INNER" durch "LEFT", so werden darüber hinaus alle Zeilen aus "tabelle1" angezeigt, zu denen kein passender Eintrag in "tabelle2" existiert. Ganz analog kann man "INNER" durch "RIGHT" ersetzen, und durch "OUTER" erhält man aus beiden ursprünglichen Tabellen die Zeilen, die keinen Partner haben.
Vielen Dank an sc_m für diese Ergänzung
Ich hoffe dem Einen oder Anderen ist diese Kurzfassung in irgendeiner Form nützlich. Wenn ich noch Erweiterungen einbauen soll oder ihr Fehler entdeckt, schickt mir eine PN.