Um eine Tabelle in SQLite zu erstellen, verwenden Sie CREATE TABLE
Aussage.
Diese Anweisung akzeptiert den Tabellennamen, die Spaltennamen und ihre Definitionen sowie einige andere Optionen.
Beispiel
Hier ist ein einfaches Beispiel.
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY AUTOINCREMENT,
ProductName TEXT NOT NULL,
Price NUMERIC
);
In diesem Fall also Products
ist der Name der Tabelle und enthält drei Spalten; ProductId
, ProductName
, und Price
.
In diesem Beispiel habe ich den Datentyp jeder Spalte sowie einige Einschränkungen hinzugefügt, aber diese sind alle optional.
Geben Sie das Schema an
Dem Namen der Tabelle kann (optional) der Schemaname vorangestellt werden. Dabei muss der Schemaname entweder main
sein , temp
, oder der Name einer angehängten Datenbank.
Also könnte ich stattdessen Folgendes tun:
CREATE TABLE Store.Products(
ProductId,
ProductName,
Price
);
In diesem Fall Store
ist der Name der angehängten Datenbank, in der ich die Tabelle erstellen möchte.
Dem Spaltennamen können der Datentyp und eventuelle Einschränkungen folgen.
Datentyp ist optional
Ja, Sie haben richtig gelesen – der Datentyp ist eigentlich optional.
SQLite verwendet dynamische Typisierung, sodass der Datentyp eines Werts mit dem Wert selbst verknüpft ist, nicht mit seinem Container (Spalte). Dies steht im Gegensatz zu den meisten anderen SQL-Datenbanksystemen, wo Sie den Datentyp angeben müssen, wenn Sie die Spalte erstellen.
Also könnte ich stattdessen Folgendes tun:
CREATE TABLE Products(
ProductId,
ProductName,
Price
);
Einschränkungen und andere Optionen
Sie haben die Möglichkeit, Einschränkungen oder andere Optionen anzugeben, die Sie auf jede Spalte anwenden möchten. Dazu gehören die folgenden:
DEFAULT
Klausel. Dies gibt einen Standardwert oder -ausdruck für jede Spalte in der Tabelle an.- Das
COLLATE
-Klausel, um den Namen einer Sortierfolge anzugeben, die als Standardsortierfolge für die Spalte verwendet werden soll. Der Standardwert ist BINARY. PRIMARY KEY
Klausel. Sie können optional angeben, dass eine Spalte ein Primärschlüssel ist. In SQLite werden sowohl einspaltige als auch zusammengesetzte (mehrspaltige) Primärschlüssel unterstützt.- SQLite unterstützt auch die Einschränkungen UNIQUE, NOT NULL, CHECK und FOREIGN KEY.
- Eine generierte Spaltenbeschränkung (auch als berechnete Spalte bezeichnet). Dies sind Spalten, deren Werte eine Funktion anderer Spalten in derselben Zeile sind.
- Ob die Tabelle eine
WITHOUT ROWID
ist Tisch. Dies ist eine Technik zur Leistungsoptimierung, bei der die Spalte „rowid“ weggelassen wird, die eine spezielle Spalte ist, die SQLite standardmäßig verwendet. Weitere Informationen zu dieser Technik finden Sie in der SQLite-Dokumentation.
Temporäre Tabellen
Sie können angeben, dass eine Tabelle eine temporäre Tabelle ist, indem Sie entweder den TEMP
verwenden oder TEMPORARY
Stichwort.
Wenn Sie eines dieser Schlüsselwörter verwenden, müssen sie zwischen CREATE
eingefügt werden und TABLE
.
Hier ist ein Beispiel:
CREATE TEMP TABLE Products(
ProductId,
ProductName,
Price
);
Sie können auch den temp
hinzufügen Schema, wenn Sie möchten.
Weitere Beispiele zum Erstellen temporärer Tabellen in SQLite finden Sie unter So erstellen Sie eine temporäre Tabelle.
Eine Tabelle aus einer anderen Tabelle erstellen
Sie können auch ein CREATE TABLE ... AS SELECT
verwenden -Anweisung zum Erstellen einer neuen Tabelle basierend auf einer anderen Tabelle. Dabei wird die neue Tabelle mit den Daten aus SELECT
gefüllt -Anweisung (die Daten aus einer anderen Tabelle oder Tabellen auswählt).
Hier ist ein einfaches Beispiel:
CREATE TABLE Store.Products2 AS
SELECT * FROM Store.Products;
Dieses Beispiel erstellt eine neue Tabelle namens Products2
und füllt es mit allen Daten aus den Products
Tisch.
Alle Spaltennamen sind die gleichen wie in der Originaltabelle.
Es ist wichtig zu beachten, dass auf diese Weise erstellte Tabellen keinen PRIMARY KEY und keinerlei Einschränkungen haben. Außerdem ist der Standardwert jeder Spalte NULL
. Außerdem ist die standardmäßige Sortierreihenfolge für jede Spalte der neuen Tabelle BINARY.