Zurück zur Artikelliste Artikel
8 Leseminuten

Wie man eine Tabelle in SQL erstellt

Das Erstellen von Tabellen in Datenbanken ist eine sehr nützliche Fähigkeit, und zwar nicht nur für Softwareingenieure oder Datenbankadministratoren. Damit können Sie die Struktur einer Datenbank entwerfen oder ändern und Daten speichern, die miteinander in Beziehung stehen. In diesem Artikel erfahren Sie, was eine Datenbanktabelle ist, wer sie erstellt und wie Sie die Syntax des Befehls CREATE TABLE verwenden.

Was ist eine Datenbanktabelle?

Eine relationale Datenbank besteht aus verschiedenen Strukturen wie Tabellen, Ansichten, Prozeduren und Triggern. Das Hauptelement einer Datenbank ist die Tabelle. Es handelt sich um eine Struktur, die Daten speichert. In den meisten Fällen enthält eine Datenbank mehr als eine Tabelle, und die Tabellen sind miteinander verknüpft (d. h. in den Tabellen werden verwandte Informationen gespeichert, z. B. der Name einer Person, ihre Augenfarbe und ihre Größe).

Die folgende Abbildung zeigt ein Beispiel für eine Datenbank eines Online-Shops für Musikzubehör. (Das Bild stammt aus dem Vertabelo-Blog; Vertabelo ist ein Online-Tool zur Datenbankmodellierung). Beachten Sie, dass diese Datenbank mehrere Tabellen enthält. Die Linien zeigen die Beziehungen zwischen den Tabellen an:

Datenbank

Wie Sie sehen, gibt es eine Vielzahl von Tabellen: category, instrument, manufacturerund mehr. In einer SQL-Datenbank hat jede Tabelle einen Namen und speichert Daten in Zeilen und Spalten. Jede Zeile speichert Details über ein bestimmtes Objekt.

Zum Beispiel speichert die Tabelle instrument speichert beispielsweise Informationen über Instrumente. Jede Zeile steht für ein bestimmtes Instrument: Eine Zeile kann Informationen über eine weiße Gitarre speichern, die in "Music Shop in Chicago" gekauft wurde; eine andere Zeile kann Informationen über eine silberne Trommel speichern, die in "In Tom's shop" gekauft wurde.

Die Details in jeder Zeile sollten atomar sein (d. h. sie können nicht kleiner oder spezifischer werden), also müssen wir sie in Spalten unterteilen. Jede Spalte speichert eine Art von Daten, z. B. eine Farbe, einen Namen, den Typ eines Instruments oder das Geschäft, in dem es gekauft wurde. Unten sehen Sie eine Beispieltabelle mit diesen Spalten und Zeilen:

namecolortypestore
guitarwhitechordophoneMusic Shop in Chicago
trumpetgoldwindMusic Shop in Chicago
drumssilverpercussionIn Tom’s shop

Der Tabellenname sollte die Daten beschreiben, die in dieser Tabelle gespeichert sind. Bei der Erstellung der Tabelle sollten Sie auch den oder die Datentypen definieren, die in den Tabellenspalten verwendet werden. (Um all dies zu tun, benötigen Sie eine CREATE TABLE-Berechtigung, aber das ist ein anderer Artikel).

Wenn Sie lernen möchten, wie man Tabellen in einer Datenbank erstellt, empfehle ich Ihnen den Track Creating Database Structure unter LearnSQL.de. Es handelt sich um eine Reihe von fünf interaktiven Kursen, in denen Sie die Einzelheiten der Erstellung von Tabellen in SQL lernen.

Wer erstellt Tabellen?

Sie wissen, was eine Tabelle ist, aber das wirft eine andere Frage auf: Wer erstellt die Tabellen in einer Datenbank? Es gibt verschiedene Gruppen von Personen, die Datenbanktabellen erstellen können.

Die erste Gruppe sind die Datenbankdesigner. Sie definieren die Struktur der Datenbank: was die Tabellen enthalten, die Beziehungen zwischen den Tabellen, wie die Tabellen Informationen speichern. Sie entwerfen neue Datenbanken für bestimmte Anwendungen oder Dienste.

Datenbankadministratoren (DBAs) kümmern sich um die Datenbankserver. Sie warten, erstellen und ändern Datenbanken. Das Erstellen neuer Tabellen ist Teil ihrer Arbeit.

Softwareingenieure und Anwendungsentwickler erstellen ebenfalls Datenbanktabellen. Wenn sie eine neue Anwendung erstellen, müssen sie oft auch eine Datenbank dafür entwerfen.

