MySQL - Statements Reference

Willkommen, zukünftige Datenbank-Zauberer! Heute tauchen wir in die magische Welt der MySQL-Anweisungen ein. Keine Sorge, wenn Sie vorher noch nie eine Zeile Code geschrieben haben - bis zum Ende dieses Tutorials werden Sie Datenbank-Zauber wie ein Profi zaubern können!

MySQL - Statements Reference

Data Definition Statements

Lassen Sie uns mit den Grundbausteinen unseres Datenbankreiches beginnen: Data Definition Statements. Das sind die Befehle, die wir verwenden, um die Struktur unserer Datenbank zu erstellen, zu ändern und zu löschen.

CREATE TABLE

Stellen Sie sich vor, Sie bauen eine Bibliothek. Das Erste, was Sie brauchen, sind Bücherregale, oder? In MySQL sind unsere "Bücherregale" Tabellen. Lassen Sie uns eine erstellen!

CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
author VARCHAR(50),
publication_year INT
);

Dieser Zauber... ähm, Befehl, erstellt eine Tabelle namens "books" mit vier Spalten:

  • id: Eine eindeutige Identifikationsnummer für jedes Buch
  • title: Der Titel des Buches (bis zu 100 Zeichen)
  • author: Der Autor des Buches (bis zu 50 Zeichen)
  • publication_year: Das Jahr, in dem das Buch veröffentlicht wurde

ALTER TABLE

Uups! Wir haben vergessen, eine Spalte für das Genre des Buches hinzuzufügen. Keine Sorge, wir können unsere Tabelle ändern:

ALTER TABLE books
ADD COLUMN genre VARCHAR(30);

Dies fügt eine neue Spalte namens "genre" zu unserer "books"-Tabelle hinzu.

DROP TABLE

Wenn wir beschließen, dass wir unsere Tabelle nicht mehr benötigen (vielleicht wechseln wir zu E-Books?), können wir sie entfernen:

DROP TABLE books;

Seien Sie vorsichtig mit diesem Befehl, aber! Es ist wie das Anzünden Ihres Bücherregals - es gibt kein Zurück!

Data Manipulation Statements

Nun, da wir unsere Struktur haben, füllen wir sie mit Daten!

INSERT

Es ist an der Zeit, einige Bücher in unsere Bibliothek aufzunehmen:

INSERT INTO books (title, author, publication_year, genre)
VALUES ('Der Große Gatsby', 'F. Scott Fitzgerald', 1925, 'Klassiker');

Dies fügt ein Buch zu unserer Tabelle hinzu. Sie können mehrere Bücher auf einmal hinzufügen:

INSERT INTO books (title, author, publication_year, genre)
VALUES
('Wer die Schatten tötet', 'Harper Lee', 1960, 'Fiktion'),
('1984', 'George Orwell', 1949, 'Science Fiction');

SELECT

Nun sehen wir uns an, welche Bücher wir haben:

SELECT * FROM books;

Dies ruft alle Spalten (*) aus der "books"-Tabelle ab. Sie können spezifischer sein:

SELECT title, author FROM books WHERE publication_year < 1950;

Dies ruft nur den Titel und den Autor von Büchern heraus, die vor 1950 veröffentlicht wurden.

UPDATE

Uups, wir haben einen Fehler gemacht! "1984" ist eigentlich dystopische Fiktion:

UPDATE books
SET genre = 'Dystopische Fiktion'
WHERE title = '1984';

Dies ändert das Genre für das Buch mit dem Titel "1984".

DELETE

Angenommen, wir möchten alle Bücher entfernen, die vor 1930 veröffentlicht wurden:

DELETE FROM books
WHERE publication_year < 1930;

Seien Sie vorsichtig mit DELETE - wie DROP ist es unwiderruflich!

Transactional and Locking Statements

Manchmal müssen wir sicherstellen, dass eine Reihe von Operationen entweder alle gleichzeitig oder gar nicht stattfinden. Hier kommen Transaktionen ins Spiel.

START TRANSACTION

START TRANSACTION;
INSERT INTO books (title, author, publication_year, genre)
VALUES ('Stolz und Vorurteil', 'Jane Austen', 1813, 'Romanze');
UPDATE books SET publication_year = 1960 WHERE title = 'Wer die Schatten tötet';
COMMIT;

Dies stellt sicher, dass sowohl das INSERT als auch das UPDATE gleichzeitig erfolgen. Bei einem Fehler wird nichts übernommen.

ROLLBACK

Wenn wir in der Mitte einer Transaktion einen Sinneswandel haben:

