Appearance
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
| Datenbanksystem | Typ | Beschreibung |
|---|---|---|
| MySQL | Relational | Open Source, sehr beliebt, PHP-perfekt |
| MariaDB | Relational | MySQL-Fork (kompatibel) |
| PostgreSQL | Relational | Fortgeschritten, Open Source |
| SQLite | Relational | Leichtgewichtig, dateibasiert |
| MongoDB | NoSQL | Dokumentenorientiert |
| Redis | NoSQL | Key-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
| Datentyp | Beschreibung | Beispiel |
|---|---|---|
| INT | Ganzzahl | 25, 100 |
| VARCHAR(n) | Zeichenkette (variabel) | "Max" (max. n Zeichen) |
| TEXT | Langer Text | "Langer Artikeltext..." |
| DECIMAL(m,d) | Festkommazahl | 19.99 |
| DATE | Datum | 2024-05-26 |
| DATETIME | Datum + Uhrzeit | 2024-05-26 14:30:00 |
| BOOLEAN | Wahrheitswert | TRUE / 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)
- XAMPP Control Panel öffnen
- Apache und MySQL starten
- Im Browser öffnen:
http://localhost/phpmyadmin - Einloggen: Benutzer:
root, Passwort: `` (leer)
Grundlegende Operationen in phpMyAdmin
1. Datenbank erstellen
- Links auf "Neu" klicken
- Datenbankname eingeben:
meine_shop_datenbank - Kollation wählen:
utf8mb4_general_ci(empfohlen) - Auf "Erstellen" klicken
2. Tabelle erstellen
- Datenbank auswählen
- Tabellenname eingeben:
benutzer - Anzahl Felder eingeben:
5 - Auf "Ausführen" klicken
- 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)
- Auf "Speichern" klicken
3. Datensatz einfügen
- Tabelle auswählen
- Auf "Einfügen" klicken
- Werte eingeben:
name:Maxemail:max@beispiel.depasswort:geheim123erstellt_am:NOW()
- Auf "Ausführen" klicken
4. Datensätze anzeigen/bearbeiten
- Auf "Durchsuchen" klicken (alle Datensätze anzeigen)
- Auf "Bearbeiten" klicken (einzelnen Datensatz ändern)
- 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:
- Erstellen Sie eine Datenbank
blogmit einer Tabelleartikel - Fügen Sie mindestens 3 Artikel in die Tabelle ein
- Fragen Sie alle Artikel ab, die ein bestimmtes Wort enthalten
- Aktualisieren Sie einen Artikel
- Löschen Sie einen Artikel
Häufige Fehler:
- ❌ Datenbankname mit Umlauten/Sonderzeichen → Nur Buchstaben, Zahlen, Unterstrich verwenden
- ❌ Zeichenkodierung nicht auf UTF-8 setzen → Immer
utf8mb4verwenden - ❌
DELETE FROM tabelleohneWHERE→ Löscht ALLE Datensätze! - ❌ SQL-Befehle falsch schreiben → Immer mit
;am Ende abschließen
