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 TABLEerstellen 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 EXISTSOption zum Erstellen einer neuen Tabelle, falls diese noch nicht vorhanden ist. Versuch, eine bereits vorhandene Tabelle zu erstellen, ohne denIF NOT EXISTSzu verwenden Option führt zu einem Fehler. - Drittens geben Sie optional den
schema_namean zu der die neue Tabelle gehört. Das Schema kann die Hauptdatenbanktempsein 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, undCHECKSpalteneinschränkungen. - Fünftens geben Sie die Tabelleneinschränkungen wie
PRIMARY KEYan ,FOREIGN KEY,UNIQUE, undCHECKEinschränkungen. - Verwenden Sie schließlich optional den
WITHOUT ROWIDMöglichkeit. Standardmäßig hat eine Zeile in einer Tabelle eine implizite Spalte, die alsrowidbezeichnet wird ,oidoder_rowid_Säule. DierowidSpalte speichert einen vorzeichenbehafteten 64-Bit-Ganzzahlschlüssel, der die Zeile innerhalb der Tabelle eindeutig identifiziert. Wenn Sie dies nicht möchten, erstellt SQLite dierowidSpalte geben Sie dieWITHOUT ROWIDan Möglichkeit. Eine Tabelle, die dierowidenthält Spalte wird alsrowidbezeichnet Tisch. Beachten Sie, dassWITHOUT ROWIDOption 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
contactsTabelle, die Kontaktinformationen speichert. - Die
groupsTabelle, die Gruppeninformationen speichert. - Die
contact_groupsTabelle, 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 ACTIONCode language: SQL (Structured Query Language) (sql) FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTIONCode 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.