START TRANSACTION;
DELETE FROM books WHERE publication_year < 1900;
-- Uups, das wollten wir nicht!
ROLLBACK;

ROLLBACK hebt alle Änderungen seit START TRANSACTION rückgängig.

Prepared Statements

Vorbereitete Anweisungen sind wie Rezepte - Sie richten sie einmal ein und verwenden sie dann mehrmals mit verschiedenen Zutaten.

PREPARE stmt FROM 'SELECT * FROM books WHERE author = ?';
SET @a = 'George Orwell';
EXECUTE stmt USING @a;

Dies bereitet eine Anweisung vor, um Bücher eines bestimmten Autors zu finden, und führt sie dann für George Orwell aus.

Compound Statements

Verknüpfte Anweisungen erlauben uns, mehrere Anweisungen zusammenzufassen. Sie werden oft in gespeicherten Prozeduren und Funktionen verwendet.

DELIMITER //
CREATE PROCEDURE CountBooks()
BEGIN
DECLARE bookCount INT;
SELECT COUNT(*) INTO bookCount FROM books;
SELECT CONCAT('Es gibt ', bookCount, ' Bücher in der Bibliothek.') AS Message;
END //
DELIMITER ;

CALL CountBooks();

Dies erstellt eine Prozedur, die die Anzahl der Bücher zählt und eine Nachricht anzeigt.

Variables in Stored Programs

Variablen in gespeicherten Programmen sind wie kleine Kisten, in denen wir Informationen vorübergehend speichern können.

DELIMITER //
CREATE PROCEDURE OldestBook()
BEGIN
DECLARE oldestYear INT;
DECLARE oldestTitle VARCHAR(100);

SELECT MIN(publication_year), title
INTO oldestYear, oldestTitle
FROM books;

SELECT CONCAT('Das älteste Buch ist ', oldestTitle, ' veröffentlicht im ', oldestYear) AS Message;
END //
DELIMITER ;

CALL OldestBook();

Diese Prozedur findet das älteste Buch und erzählt uns darüber.

MySQL Flow Control Statements

Flusssteuerungsanweisungen helfen uns, Entscheidungen in unserem Code zu treffen.

DELIMITER //
CREATE PROCEDURE CategoryByYear(IN pub_year INT)
BEGIN
DECLARE category VARCHAR(20);
IF pub_year < 1900 THEN
SET category = 'Sehr alt';
ELSEIF pub_year < 2000 THEN
SET category = 'Klassiker';
ELSE
SET category = 'Modern';
END IF;
SELECT category AS 'Buchkategorie';
END //
DELIMITER ;

CALL CategoryByYear(1925);

Dies kategorisiert ein Buch basierend auf seinem Erscheinungsjahr.

MySQL Cursors Statements

Cursor erlauben uns, durch ein Ergebnismengezeilenweise zu iterieren.

DELIMITER //
CREATE PROCEDURE ListBooks()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE book_title VARCHAR(100);
DECLARE cur CURSOR FOR SELECT title FROM books;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur;

read_loop: LOOP
FETCH cur INTO book_title;
IF done THEN
LEAVE read_loop;
END IF;
SELECT book_title;
END LOOP;

CLOSE cur;
END //
DELIMITER ;

CALL ListBooks();

Diese Prozedur listet alle Buchtitel einzeln auf.

MySQL Condition Handling Statements

Bedingungsbehandlungserklärungen erlauben uns, Fehler und Warnungen elegant zu behandeln.

DELIMITER //
CREATE PROCEDURE SafeInsert(IN book_title VARCHAR(100), IN book_author VARCHAR(50))
BEGIN
DECLARE EXIT HANDLER FOR 1062
BEGIN
SELECT 'Fehler: Dopplungseintrag' AS Message;
END;

INSERT INTO books (title, author) VALUES (book_title, book_author);
SELECT 'Buch erfolgreich hinzugefügt' AS Message;
END //
DELIMITER ;

CALL SafeInsert('Der Große Gatsby', 'F. Scott Fitzgerald');

Diese Prozedur fügt ein Buch sicher ein und behandelt den Fall, dass das Buch bereits existiert.

Und das war's! Sie haben gerade Ihre ersten Schritte in die Welt der MySQL-Anweisungen unternommen. Denken Sie daran, Übung macht den Meister, also fürchten Sie sich nicht, diese Befehle auszuprobieren. Bereit werden Sie in kürzester Zeit Datenbanken wie ein erfahrener Profi verwalten können!

Credits: Image by storyset