Datenanalysten sind eine weitere Gruppe, die manchmal Tabellen erstellt. Sie verwenden Datenbanken, um die Daten zu speichern, die sie analysieren, und können Tabellen verwenden, um die Ergebnisse ihrer Analysen zu speichern.

Natürlich kann das Entwerfen von Datenbanken und das Erstellen von Tabellen für jeden hilfreich sein, der mit Daten arbeitet oder Datenbanken verwendet.

Wie man eine Tabelle erstellt

Das Erstellen einer Tabelle in einer Datenbank ist sehr einfach. Sie müssen nur die Standard-SQL-Syntax für den Befehl CREATE TABLE verwenden:

CREATE TABLE table_name
( 
column1 data_type, 
column2 data_type,
 … 
);

Schauen wir uns an, was hier vor sich geht. Zuerst geben Sie das Schlüsselwort CREATE TABLE ein, gefolgt von dem Tabellennamen. Dieser Name sollte kein SQL-Schlüsselwort sein (wie CREATE, LIKE oder NULL). Er muss innerhalb der Datenbank eindeutig sein - wenn eine Tabelle den Namen personheißt, können andere Tabellen in derselben Datenbank diesen Namen nicht haben - und er muss die Daten beschreiben, die in der Tabelle gespeichert werden. Weitere Informationen über die Benennung von Tabellen finden Sie in Naming Conventions in Database Modeling und An Unemotional Logical Look at SQL Server Naming Conventions.

Nach dem Namen fügen Sie ein Paar Klammern ein. Innerhalb der Klammern führen Sie die Namen der Spalten mit ihren Datentypen auf. Ein Datentyp legt fest, welche Art von Werten (Zahlen, Text, Datum, Uhrzeit usw.) Sie in einer Spalte speichern können. Die gängigsten Datentypen sind:

  • INTEGER/INT speichert ganze Zahlen wie -2567, 0 , 1, und 67.
  • VARCHAR speichert Textdaten. Sie können die maximale Anzahl von Zeichen wie folgt angeben: VARCHAR(n). Zum Beispiel kann varchar(4) die Texte 'Lisa', 'Os' oder 'Gary' speichern.
  • CHAR ist ähnlich, aber anstatt die maximale Länge festzulegen, legen Sie die absolute Länge fest. CHAR(4) speichert zum Beispiel 'Os' als 'Os '. Beachten Sie die beiden zusätzlichen Leerzeichen, die die Länge auf 4 erhöhen.
  • FLOAT speichert Fließkommazahlen, wie -23,789, 23,5 und 78,0.
  • DECIMAL ist ähnlich wie float und speichert Dezimalzahlen. Sie können jedoch die maximale Gesamtzahl der Ziffern(p) und die Anzahl der Nachkommastellen(s) wie folgt angeben: DECIMAL(p,s). Mit anderen Worten: decimal(4,2) kann 12,56, 1,56, 70 speichern. Im Gegensatz zu FLOAT bietet DECIMAL präzise Berechnungen. Verwenden Sie es, um Geldwerte zu speichern.
  • TIME speichert Zeitangaben, z. B. '12:34:50'.
  • DATE speichert Datumsangaben, z. B. '2020-09-09'.
  • DATETIME speichert sowohl Datums- als auch Zeitangaben in einem einzigen Feld, z. B. '2020-03-30 12:34:50'.

Diese grundlegende CREATE TABLE-Syntax ist für die meisten SQL-Engines gleich; Sie können sie in Oracle, SQL Server, MySQL oder PostgreSQL verwenden.

Erstellen einer einfachen Datenbanktabelle

Lassen Sie uns eine Tabelle namens customer die Details über die Kunden eines Unternehmens speichert. Jede Zeile wird Daten über einen bestimmten Kunden enthalten. Die Tabelle soll die Spalten ID, last_name, first_name und registration_date enthalten. Die in der Tabelle definierten Spalten speichern atomare Daten über jeden Kunden: seine Identifikationsnummer, seinen Nachnamen, seinen Vornamen und das Datum, an dem er sich als Kunde registriert hat.

Hier ist der Befehl, den wir verwenden würden:

CREATE TABLE  customer
( 
ID int, 
last_name varchar(80),
first_name varchar(80),
registration_date date
);

