Eine Tabelle speichert Daten in Zeilen und Spalten. Jede Zeile enthält einen Datensatz. Jede Spalte beschreibt eine bestimmte Eigenschaft.
| kunden_id | name | stadt | alter |
|---|---|---|---|
| 1 | Anna Müller | Berlin | 28 |
| 2 | Max Schmidt | Leipzig | 35 |
| 3 | Lisa Weber | Dresden | 24 |
Mit dem SQL-Befehl CREATE TABLE wird eine neue Tabelle in einer Datenbank erstellt. Dabei werden die Spalten und ihre Datentypen festgelegt.
CREATE TABLE kunden (
kunden_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
stadt VARCHAR(100),
alter INT
);
| Bestandteil | Bedeutung |
|---|---|
| CREATE TABLE | Erstellt eine neue Tabelle |
| kunden | Name der Tabelle |
| kunden_id | Name einer Spalte |
| INT | Ganzzahl |
| VARCHAR(100) | Text mit maximal 100 Zeichen |
| PRIMARY KEY | Eindeutiger Primärschlüssel |
| AUTO_INCREMENT | Automatische Nummerierung |
| NOT NULL | Wert darf nicht NULL sein |
Jede Spalte einer Tabelle benötigt einen passenden Datentyp. Der Datentyp legt fest, welche Werte gespeichert werden können.
| Datentyp | Beschreibung | Beispiel |
|---|---|---|
| INT | Ganzzahl | 25 |
| VARCHAR(100) | Text mit begrenzter Länge | Anna Müller |
| TEXT | Längerer Text | Produktbeschreibung |
| DATE | Datum | 2026-10-21 |
| DATETIME | Datum und Uhrzeit | 2026-10-21 10:30:00 |
| DECIMAL(10,2) | Dezimalzahl mit zwei Nachkommastellen | 199.99 |
| BOOLEAN | Wahrheitswert | TRUE / FALSE |
In MySQL wird BOOLEAN als Synonym für TINYINT(1) verwendet. Dabei steht häufig 0 für falsch und 1 für wahr.
Ein Primärschlüssel identifiziert jeden Datensatz einer Tabelle eindeutig. Ein Primärschlüsselwert darf nicht mehrfach vorkommen und nicht NULL sein.
CREATE TABLE produkte (
produkt_id INT PRIMARY KEY,
produktname VARCHAR(100),
preis DECIMAL(10,2)
);
| produkt_id | produktname | preis |
|---|---|---|
| 1 | Laptop | 899.99 |
| 2 | Maus | 19.99 |
Die produkt_id ist der Primärschlüssel. Jedes Produkt besitzt eine eindeutige ID.
Mit AUTO_INCREMENT wird bei jedem neuen Datensatz automatisch eine neue Nummer erzeugt.
CREATE TABLE kategorien (
kategorie_id INT AUTO_INCREMENT PRIMARY KEY,
bezeichnung VARCHAR(100) NOT NULL
);
| kategorie_id | bezeichnung |
|---|---|
| 1 | Elektronik |
| 2 | Möbel |
| 3 | Kleidung |
NOT NULL bedeutet, dass eine Spalte keinen NULL-Wert enthalten darf. Mit DEFAULT wird ein Standardwert festgelegt.
CREATE TABLE mitarbeiter (
mitarbeiter_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
aktiv BOOLEAN DEFAULT TRUE
);
Wenn beim Einfügen kein Wert für aktiv angegeben wird, verwendet MySQL standardmäßig TRUE.
Mit SHOW TABLES werden alle Tabellen der aktuell ausgewählten Datenbank angezeigt.
USE projektarbeit;
SHOW TABLES;
Tables_in_projektarbeit
-----------------------
kunden
produkte
kategorien
mitarbeiter
Mit DESCRIBE kann die Struktur einer Tabelle angezeigt werden.
DESCRIBE kunden;
| Field | Type | Null | Key |
|---|---|---|---|
| kunden_id | int | NO | PRI |
| name | varchar(100) | NO | |
| stadt | varchar(100) | YES | |
| alter | int | YES |
Mit IF NOT EXISTS wird eine Tabelle nur erstellt, wenn sie noch nicht existiert.
CREATE TABLE IF NOT EXISTS lieferanten (
lieferant_id INT AUTO_INCREMENT PRIMARY KEY,
firmenname VARCHAR(100) NOT NULL,
stadt VARCHAR(100)
);
Existiert die Tabelle bereits, wird sie nicht erneut erstellt. Die vorhandene Tabellenstruktur bleibt dabei unverändert.
Im folgenden Beispiel wird eine Datenbank ausgewählt und eine Tabelle für Bestellungen erstellt.
USE projektarbeit;
CREATE TABLE bestellungen (
bestellung_id INT AUTO_INCREMENT PRIMARY KEY,
kunden_id INT NOT NULL,
bestelldatum DATE NOT NULL,
gesamtbetrag DECIMAL(10,2)
);
SHOW TABLES;
DESCRIBE bestellungen;
Die Spalte kunden_id kann später als Fremdschlüssel definiert werden, um eine Beziehung zur Tabelle kunden herzustellen.
Mit CREATE TABLE werden Tabellen erstellt. Datentypen bestimmen, welche Werte gespeichert werden können. PRIMARY KEY identifiziert Datensätze eindeutig und AUTO_INCREMENT ermöglicht eine automatische Nummerierung. SHOW TABLES zeigt vorhandene Tabellen, während DESCRIBE ihre Struktur anzeigt.