MySQL: Daten verwalten
Damit die Daten in den Tabellen bearbeitet werden können, müssen sie in der passenden Struktur vorliegen. Die muss manchmal auch geändert werden. Dieses Kapitel beschreibt, welche Befehle MySQL dafür anbietet.Allgemeiner Hinweis
Die hier beschriebenen Anweisungen sind sehr mächtig. So kann man mit DROP DATABASE
eine ganze Datenbank löschen, mit allen ihren Tabellen. Man denke an den Arbeitsaufwand, den man damit zunichte macht, vielleicht auch den von anderen KollegInnen. Bevor man solche Befehle benutzt, sollte man sich im Klaren sein, welche Auswirkungen sie haben. Es ist dringend zu empfehlen, Sicherheitskopien anzulegen, bevor man einen dieser Befehle ausführt. Wie man Sicherheitskopien anlegt und im Crashfall die Daten aus ihnen wieder herstellt, wird in einem späteren Kapitel beschrieben.
Der Index
Neben den Tabellen sind in einer Datenbank andere Objekte gespeichert, dazu gehören die Beziehungen und der Index. Ein Index ist ein sehr wichtiges Element. Zum einen wird durch ihn der Zugriff auf die Datensätze so schnell, wie wir das an einer Datenbank schätzen. Als Unique Index verhindert er außerdem, dass ungewollt Daten mit gleichem Schlüssel mehrfach geschrieben werden.
Es gibt Indizes in 3 Stufen:
1. der "einfache" Index: hier sind mehrere Einträge zum gleichen Schlüssel erlaubt, er beschleunigt aber die Suche
2. der Unique Index, er erlaubt Schlüsselwerte nur in jeweils einem Datensatz
3. der Primary Key. Er ist ein Unique Index. Er regelt die Grundordnung dieser Tabelle.
In jeder Tabelle kann es nur einen Primary Key geben. Andere Indizes kann es praktisch beliebig viele in jeder Tabelle geben. Allerdings muss man bedenken, dass jeder Index zwar die Suche beschleunigen kann, aber den Schreibzugriff in jedem Fall bremst, weil bei jedem INSERT
und bei jedem UPDATE
die betroffenen Indizes auch geändert werden müssen.
CREATE DATABASE
Legt eine neue Datenbank an. Beispiel:
CREATE DATABASE [IF NOT EXISTS] Datenbankname;
Das IF NOT EXISTS
haben wir nur deshalb in Klammern dargestellt, weil man es weglassen kann. Es verhindert, dass MySQL erst nachfragt, wenn es die Datenbank schon gibt.
DROP DATABASE
Löscht eine vorhandene Datenbank und alle darin enthaltenen Daten. Beispiel:
DROP DATABASE Datenbankname;
USE
Gibt an, welche Datenbank benutzt werden soll. Die Datenbank muss existieren. Alle folgenden Befehle beziehen sich dann auf diese Datenbank. Beispiel:
USE Datenbankname;
Abhängig vom Betriebssystem unterscheidet MySQL zwischen Groß- und Kleinschreibung des Datenbanknamens. Der Befehl ist notwendig, denn mySQL benutzt keine Standard-Datenbank. Bevor man also keine Datenbank ausgewählt hat, kann man keine Aktionen mit Tabellen ausführen.
Der Befehl kann allerdings entfallen, wenn MySQL mit entsprechenden Parametern gestartet wurde.
CREATE TABLE
Legt eine neue Tabelle an. Beispiel:
CREATE TABLE Tabelle (Feld1 Feldtyp, Feld2 Feldtyp,
... FeldN Feldtyp);
Nach dem Namen der neuen Tabelle ist ihre Definition in Klammern einzutragen. Unsere Syntax enthält die notwendigen Komponenten, damit der Befehl ohne Syntax-Fehlermeldung ausgeführt wird. In ein Beispiel umgesetzt, könnte der Befehl so aussehen:
CREATE TABLE Artikel (ArtikelNr SMALLINT,
Typ VARCHAR(20),
Hersteller VARCHAR(20),
Bezeichnung VARCHAR(20));
Diese Tabellendefinition ist natürlich stark vereinfacht. In der Praxis sollte sie ergänzt werden: Die ArtikelNr ist der Primärschlüssel. Deshalb darf dieses Feld nicht leer sein (NOT NULL
). Außerdem kann man durch AUTO_INCREMENT
angeben, dass sie sich bei neu eingefügten Datensätzen automatisch hochzählt.
CREATE TABLE Artikel
(
ArtikelNr SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
Typ VARCHAR(20),
Hersteller VARCHAR(20),
Bezeichnung VARCHAR(20),
PRIMARY KEY (ArtikelNr)
);
Um eine Beziehung zu einem Primärschlüssel einer anderen Tabelle anzulegen, benutzt man die Syntax:
CREATE TABLE Tabelle (FOREIGN KEY (Feldname,...)
[REFERENCES Tabelle[(index_spalte,...)]]
ALTER TABLE
Damit wird die Struktur einer Tabelle geändert, also die Felder, der Name oder ein Index. Beispiel:
ALTER TABLE Tabelle Spezifikation;
Anstelle von Spezifikation können verschiedene Varianten stehen:
Feld hinzufügen
ADD Feldname Definition [AFTER Feldname | FIRST];
Als Definition wird wieder der Datentyp angegeben. AFTER Feldname
gibt an, nach welchem Feld das neue Feld eingefügt werden soll. FIRST
gibt an, dass das neue Feld das erste Feld sein soll. AFTER
und FIRST
können nur alternativ benutzt werden (entweder das eine oder das andere; sie gehören auch nicht zur Standard-Syntax von SQL).
Feld ändern
Das Ändern eines Feldes erfolgt über:
CHANGE [AlterFeldname] Definition;
Feld löschen
Das Löschen eines Feldes erfolgt über:
DROP Feldname;
Anlegen und Löschen eines Index
ALTER TABLE
wird auch zum Anlegen oder Löschen eines Index benutzt:
Zum Anlegen des Index:
ADD PRIMARY KEY (Indexfeld,...);
oder
ADD INDEX (Indexfeld,...);
oder
ADD UNIQUE (Indexfeld,...);
Zum Löschen des Index:
DROP Indexfeld;
Ein Index kann auch mit folgendem Befehl nachträglich angelegt werden:
CREATE [UNIQUE] INDEX Indexname ON
Tabelle (Feldname[(length]),... )
RENAME TABLE
Verursacht das Ändern des Namens einer Tabelle. Beispiel:
RENAME TABLE AlterTabellenname TO NeuerTabellenname;
DROP TABLE
Löschen einer Tabelle. Dabei wird die Struktur einschließlich der eventuell darin enthaltenen Daten gelöscht. Beispiel:
DROP TABLE Tabelle;
SHOW TABLES
Zeigt die Namen der Tabellen in der aktuellen Datenbank.
DESC TABLE
Zeigt die Struktur einer Tabelle (Feldnamen und Feldtypen).
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ Funktionen
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project