Skip to content

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 Blogs

SQL-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 Feldern

SQL-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

DatentypBeschreibungBeispiel
INTGanze Zahl1, 100, -50
DECIMAL(m,d)Dezimalzahl19.99, 3.14
VARCHAR(n)Variabler Text (max n Zeichen)'Max', 'Hallo'
CHAR(n)Fester Text (genau n Zeichen)'AB123456'
TEXTLanger TextArtikelinhalt
DATEDatum'2024-01-15'
DATETIMEDatum + Uhrzeit'2024-01-15 14:30:00'
BOOL / BOOLEANWahrheitswertTRUE (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 BLOB

Auswahlhilfe 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 Nachkommastellen

3.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    | utf8mb4

3.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

  1. Theorie: Was ist der Unterschied zwischen einem Feld und einem Datensatz?
  2. Praxis: Erstelle eine Datenbank library_db für eine Bibliothek
  3. SQL: Erstelle eine Tabelle books mit 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)
  4. 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.

Frei für alle Anfänger