Zusammenfassung :In diesem Tutorial erfahren Sie, wie Sie mit SQLite CREATE TABLE
neue Tabellen erstellen Anweisung mit verschiedenen Optionen.
Einführung in SQLite CREATE TABLE
Erklärung
Um eine neue Tabelle in SQLite zu erstellen, verwenden Sie CREATE TABLE
Anweisung mit der folgenden Syntax:
CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
column_1 data_type PRIMARY KEY,
column_2 data_type NOT NULL,
column_3 data_type DEFAULT 0,
table_constraints
) [WITHOUT ROWID];
Code language: SQL (Structured Query Language) (sql)
In dieser Syntax:
- Geben Sie zuerst den Namen der Tabelle an, die Sie nach
CREATE TABLE
erstellen möchten Schlüsselwörter. Der Name der Tabelle darf nicht mitsqlite_
beginnen weil es für die interne Verwendung von SQLite reserviert ist. - Zweitens:Verwenden Sie
IF NOT EXISTS
Option zum Erstellen einer neuen Tabelle, falls diese noch nicht vorhanden ist. Versuch, eine bereits vorhandene Tabelle zu erstellen, ohne denIF NOT EXISTS
zu verwenden Option führt zu einem Fehler. - Drittens geben Sie optional den
schema_name
an zu der die neue Tabelle gehört. Das Schema kann die Hauptdatenbanktemp
sein Datenbank oder eine angehängte Datenbank. - Viertens geben Sie die Spaltenliste der Tabelle an. Jede Spalte hat einen Namen, einen Datentyp und die Spalteneinschränkung. SQLite unterstützt
PRIMARY KEY
,UNIQUE
,NOT NULL
, undCHECK
Spalteneinschränkungen. - Fünftens geben Sie die Tabelleneinschränkungen wie
PRIMARY KEY
an ,FOREIGN KEY
,UNIQUE
, undCHECK
Einschränkungen. - Verwenden Sie schließlich optional den
WITHOUT ROWID
Möglichkeit. Standardmäßig hat eine Zeile in einer Tabelle eine implizite Spalte, die alsrowid
bezeichnet wird ,oid
oder_rowid_
Säule. Dierowid
Spalte speichert einen vorzeichenbehafteten 64-Bit-Ganzzahlschlüssel, der die Zeile innerhalb der Tabelle eindeutig identifiziert. Wenn Sie dies nicht möchten, erstellt SQLite dierowid
Spalte geben Sie dieWITHOUT ROWID
an Möglichkeit. Eine Tabelle, die dierowid
enthält Spalte wird alsrowid
bezeichnet Tisch. Beachten Sie, dassWITHOUT ROWID
Option ist nur in SQLite 3.8.2 oder höher verfügbar.
Beachten Sie, dass der Primärschlüssel einer Tabelle eine Spalte oder eine Gruppe von Spalten ist, die jede Zeile in der Tabelle eindeutig identifiziert.
SQLite CREATE TABLE
Beispiele
Angenommen, Sie müssen Kontakte mit SQLite verwalten.
Jeder Kontakt hat die folgenden Informationen:
- Vorname
- Nachname
- Telefon
Voraussetzung ist, dass E-Mail und Telefon eindeutig sind. Außerdem gehört jeder Kontakt zu einer oder mehreren Gruppen, und jede Gruppe kann null oder viele Kontakte haben.
Basierend auf diesen Anforderungen haben wir drei Tabellen entwickelt:
- Die
contacts
Tabelle, die Kontaktinformationen speichert. - Die
groups
Tabelle, die Gruppeninformationen speichert. - Die
contact_groups
Tabelle, die die Beziehung zwischen Kontakten und Gruppen speichert.
Das folgende Datenbankdiagramm veranschaulicht Tabellen:contacts
groups
und contact_groups.
Die folgende Anweisung erstellt die contacts
Tabelle.
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Die contact_id
ist der Primärschlüssel der contacts
Tabelle.
Da der Primärschlüssel aus einer Spalte besteht, können Sie die Spaltenbeschränkung verwenden.
Der first_name
und last_name
Spalten haben TEXT
Speicherklasse und diese Spalten sind NOT NULL
. Das bedeutet, dass Sie Werte angeben müssen, wenn Sie Zeilen in den contacts
einfügen oder aktualisieren Tabelle.
Die E-Mail-Adresse und das Telefon sind eindeutig, daher verwenden wir den UNIQUE
Einschränkung für jede Spalte.
Die folgende Anweisung erstellt die groups
Tabelle:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Die groups
Tabelle ist recht einfach mit zwei Spalten:group_id
und name
. Die group_id
Spalte ist die Primärschlüsselspalte.
Die folgende Anweisung erstellt contact_groups
Tabelle:
CREATE TABLE contact_groups(
contact_id INTEGER,
group_id INTEGER,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Die contact_groups
Tabelle hat einen Primärschlüssel, der aus zwei Spalten besteht:contact_id
und group_id
.
Um die Primärschlüsseleinschränkung der Tabelle hinzuzufügen, verwenden Sie diese Syntax:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
Außerdem die contact_id
und group_id
sind die Fremdschlüssel. Daher verwenden Sie FOREIGN KEY
Einschränkung, um einen Fremdschlüssel für jede Spalte zu definieren.
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code language: SQL (Structured Query Language) (sql)
Beachten Sie, dass wir dies im FOREIGN KEY
besprechen werden Einschränkung im Detail im nachfolgenden Tutorial.
In diesem Tutorial haben Sie gelernt, wie Sie mit SQLite CREATE TABLE
eine neue Tabelle mit verschiedenen Optionen erstellen Erklärung.