Erweiterte Datenbasis

Geschätzte Lektüre: 7 Minuten 125 Ansichten

Bevor wir mit den neuen Konzepten beginnen, erweitern wir unsere Beispiel-Datenbank um eine Tabelle ausleihen und füllen die bestehende Tabelle buecher mit zusätzlichen Datensätzen. Dies ermöglicht uns aussagekräftigere Abfragen.

Führen Sie in phpMyAdmin im SQL-Reiter Ihrer Datenbank bibliothek nacheinander die folgenden Befehle aus.

Schritt 1: Erweitern der Tabelle buecher

Zunächst löschen wir die vorhandene Tabelle und erstellen eine neue, um einen konsistenten Ausgangszustand zu haben.

-- Bestehende Tabelle löschen (Vorsicht: Daten gehen verloren!)
DROP TABLE IF EXISTS buecher;

-- Tabelle neu erstellen mit zusätzlichen Spalten
CREATE TABLE buecher (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titel VARCHAR(255) NOT NULL,
    autor VARCHAR(255),
    jahr INT,
    preis DECIMAL(5,2),
    bestand INT
);

-- Beispieldaten einfügen
INSERT INTO buecher (titel, autor, jahr, preis, bestand) VALUES
('Eine kurze Geschichte der Zeit', 'Stephen Hawking', 1988, 14.99, 3),
('Der Schwarm', 'Frank Schätzing', 2004, 12.50, 5),
('Der Prozess', 'Franz Kafka', 1925, 8.90, 2),
('Sapiens: Eine kurze Geschichte der Menschheit', 'Yuval Noah Harari', 2011, 18.99, 7),
('Fundament', 'Isaac Asimov', 1951, 15.00, 4),
('Der Name der Rose', 'Umberto Eco', 1980, 14.50, 1),
('21 Lektionen für das 21. Jahrhundert', 'Yuval Noah Harari', 2018, 22.00, 2);

Schritt 2: Tabelle ausleihen erstellen
Diese Tabelle protokolliert Ausleihvorgänge und verweist über Fremdschlüssel auf die Bücher.

CREATE TABLE ausleihen (
    id INT AUTO_INCREMENT PRIMARY KEY,
    buch_id INT NOT NULL,
    ausleihdatum DATE NOT NULL,
    rueckgabedatum DATE,
    FOREIGN KEY (buch_id) REFERENCES buecher(id)
);

-- Beispieldaten einfügen
INSERT INTO ausleihen (buch_id, ausleihdatum, rueckgabedatum) VALUES
(1, '2024-01-15', '2024-01-29'),
(1, '2024-02-10', NULL),
(2, '2024-01-20', '2024-02-03'),
(3, '2024-01-25', '2024-02-08'),
(4, '2024-02-01', NULL),
(4, '2024-02-15', NULL),
(5, '2024-01-10', '2024-01-24'),
(6, '2024-02-05', NULL);

Nach der Ausführung dieser Befehle haben Sie zwei Tabellen mit realistischen Daten, anhand derer wir die verschiedenen Abfragetechniken durchspielen können.


Präzise Filterung mit WHERE und logischen Operatoren

Die WHERE-Klausel haben Sie bereits vorher im Kontext von UPDATE und DELETE kennengelernt. Bei SELECT ist sie das zentrale Werkzeug, um aus einer Tabelle nur diejenigen Zeilen auszuwählen, die bestimmte Kriterien erfüllen.

Die grundlegende Syntax ist:

SELECT spalten
FROM tabellenname
WHERE bedingung;

Vergleichsoperatoren:
Sie können die üblichen Vergleichsoperatoren verwenden: =, <> oder != (ungleich), <, >, <=, >=.

Beispiele:

-- Alle Bücher, die nach dem Jahr 2000 veröffentlicht wurden
SELECT titel, autor, jahr
FROM buecher
WHERE jahr > 2000;
-- Alle Bücher, die nicht von Frank Schätzing sind
SELECT titel, autor
FROM buecher
WHERE autor <> 'Frank Schätzing';

Logische Verknüpfungen: AND, OR, NOT

Oft reicht eine einzelne Bedingung nicht aus. Mit AND verknüpfen Sie mehrere Bedingungen, die alle zutreffen müssen. Mit OR genügt es, wenn eine der Bedingungen zutrifft. NOT kehrt eine Bedingung um.

Beispiele:

-- Bücher, die nach 2000 erschienen sind UND einen Preis unter 15 Euro haben
SELECT titel, jahr, preis
FROM buecher
WHERE jahr > 2000 AND preis < 15.00;
-- Bücher, die entweder von Stephen Hawking ODER von Yuval Noah Harari sind
SELECT titel, autor
FROM buecher
WHERE autor = 'Stephen Hawking' OR autor = 'Yuval Noah Harari';
-- Bücher, die NICHT von Frank Schätzing sind (Alternative zu <>)
SELECT titel, autor
FROM buecher
WHERE NOT autor = 'Frank Schätzing';

Die Reihenfolge der Auswertung können Sie mit Klammern steuern. AND wird standardmäßig vor OR ausgewertet. Verwenden Sie Klammern, um Ihre Absicht klar zu machen.

-- Bücher, die entweder von Harari sind UND nach 2015 erschienen, ODER einen Preis unter 10 haben
-- Die Klammern machen die Logik explizit
SELECT titel, autor, jahr, preis
FROM buecher
WHERE (autor = 'Yuval Noah Harari' AND jahr > 2015) OR preis < 10.00;
Dieses Dokument teilen

Erweiterte Datenbasis

Oder Link kopieren

INHALT

Abonnieren

×
Cancel