# SQL CREATE TABLE: So erstellen Sie eine neue Tabelle

SQL CREATE TABLE wird genutzt, um eine neue Tabelle zu erstellen. Diese muss innerhalb einer Datenbank einzigartig sein. Beim Anlegen werden bereits wichtige Parameter festgelegt und es ist möglich, eine bereits existierende Tabelle als Basis zu nutzen.

## Was ist SQL CREATE TABLE?

Nachdem Sie mit der [Structured Query Language](https://www.ionos.de/digitalguide/server/knowhow/was-ist-sql/) eine SQL-Datenbank erstellt haben, können Sie eine neue Tabelle erschaffen. Diese wird genutzt, um Ihre Datensätze zu speichern und gibt die Struktur vor, in der diese Daten aufbereitet werden sollen. Tabellen bestehen zum einen aus **Feldern oder Spalten, die bestimmte Datentypen enthalten** dürfen, und zum anderen aus **Zeilen, in denen diese Daten gelistet werden**. Um eine neue Tabelle anzulegen, nutzen Sie die Anweisung SQL CREATE TABLE. Mit dieser hinterlegen Sie nicht nur die neue Tabelle, sondern bestimmen auch bereits, wie sie strukturiert werden soll. Im Anschluss füllen Sie sie mit den entsprechenden Daten.

## Syntax und Funktionsweise

Bereits mit einem Blick auf die Syntax von SQL CREATE TABLE können Sie feststellen, dass Datentypen und Bezeichnungen von Beginn an obligatorisch für die korrekte Erstellung einer neuen Tabelle sind. Die Syntax sieht grundsätzlich aus wie folgt:

```sql
CREATE TABLE name_der_tabelle (
spalte1 datentyp,
spalte2 datentyp,
spalte3 datentyp,
…
);
```

Mit dem [SQL-Befehl](https://www.ionos.de/digitalguide/server/konfiguration/sql-befehle/) CREATE TABLE erstellen Sie eine neue Tabelle, deren Namen Sie bereits ebenfalls in der ersten Zeile anlegen. Innerhalb der Klammern wird diese Tabelle dann spezifiziert. So wählen Sie jeweils eine Bezeichnung für `spalte1`, `spalte2` usw. und geben dazu an, **welche Datentypen in dieser Spalte hinterlegt werden** können. Häufig genutzte Datentypen sind zum Beispiel `VARCHAR` (ein String, der Buchstaben, Zahlen oder Sonderzeichen enthalten kann), `BOOLEAN` (für die booleschen Werte true oder false), `INT` (für Zahlenwerte) oder `DATE` (für Datumsangaben).

## Beispiel für eine neue Tabelle

Um die Funktionsweise von SQL CREATE TABLE zu veranschaulichen, zeigen wir Ihnen an dieser Stelle anhand eines einfachen Beispiels, wie eine solche Tabelle aussehen kann. Dafür legen wir ein Mitarbeiterverzeichnis an, das eine Mitarbeiter-ID, den Nachnamen, den Vornamen, die Adresse, die Stadt und das Alter enthält. Wir benötigen also insgesamt **sechs Spalten**, die unterschiedliche Datentypen speichern können. So sieht der passende Code aus:

```sql
CREATE TABLE Mitarbeiter (
ID INT NOT NULL,
Nachname VARCHAR(50),
Vorname VARCHAR(50),
Adresse VARCHAR(50),
Stadt VARCHAR(50),
Alter INT NOT NULL
);
```

Für ID und Alter wählen wir den Datentyp `INT`, der Zahlen enthält. Der Zusatz `NOT NULL` legt fest, dass diese Felder nicht freibleiben dürfen. Die restlichen Spalten `Nachname`, `Vorname`, `Adresse` und `Stadt` dürfen Buchstaben, Zahlen und Sonderzeichen enthalten.

## Kombination mit dem Befehl IF NOT EXISTS

Jede Tabelle muss **innerhalb einer Datenbank einzigartig** sein, damit das System auch darauf zugreifen kann. Wenn Sie also versuchen, eine neue Tabelle mit SQL CREATE TABLE anzulegen und dabei einen Namen wählen, der bereits vergeben ist, erhalten Sie eine Fehlermeldung wie `Error: table already exists`. Um dies zu vermeiden, können Sie den optionalen Befehl `IF NOT EXISTS` hinzufügen. Dieser überprüft zunächst, ob es bereits eine Tabelle mit demselben Namen gibt. Nur wenn dies nicht der Fall ist, erstellt er eine neue Tabelle mit den hinterlegten Parametern. Für unser Beispiel von oben sieht er folgendermaßen aus:

```sql
CREATE TABLE IF NOT EXISTS Mitarbeiter (
ID INT NOT NULL,
Nachname VARCHAR(50),
Vorname VARCHAR(50),
Adresse VARCHAR(50),
Stadt VARCHAR(50),
Alter INT NOT NULL
);
```

## Eine neue Tabelle auf Basis einer vorhandenen Tabelle erstellen

Auch wenn die Anweisung recht einfach funktioniert, kann es mühselig sein, falls Sie mehrere ähnliche Tabellen erstellen müssen. [SQL CREATE DATABASE](https://www.ionos.de/digitalguide/server/konfiguration/sql-create-database/) gibt Ihnen daher auch die Möglichkeit, für die Erstellung einer neuen Tabelle **auf eine bereits existierende zurückzugreifen**. Dabei haben Sie die Wahl, ob Sie eine exakte Kopie erstellen oder nur bestimmte Parameter berücksichtigen möchten. Wir zeigen Ihnen beide Verfahrensweisen. Im ersten Fall erstellen wir eine Mitarbeiterliste für eine andere Niederlassung. Diese soll also identisch aufgebaut werden, benötigt aber einen neuen Namen. Dies ist der Code:

```sql
CREATE TABLE Neue_Mitarbeiterliste
AS
SELECT *
FROM Mitarbeiter;
```

Durch das Sternchen zeigen wir dem System an, dass es alle Spalten übernehmen soll.

Im nächsten Beispiel erstellen wir eine Kundenliste. Diese soll zwar ebenfalls die Spalten für ID, Nachname, Vorname, Adresse und Stadt enthalten; das Geburtsdatum soll hingegen nicht angelegt werden. Daher legen wir genau fest, welche Spalten kopiert werden sollen:

```sql
CREATE TABLE Kundenliste
AS
SELECT ID, Nachname, Vorname, Adresse, Stadt
FROM Mitarbeiter;
```

## Ähnliche Befehle wie SQL CREATE TABLE

Neben dem bereits angesprochenen CREATE DATABASE gibt es weitere Anweisungen, die wichtig für die Arbeit mit SQL CREATE TABLE sind. Dazu gehören insbesondere [SQL DELETE](https://www.ionos.de/digitalguide/server/konfiguration/sql-delete/), mit der Sie Einträge aus einer Tabelle löschen, und die [SQL Aliases](https://www.ionos.de/digitalguide/server/konfiguration/sql-aliases/), mit denen Sie Tabellen oder Spalten zeitweise umbenennen.

Tipp Ihr ganz persönlicher Server: Mit [SQL-Server-Hosting](https://www.ionos.de/cloud/sql-server-hosting "SQL-Server-Hosting von IONOS") von IONOS wählen Sie nicht nur zwischen MSSQL, MySQL und MariaDB, sondern profitieren auch von zahlreichen nützlichen Features. Finden Sie die passende Lösung für Ihre Ansprüche!


This is a markdown version of: [https://www.ionos.de/digitalguide/server/konfiguration/sql-create-table/](https://www.ionos.de/digitalguide/server/konfiguration/sql-create-table/) for AI/LLM consumption.