Skip to content

Kapitel 11: Datenbank-Grundlagen

11.1 Was ist eine Datenbank? MySQL-Einführung

Was ist eine Datenbank?

Datenbank (Database): Ein System zur Speicherung und Verwaltung von strukturierten Daten.

Warum Datenbanken?

  • ✅ Daten persistent speichern (auch nach Programmende)
  • ✅ Daten effizient suchen, sortieren, filtern
  • ✅ Mehrere Benutzer können gleichzeitig zugreifen
  • ✅ Datenintegrität gewährleisten

Was ist MySQL?

MySQL: Das weltweit beliebteste relationale Datenbanksystem (Open Source).

php
<?php
    // MySQL ist eine "relationale" Datenbank
    // Das bedeutet: Daten werden in Tabellen mit Beziehungen gespeichert
    
    // Beispiel: Benutzertabelle
    // +----+----------+-------+-------------------+
    // | id | name     | alter | email             |
    // +----+----------+-------+-------------------+
    // | 1  | Max      | 25    | max@beispiel.de |
    // | 2  | Anna    | 30    | anna@beispiel.de|
    // | 3  | Tim      | 20    | tim@beispiel.de |
    // +----+----------+-------+-------------------+
?>

Gängige Datenbanksysteme

DatenbanksystemTypBeschreibung
MySQLRelationalOpen Source, sehr beliebt, PHP-perfekt
MariaDBRelationalMySQL-Fork (kompatibel)
PostgreSQLRelationalFortgeschritten, Open Source
SQLiteRelationalLeichtgewichtig, dateibasiert
MongoDBNoSQLDokumentenorientiert
RedisNoSQLKey-Value, In-Memory

Empfehlung für PHP-Anfänger: MySQL oder MariaDB

11.2 Datenbank, Tabelle, Feld, Datensatz

Grundlegende Konzepte

Datenbank (Database)
├── Tabelle (Table): benutzer
│   ├── Feld (Column): id, name, email, alter
│   ├── Datensatz (Row/Record): [1, "Max", "max@...", 25]
│   └── Datensatz (Row/Record): [2, "Anna", "anna@...", 30]
└── Tabelle (Table): produkte
    ├── Feld (Column): id, name, preis
    └── Datensatz (Row/Record): [1, "T-Shirt", 19.99]

Beispiel-Datenbankstruktur

sql
-- Datenbank: shop
-- Tabelle: benutzer
+----+----------+-------+-------------------+----------+
| id | name     | alter | email             | passwort |
+----+----------+-------+-------------------+----------+
| 1  | Max      | 25    | max@beispiel.de | abc123   |
| 2  | Anna    | 30    | anna@beispiel.de| def456   |
+----+----------+-------+-------------------+----------+

-- Tabelle: bestellungen
+----+------------+----------+--------+
| id | benutzer_id | datum    | gesamt |
+----+------------+----------+--------+
| 1  | 1          | 2024-05-26 | 39.98  |
| 2  | 2          | 2024-05-27 | 15.99  |
+----+------------+----------+--------+

Datentypen in MySQL

DatentypBeschreibungBeispiel
INTGanzzahl25, 100
VARCHAR(n)Zeichenkette (variabel)"Max" (max. n Zeichen)
TEXTLanger Text"Langer Artikeltext..."
DECIMAL(m,d)Festkommazahl19.99
DATEDatum2024-05-26
DATETIMEDatum + Uhrzeit2024-05-26 14:30:00
BOOLEANWahrheitswertTRUE / FALSE (0/1)

11.3 phpMyAdmin verwenden

Was ist phpMyAdmin?

phpMyAdmin: Ein webbasiertes Tool zur Verwaltung von MySQL-Datenbanken (kostenlos, Open Source).

phpMyAdmin starten (in XAMPP)

  1. XAMPP Control Panel öffnen
  2. Apache und MySQL starten
  3. Im Browser öffnen: http://localhost/phpmyadmin
  4. Einloggen: Benutzer: root, Passwort: `` (leer)

Grundlegende Operationen in phpMyAdmin

1. Datenbank erstellen

  1. Links auf "Neu" klicken
  2. Datenbankname eingeben: meine_shop_datenbank
  3. Kollation wählen: utf8mb4_general_ci (empfohlen)
  4. Auf "Erstellen" klicken

2. Tabelle erstellen

  1. Datenbank auswählen
  2. Tabellenname eingeben: benutzer
  3. Anzahl Felder eingeben: 5
  4. Auf "Ausführen" klicken
  5. Felder definieren:
    • id (Typ: INT, AUTO_INCREMENT, Primärschlüssel)
    • name (Typ: VARCHAR(100))
    • email (Typ: VARCHAR(255))
    • passwort (Typ: VARCHAR(255))
    • erstellt_am (Typ: DATETIME)
  6. Auf "Speichern" klicken

3. Datensatz einfügen

  1. Tabelle auswählen
  2. Auf "Einfügen" klicken
  3. Werte eingeben:
    • name: Max
    • email: max@beispiel.de
    • passwort: geheim123
    • erstellt_am: NOW()
  4. Auf "Ausführen" klicken

