Appearance
Kapitel 3: MySQL Kernkonzepte
3.1 Datenbank-Kernkonzepte
Datenbank (Database) - Der "Container"
Eine Datenbank ist wie ein Ordner auf deinem Computer, der verwandte Daten zusammenfasst.
Beispiele:
- studenten_db → Enthält alle Daten einer Schule
- shop_db → Enthält alle Daten eines Online-Shops
- blog_db → Enthält alle Daten eines BlogsSQL-Befehl:
sql
-- Datenbank erstellen
CREATE DATABASE studenten_db;
-- Alle Datenbanken anzeigen
SHOW DATABASES;
-- Datenbank auswählen
USE studenten_db;Datentabelle (Table) - Die "Tabelle"
Eine Tabelle ist wie ein Excel-Blatt innerhalb der Datenbank. Sie speichert Daten zu einem bestimmten Thema.
Beispiel: "students" Tabelle
+----+---------+-----+------------+
| id | name | age | klasse |
+----+---------+-----+------------+
| 1 | Max | 20 | 10A |
| 2 | Lisa | 19 | 10B |
+----+---------+-----+------------+SQL-Befehl:
sql
-- Tabelle erstellen
CREATE TABLE students (
id INT,
name VARCHAR(50),
age INT,
klasse VARCHAR(10)
);
-- Alle Tabellen anzeigen
SHOW TABLES;
-- Tabellenstruktur anzeigen
DESC students;Feld (Field) - Die "Spalte"
Ein Feld (oder eine Spalte) definiert, welche Art von Daten in der Tabelle gespeichert wird.
In der Tabelle "students":
- id → Die ID-Nummer (Zahl)
- name → Der Name (Text)
- age → Das Alter (Zahl)
- klasse → Die Klasse (Text)Datensatz (Record) - Die "Zeile"
Ein Datensatz (oder eine Zeile) enthält alle Informationen über ein einzelnes Objekt.
Datensatz für "Max":
| 1 | Max | 20 | 10A |
→ Dies ist EIN Datensatz mit 4 FeldernSQL-Befehl:
sql
-- Alle Datensätze abfragen
SELECT * FROM students;
-- Einen Datensatz einfügen
INSERT INTO students (id, name, age, klasse)
VALUES (1, 'Max', 20, '10A');Primärschlüssel (Primary Key) - Die "eindeutige ID"
Der Primärschlüssel ist ein Feld (oder eine Kombination von Feldern), das jeden Datensatz eindeutig identifiziert.
Regeln:
- ✅ Muss eindeutig sein (keine zwei Datensätze haben denselben Wert)
- ✅ Darf nicht NULL sein
- ✅ Am besten: Automatisch incrementierend (AUTO_INCREMENT)
Beispiel:
+----+---------+
| id | name | ← "id" ist der Primärschlüssel
+----+---------+
| 1 | Max |
| 2 | Lisa |
+----+---------+SQL-Befehl:
sql
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);3.2 Datentypen (Core - Zum Erstellen von Tabellen erforderlich)
Häufig verwendete Datentypen
| Datentyp | Beschreibung | Beispiel |
|---|---|---|
| INT | Ganze Zahl | 1, 100, -50 |
| DECIMAL(m,d) | Dezimalzahl | 19.99, 3.14 |
| VARCHAR(n) | Variabler Text (max n Zeichen) | 'Max', 'Hallo' |
| CHAR(n) | Fester Text (genau n Zeichen) | 'AB123456' |
| TEXT | Langer Text | Artikelinhalt |
| DATE | Datum | '2024-01-15' |
| DATETIME | Datum + Uhrzeit | '2024-01-15 14:30:00' |
| BOOL / BOOLEAN | Wahrheitswert | TRUE (1) / FALSE (0) |
Andere häufige Typen
sql
-- BOOL / TINYINT(1)
ist_aktiv BOOLEAN DEFAULT TRUE
-- TEXT (für lange Texte)
beschreibung TEXT
-- BLOB (für Binärdaten - Bilder, Dateien)
profilbild BLOBAuswahlhilfe für Datentypen (Tipps für Einsteiger)
❌ Falsch (Verschwendung):
ALTER TABELLE users MODIFY name VARCHAR(255); -- Für Namen unnötig groß
✅ Richtig:
ALTER TABELLE users MODIFY name VARCHAR(50); -- Ausreichend für Namen
❌ Falsch:
ALTER TABELLE produkte MODIFY preis VARCHAR(10); -- Preis sollte Zahl sein!
✅ Richtig:
ALTER TABELLE produkte MODIFY preis DECIMAL(10,2); -- 10 Stellen, 2 Nachkommastellen3.3 MySQL Encoding-Einstellung (Wichtig: UTF-8 zur Vermeidung von Zeichenfehlern)
Warum UTF-8?
- Unterstützt alle Zeichen (Deutsch, Chinesisch, Emoji)
- Vermeidet "Mojibake" (unleserliche Zeichen)
Empfohlen: utf8mb4 (neuestes UTF-8)
sql
-- Datenbank mit UTF-8 erstellen
CREATE DATABASE meine_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Tabelle mit UTF-8 erstellen
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Bereits vorhandene Datenbank ändern
ALTER DATABASE meine_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;Überprüfen:
sql
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';Erwartete Ausgabe (korrekt):
character_set_client | utf8mb4
character_set_connection| utf8mb4
character_set_database | utf8mb4
character_set_results | utf8mb4
character_set_server | utf8mb43.4 Praxisbeispiel: Erste Datenbank und Tabelle erstellen
Szenario: Erstelle eine Datenbank für eine Schülerverwaltung.
Schritt 1: Datenbank erstellen
sql
CREATE DATABASE schule_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE schule_db;Schritt 2: Tabelle "students" erstellen
sql
CREATE TABLE students (
student_id INT PRIMARY KEY AUTO_INCREMENT,
vorname VARCHAR(50) NOT NULL,
nachname VARCHAR(50) NOT NULL,
geburtsdatum DATE,
email VARCHAR(100) UNIQUE,
klasse VARCHAR(10),
erstellt_am DATETIME DEFAULT CURRENT_TIMESTAMP
) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;Schritt 3: Tabellenstruktur überprüfen
sql
DESC students;Ausgabe:
+---------------+--------------+------+-----+-------------------+
| Field | Type | Null | Key | Default |
+---------------+--------------+------+-----+-------------------+
| student_id | int | NO | PRI | NULL |
| vorname | varchar(50) | NO | | NULL |
| nachname | varchar(50) | NO | | NULL |
| geburtsdatum | date | YES | | NULL |
| email | varchar(100) | YES | UNI | NULL |
| klasse | varchar(10) | YES | | NULL |
| erstellt_am | datetime | YES | | CURRENT_TIMESTAMP |
+---------------+--------------+------+-----+-------------------+Schritt 4: Einen Datensatz einfügen
sql
INSERT INTO students (vorname, nachname, geburtsdatum, email, klasse)
VALUES ('Max', 'Mustermann', '2005-03-15', 'max@email.de', '10A');
-- Alle Datensätze anzeigen
SELECT * FROM students;Ausgabe:
+------------+---------+----------+---------------+-------+---------------------+
| student_id | vorname | nachname | geburtsdatum | email | klasse | erstellt_am |
+------------+---------+----------+---------------+-------+---------------------+
| 1 | Max | Mustermann| 2005-03-15 | max@... | 10A | 2024-01-15 10:30:00|
+------------+---------+----------+---------------+-------+---------------------+Zusammenfassung
In diesem Kapitel hast du gelernt:
- ✅ Was eine Datenbank, Tabelle, Feld und Datensatz ist
- ✅ Den Unterschied zwischen Feldern und Datensätzen
- ✅ Die wichtigsten Datentypen (INT, VARCHAR, DATE, etc.)
- ✅ Wie man Datentypen richtig auswählt
- ✅ Die Bedeutung von UTF-8 Encoding
- ✅ Eine komplette Datenbank mit Tabelle zu erstellen
Übungen
- Theorie: Was ist der Unterschied zwischen einem Feld und einem Datensatz?
- Praxis: Erstelle eine Datenbank
library_dbfür eine Bibliothek - SQL: Erstelle eine Tabelle
booksmit folgenden Feldern:book_id(Primärschlüssel, auto-Inkrement)titel(Text, max 200 Zeichen)autor(Text, max 100 Zeichen)erscheinungsjahr(Jahr als Zahl)isbn(Text, genau 13 Zeichen)
- Encoding: Überprüfe die Encoding-Einstellungen deiner Datenbank
Nächstes Kapitel
Im nächsten Kapitel lernen wir die SQL-Grundlagen - die Befehle, mit denen du Datenbanken und Tabellen erstellen, ändern und abfragen kannst.