Wir beginnen mit dem Schlüsselwort CREATE TABLE, nach dem wir den Namen der neuen Tabelle angeben: customer. Anschließend geben wir in Klammern die Spaltennamen und Datentypen an. Die erste Spalte ist ID, in der ganzzahlige Werte wie 1,2,3 gespeichert werden. Die zweite und dritte Spalte, last_name und first_name, sind String-Werte; wir verwenden varchar(80) für sie. Denken Sie daran, dass der Wert in Klammern die maximale Anzahl von Zeichen in der Zeichenkette angibt. Die Spalte registration_date schließlich speichert das Datum, an dem die Person registriert wurde.

Datentypen steuern, welche Art von Informationen in eine Spalte eingegeben werden können; Sie können keine Buchstaben oder Symbole in eine INT-Spalte wie ID eingeben. Weitere Informationen über Datentypen finden Sie in den Kursen Die Grundlagen der Tabellenerstellung in SQL und Datentypen in SQL.

Definieren von Spalten ohne leere/wiederholte Werte

Die im letzten Abschnitt gezeigte CREATE TABLE-Anweisung ermöglicht es dem Benutzer, nicht eindeutige Werte oder leere Werte (NULLs) in ein Feld einzufügen. So kann zum Beispiel derselbe Wert ID für mehrere Kunden verwendet werden. Wir können dieses Verhalten ändern, indem wir eine Tabelle mit Beschränkungen erstellen: Wir fügen Beschränkungen zu ID hinzu, um NULLs und nicht eindeutige Werte zu verhindern; wir fügen auch Beschränkungen zu den Spalten first_name und last_name hinzu, um NULLs in diesen Spalten zu verhindern. Schauen Sie sich das an:

CREATE TABLE customer 
( 
ID int NOT NULL UNIQUE, 
last_name varchar(80) NOT NULL,
first_name varchar(80) NOT NULL,
registration_date date
);

SQL bietet das Schlüsselwort NOT NULL, das, wenn es zur Spaltendefinition hinzugefügt wird, beim Einfügen oder Ändern einer Zeile keine leeren Werte (NULL) zulässt. In unserem Beispiel können wir in den Spalten first_name, last_name oder ID keinen Wert auslassen (oder einen NULL-Wert einfügen). Sie müssen einen Wert haben.

Ein weiteres wichtiges Schlüsselwort ist UNIQUE. Durch Hinzufügen dieses Schlüsselworts können Sie sicherstellen, dass alle Werte in dieser Spalte in jeder Zeile unterschiedlich sind. In unserem Beispiel speichert die Spalte ID eindeutige Werte, die jeden Kunden identifizieren. Mehr über die verschiedenen Arten von Constraints erfahren Sie im Kurs SQL Constraints.

Erstellen einer Tabelle aus Daten, die in einer anderen Tabelle gespeichert sind

Wir können eine neue Tabelle erstellen, ohne Spalten zu definieren: Der Prozess basiert auf Daten und Spalten in anderen Tabellen.

Verwenden Sie diese Methode, wenn Sie Tabellen erstellen und Daten einfügen wollen, die in bestimmten Spalten einer anderen Tabelle gespeichert sind. Hier ist die Syntax:

CREATE TABLE new_table_name
  SELECT col1, col2, … 
  FROM existing_table_name ;

Zuerst geben wir das Schlüsselwort CREATE TABLE und den Namen der neuen Tabelle an. Anschließend verwenden wir den SELECT-Befehl. Damit können Sie die Spalten und die Tabelle(n) angeben, aus denen Sie Daten in die neue Tabelle kopieren. Die Namen und Datentypen dieser Spalten werden automatisch in der neuen Tabelle definiert.

Nachfolgend erstellen wir die Tabelle history_instrument unter Verwendung der Spalten ID, name, color und type aus der instrument Tabelle:

CREATE TABLE history_instrument   
  SELECT ID, name, type  
  FROM instrument ;

Beachten Sie, dass die neue Tabelle nicht alle Spalten der Tabelle instrument.

Erfahren Sie mehr über Datenbank-Strukturen

Wenn Sie sich für den Aufbau von Datenbankstrukturen wie Tabellen interessieren, finden Sie im Internet eine Menge Material, das Sie verwenden können. Auf LearnSQL.de finden Sie Artikel wie Understanding Numerical Data Types in SQL und TRUNCATE TABLE vs. DELETE vs. DROP TABLE: Entfernen von Tabellen und Daten in SQL, um Ihr SQL-Wissen zu erweitern. Sie können auch den Track Erstellen einer Datenbankstruktur auf LearnSQL.de absolvieren, um einen umfassenden und interaktiven Überblick zu erhalten.