4. Datensätze anzeigen/bearbeiten

  1. Auf "Durchsuchen" klicken (alle Datensätze anzeigen)
  2. Auf "Bearbeiten" klicken (einzelnen Datensatz ändern)
  3. Auf "Löschen" klicken (Datensatz löschen)

11.4 SQL-Grundlagen

Was ist SQL?

SQL (Structured Query Language): Standardsprache für relationale Datenbanken.

Grundlegende SQL-Befehle

1. Datenbank erstellen/löschen

sql
-- Datenbank erstellen
CREATE DATABASE meine_shop_datenbank 
    CHARACTER SET utf8mb4 
    COLLATE utf8mb4_general_ci;

-- Datenbank löschen
DROP DATABASE meine_shop_datenbank;

-- Datenbank auswählen
USE meine_shop_datenbank;

2. Tabelle erstellen/löschen

sql
-- Tabelle erstellen
CREATE TABLE benutzer (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    passwort VARCHAR(255) NOT NULL,
    erstellt_am DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Tabelle löschen
DROP TABLE benutzer;

-- Tabellenstruktur anzeigen
DESCRIBE benutzer;

3. Daten einfügen (INSERT)

sql
-- Einen Datensatz einfügen
INSERT INTO benutzer (name, email, passwort) 
VALUES ('Max', 'max@beispiel.de', 'geheim123');

-- Mehrere Datensätze auf einmal einfügen
INSERT INTO benutzer (name, email, passwort) 
VALUES 
    ('Anna', 'anna@beispiel.de', 'passwort456'),
    ('Tim', 'tim@beispiel.de', 'secure789');

4. Daten abfragen (SELECT)

sql
-- Alle Datensätze abfragen
SELECT * FROM benutzer;

-- Bestimmte Felder abfragen
SELECT name, email FROM benutzer;

-- Mit Bedingung (WHERE)
SELECT * FROM benutzer WHERE id = 1;

-- Mit mehreren Bedingungen (AND/OR)
SELECT * FROM benutzer WHERE alter > 18 AND stadt = 'Berlin';

-- Sortieren (ORDER BY)
SELECT * FROM benutzer ORDER BY name ASC;  -- Aufsteigend
SELECT * FROM benutzer ORDER BY id DESC;    -- Absteigend

-- Begrenzen (LIMIT)
SELECT * FROM benutzer LIMIT 10;

-- Suchen (LIKE)
SELECT * FROM benutzer WHERE name LIKE '%Max%';

5. Daten aktualisieren (UPDATE)

sql
-- Datensatz aktualisieren
UPDATE benutzer 
SET email = 'max.neu@beispiel.de' 
WHERE id = 1;

-- Mehrere Felder auf einmal aktualisieren
UPDATE benutzer 
SET name = 'Max Müller', alter = 26 
WHERE id = 1;

6. Daten löschen (DELETE)

sql
-- Datensatz löschen
DELETE FROM benutzer WHERE id = 3;

-- Alle Datensätze löschen (Tabelle leeren)
DELETE FROM benutzer;

-- Oder: Tabelle leeren (schneller)
TRUNCATE TABLE benutzer;

Übungen zu SQL-Grundlagen

Aufgabe 1: Erstellen Sie eine Tabelle produkte mit folgenden Feldern:

  • id (INT, AUTO_INCREMENT, Primärschlüssel)
  • name (VARCHAR(200))
  • beschreibung (TEXT)
  • preis (DECIMAL(10,2))
  • bestand (INT)
  • erstellt_am (DATETIME)

Aufgabe 2: Fügen Sie 5 Produkte in die Tabelle produkte ein.

Aufgabe 3: Fragen Sie alle Produkte ab, die weniger als 50€ kosten.

Aufgabe 4: Erhöhen Sie den Preis aller Produkte um 10%.

Aufgabe 5: Löschen Sie das Produkt mit der ID 3.

Zusammenfassung

In diesem Kapitel haben Sie:

  • ✅ Verstanden, was eine Datenbank ist und warum MySQL verwendet wird
  • ✅ Grundlegende Konzepte (Datenbank, Tabelle, Feld, Datensatz) gelernt
  • ✅ phpMyAdmin zur Verwaltung von MySQL-Datenbanken verwendet
  • ✅ SQL-Grundlagen (CREATE, INSERT, SELECT, UPDATE, DELETE) gelernt

Nächstes Kapitel: Wir werden PHP mit MySQL verbinden und Datenbankoperationen durchführen.


Übungsaufgaben:

  1. Erstellen Sie eine Datenbank blog mit einer Tabelle artikel
  2. Fügen Sie mindestens 3 Artikel in die Tabelle ein
  3. Fragen Sie alle Artikel ab, die ein bestimmtes Wort enthalten
  4. Aktualisieren Sie einen Artikel
  5. Löschen Sie einen Artikel

Häufige Fehler:

  • ❌ Datenbankname mit Umlauten/Sonderzeichen → Nur Buchstaben, Zahlen, Unterstrich verwenden
  • ❌ Zeichenkodierung nicht auf UTF-8 setzen → Immer utf8mb4 verwenden
  • DELETE FROM tabelle ohne WHERE → Löscht ALLE Datensätze!
  • ❌ SQL-Befehle falsch schreiben → Immer mit ; am Ende abschließen

Frei für alle Anfänger