Lektion 6: DML - Data Manipulation Language

Datensätze und Tabellen bearbeiten
Zur Bearbeitung von Daten gibt es in SQL die Befehle: insert, update und delete.
Diese Befehlsgruppe wird auch als DML - Data Manipulation Language bezeichnet.

Wie fügt man Daten in eine Tabelle ein?
Mit dem insert-Befehl kannst Du Daten in eine Tabelle einfügen. Das geht so:

insert into Schüler values (1024, 'Mueller', 'Heinz', '1988-08-14', 'Hüttenweg 6', '64536', 'Oberdorf');
insert into Kurs values ('12I34', 'Inf', 'Datenbanken', 'GK', '2004/01', 2);
insert into Belegt values (1024, '12I34', NULL);

Mit den drei insert-Befehlen fügst Du in jede der drei Tabellen einen Datensatz ein. Ist ein Attributwert nicht bekannt, wie die Punktezahl für den belegten Kurs, so kannst Du dafür einen NULL-Wert benutzen.

Der insert-Befehl hat den Aufbau: insert into Tabelle values (Wert_1, Wert_2,... , Wert_n);

Beim insert-Befehl in der bisherigen Form musst Du immer Werte für alle Spalten angeben. Bei der zweiten Form des insert-Befehls ist das nicht nötig, denn hier gibst Du hinter dem Tabellennamen die einzelnen Spalten an, die einen Wert erhalten sollen.

Das geht dann so:

insert into Tabelle(Spalte_1, Spalte_2, Spalte_3,...) values (Wert_1, Wert_2, Wert_3, ...);

Beispiele:
insert into Schüler(SNr, Nachname, Vorname) values (1024, 'Mueller', 'Heinz');
insert into Kurs(KursNr, Art, Thema) values ('12I34', 'GK', 'Datenbanken');

Und wie ändert man Daten?
Dafür gibt es den update-Befehl. Auch dafür drei Beispiele:

update Schüler set Nachname = 'Müller' where SNr = 1024;
update Kurs set Thema = 'Datenbanken mit SQL', Stunden = 3 where KursNr = '12I34';
update Belegt set Punkte = 14 where SNr = 1024 and KursNr = '12I34';

Mit update Tabelle gibst Du an, in welcher Tabelle Daten geändert werden sollen.
Mit set Spalte = Wert gibst Du den neuen Wert für die Spalte an.
Mit where Bedingung wählst Du die Datensätze aus, die geändert werden sollen.

Fehlt die where-Bedingung, so werden alle Datensätze geändert.
Gibst Du in der where-Bedingung einen Schlüssel an, so wird nur der zugehörige Datensatz geändert.

Der update-Befehl hat den Aufbau: update Tabelle set Spalte_1 = Wert_1, Spalte_2 = Wert_2,... where Bedingung;

Relativ geht's auch!
Soll ein neuer Spaltenwert aus dem momentanen Wert berechnet werden, z. B. Gehaltserhöhung um 3.5 %, so benutzt man den momentanen Wert rechts vom Gleichheitszeichen:

update Gehälter set Gehalt = Gehalt * 1.035

Ab in den Mülleimer!
Du löschst Datensätze mit dem delete-Befehl. Das geht so:

delete from Schüler where SNr = 1024;
delete from Kurs where Fach = 'D';
delete from Belegt;

Beim ersten delete-Befehl wird als where-Bedingung ein Schlüsselwert angegeben. Dadurch wird genau ein Datensatz gelöscht.
Beim zweiten delete-Befehl werden alle Deutsch-Kurse gelöscht.
Beim dritten delete-Befehl fehlt die where-Bedingung, dadurch werden alle Datensätze gelöscht.

Der delete-Befehl hat den Aufbau: delete from Tabelle where Bedingung;

Tabellen erzeugen
Der Teil von SQL, mit dem Du Tabellen und Datenbanken erstellst, wird DDL - Data Definition Language genannt.
Die Tabellen der Datenbank Schule kann man mit diesen create-Befehlen erzeugen:

create table Schüler (
    SNr int(5) primary key,
    Nachname varchar(40),
    Vorname varchar(30),
    Geburtsdatum date,
    StrasseNr varchar(40),
    PLZ varchar(7),
    Ort varchar(40)
);

create table Kurs (
    KursNr varchar(10) primary key,
    Fach varchar(5),
    Thema varchar(50),
    Art enum('GK', 'LK'),
    Halbjahr varchar(10),
    Stunden int(1)
);

create table Belegt (
    SNr int(5),
    KursNr varchar(10),
    Punkte int(2),
    primary key (SNr, KursNr)
);

Mit create table Tabelle erhält die Tabelle einen Namen. Dann gibst Du alle Attribute der Tabelle samt ihren Datentypen an. Die Primärschlüssel kennzeichnet man mit primary key.

• varchar(n) n-Zeichen lange Zeichenkette
• int(n) Integer-Datentyp mit der Anzeigebreite n
• date Datumtyp vom Format 'JJJJ-MM-TT'
• enum(...) ein Aufzähltyp

Weitere Datentypen findest Du im MySQL-Handbuch.

Tabellen leeren und löschen
Mit delete from Tabelle löschst Du alle Datensätze einer Tabelle. Zum Löschen einer Tabelle nimmst Du den drop Tabelle Befehl, z. B. drop Kurs

Jetzt geht's los!
Aus Sicherheitsgründen ist in diesem SQL-Tutorial die Verwendung der Befehle insert, update und delete auf die drei Tabellen der Datenbank Schule beschränkt, Tabellen können weder angelegt noch gelöscht werden. Hier geht es zu den Übungen der Lektion 6.