SQLite Einschränkungen

Constraints sind Regeln, die für Datenspalten in einer Tabelle erzwungen werden. Sie werden verwendet, um die Arten von Daten einzuschränken, die in eine Tabelle eingefügt werden können, wodurch die Genauigkeit und Zuverlässigkeit der Daten in der Datenbank sichergestellt wird.

Einschränkungen können auf Spaltenebene oder Tabellenebene liegen. Einschränkungen auf Spaltenebene gelten nur für eine Spalte, während Einschränkungen auf Tabellenebene für die gesamte Tabelle gelten.

Die folgenden sind die häufig verwendeten Constraints in SQLite.

  • NOT NULL Constraint: Stellt sicher, dass eine Spalte keine NULL-Werte haben kann.

  • DEFAULT Constraint: Stellt einen Standardwert für eine Spalte bereit, wenn kein Wert angegeben wird.

  • UNIQUE Constraint: Stellt sicher, dass alle Werte in einer Spalte unterschiedlich sind.

  • PRIMARY KEY Constraint: Identifiziert jede Zeile/jeden Datensatz in einer Datenbanktabelle eindeutig.

  • CHECK Constraint: Die CHECK-Constraint stellt sicher, dass alle Werte in einer Spalte bestimmte Bedingungen erfüllen.

NOT NULL-Einschränkung

Standardmäßig kann eine Spalte NULL-Werte enthalten. Wenn Sie nicht möchten, dass eine Spalte NULL-Werte enthält, müssen Sie diese Einschränkung für diese Spalte definieren und angeben, dass NULL-Werte in dieser Spalte nicht zulässig sind.

NULL unterscheidet sich davon, keine Daten zu haben; es stellt unbekannte Daten dar.

Beispiel

Beispielsweise erstellt die folgende SQLite-Anweisung eine neue Tabelle COMPANY mit fünf Spalten, wobei für die drei Spalten ID, NAME und AGE festgelegt wird, dass sie keine NULL-Werte akzeptieren:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

DEFAULT Constraint

Die DEFAULT-Constraint stellt einen Standardwert für eine Spalte bereit, wenn die INSERT INTO-Anweisung keinen bestimmten Wert angibt.

Beispiel

Beispielsweise erstellt die folgende SQLite-Anweisung eine neue Tabelle COMPANY mit fünf Spalten. Hier ist die Spalte SALARY standardmäßig auf 5000.00 gesetzt. Wenn die INSERT INTO-Anweisung also keinen Wert für diese Spalte angibt, wird sie auf 5000.00 gesetzt.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

UNIQUE-Einschränkung

Die UNIQUE-Constraint verhindert, dass zwei Datensätze in einer bestimmten Spalte denselben Wert haben. In der Tabelle COMPANY möchten Sie beispielsweise verhindern, dass zwei oder mehr Personen dasselbe Alter haben.

Beispiel

Beispielsweise erstellt die folgende SQLite-Anweisung eine neue Tabelle COMPANY mit fünf Spalten. Hier ist die Spalte AGE auf UNIQUE gesetzt, sodass es nicht zwei Datensätze mit demselben Alter geben kann:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

PRIMARY KEY-Constraint

Die PRIMARY KEY-Constraint identifiziert jeden Datensatz in einer Datenbanktabelle eindeutig. Es kann mehrere UNIQUE-Spalten in einer Tabelle geben, aber nur einen Primärschlüssel. Primärschlüssel sind wichtig beim Entwerfen von Datenbanktabellen. Ein Primärschlüssel ist eine eindeutige ID.

Wir verwenden Primärschlüssel, um auf Zeilen in einer Tabelle zu verweisen. Beziehungen zwischen Tabellen können erstellt werden, indem der Primärschlüssel in anderen Tabellen als Fremdschlüssel festgelegt wird. Aufgrund eines "seit Langem bestehenden Programmierfehlers" können Primärschlüssel in SQLite NULL sein, was sich von anderen Datenbanken unterscheidet.

Ein Primärschlüssel ist ein Feld in einer Tabelle, das jede Zeile/jeden Datensatz in einer Datenbanktabelle eindeutig identifiziert. Primärschlüssel müssen eindeutige Werte enthalten. Eine Primärschlüsselspalte darf keine NULL-Werte enthalten.

Eine Tabelle kann nur einen Primärschlüssel haben, der aus einem oder mehreren Feldern bestehen kann. Wenn mehrere Felder als Primärschlüssel verwendet werden, bezeichnet man sie alszusammengesetzten Schlüssel.。

Wenn für eine Tabelle ein Primärschlüssel für ein oder mehrere Felder definiert ist, können zwei Datensätze nicht denselben Wert in diesen Feldern haben.

Beispiel

Wir haben bereits verschiedene Beispiele für das Erstellen der Tabelle COMAPNY mit ID als Primärschlüssel gesehen:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

CHECK-Constraint

Die CHECK-Constraint ermöglicht eine Bedingung zur Überprüfung der Werte beim Eingeben eines Datensatzes. Wenn die Bedingung als falsch ausgewertet wird, verletzt der Datensatz die Constraint und kann nicht in die Tabelle eingefügt werden.

Beispiel

Beispielsweise erstellt die folgende SQLite-Anweisung eine neue Tabelle COMPANY mit fünf Spalten. Hier fügen wir eine CHECK-Bedingung für die Spalte SALARY hinzu, sodass das Gehalt nicht null sein kann:

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);

Löschen von Constraints

In SQLite müssen Sie normalerweise dieALTER TABLEAnweisung verwenden, um Einschränkungen aus einer Tabelle zu entfernen, und die Art der zu entfernenden Einschränkung angeben.

Löschen der Primärschlüssel-Einschränkung:

ALTER TABLE table_name
DROP CONSTRAINT primary_key_name;

Dabei isttable_nameder Name der Tabelle, auf der Sie arbeiten, undprimary_key_nameist der Name der zu löschenden Primärschlüssel-Einschränkung.

Löschen der UNIQUE-Einschränkung:

ALTER TABLE table_name
DROP CONSTRAINT unique_constraint_name;

Ebenso isttable_nameder Tabellenname,unique_constraint_nameist der Name der zu löschenden UNIQUE-Einschränkung.

Löschen der Fremdschlüssel-Einschränkung:

ALTER TABLE table_name
DROP CONSTRAINT foreign_key_constraint_name;

Dabei isttable_nameder Tabellenname,foreign_key_constraint_nameist der Name der zu löschenden Fremdschlüssel-Einschränkung.

Andere Erweiterungen