English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL-Bedingungen (Constraints)

In diesem Tutorial lernen Sie, wie Sie SQL-Einschränkungen verwenden.

Was ist eine Einschränkung?

Einschränkungen sind Beschränkungen für eine oder mehrere Spalten in einer Tabelle, um den Typ der in der Spalte gespeicherten Werte zu beschränken. Einschränkungen bieten ein Standardmechanismus, um die Genauigkeit und Integrität der Daten in der Datenbanktabelle zu erhalten.

Es gibt mehrere Arten von Einschränkungen in SQL, einschließlich:

Lassen Sie uns nun detailliert jede Bedingung diskutieren.

NOT NULL-Bedingung

Diese NOT NULL-Bedingung bestimmt, dass die angegebene Spalte keine NULL-Werte akzeptiert.

Dies bedeutet, dass Sie, wenn Sie eine NOT NULL-Bedingung auf die Spalte anwenden, eine neue Zeile in der Tabelle einfügen müssen, ohne dem Feld einen nicht NULL-Wert hinzuzufügen.

Die folgenden SQL-Anweisungen erstellen eine Tabelle namensperson'sTabelle, die vier Spalten hat, davon dreiid,nameundphoneAkzeptiert keine NULL-Werte.

CREATE TABLE persons (
    id INT NOT NULL,
    name VARCHAR(30) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL
);

Hinweis:Leere Werte oder NULL sind unterschiedlich von Null, leerem oder leeren Zeichenfolgen, z.B. ''. NULL bedeutet, dass noch nichts eingegeben wurde.

Primärschlüsselbedingung (PRIMARY KEY)

Die PRIMARY KEY-Bedingung kennzeichnet eine Spalte oder eine Sammlung von Spalten, die eine eindeutige Identifikationsnummer für die Zeilen in der Tabelle haben. Keine zwei Zeilen in der Tabelle können denselben Primärschlüsselwert haben. Ebenso können Sie keine NULL-Werte in die Primärschlüsselspalten eingeben.

Die folgenden SQL-Anweisungen erstellen eine Tabelle namenspersonsTabelle undidDie Spalte wird als Primärschlüssel angegeben. Dies bedeutet, dass dieses Feld NULL oder doppelte Werte nicht zulassen kann.

CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL
);

Tipp:Der Primärschlüssel besteht in der Regel aus einer Spalte in einer Tabelle, kann aber auch aus mehreren Spalten bestehen, z.B. die E-Mail-Adresse des Mitarbeiters oder die zugewiesene Identifikationsnummer ist der logische Primärschlüssel der Mitarbeitertabelle.

Einzigartigkeitsbedingung (UNIQUE)

Die UNIQUE-Bedingung beschränkt einen oder mehrere Spalten, dass in der Tabelle nur einzigartige Werte enthalten.

Obwohl die UNIQUE-Bedingung und die PRIMARY KEY-Bedingung beide die Einzigartigkeit erzwingen, verwenden Sie bitte die Bedingung anstelle der Bedingung, wenn Sie die Einzigartigkeit einer Spalte oder einer Spaltenkombination (statt der Primärschlüssel) erzwingen möchten.

Die folgenden SQL-Anweisungen erstellen eine Tabelle namenspersonsTabelle undphoneSpalte als unique angegeben. Dies bedeutet, dass der Feldwert keine duplizierten Werte zulässt.

CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

Hinweis:Es können mehrere UNIQUE-Bedingungen in einer Tabelle definiert werden, aber nur eine PRIMARY KEY-Bedingung in einer Tabelle. Und im Gegensatz zur PRIMARY KEY-Bedingung erlaubt die UNIQUE-Bedingung NULL-Werte.

Standardbedingung (DEFAULT)

DEFAULT-Bedingung den Standardwert der Spalte spezifiziert.

Der Standardwert der Spalte ist, wennINSERTWenn der Datenbankmotor einen Wert in die Spalte einfügt, der nicht explizit zugewiesen wurde.

Die folgenden SQL-Anweisungen für Land/RegionSpalte eine Standardwert.

CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE,
    country VARCHAR(30) NOT NULL DEFAULT 'Australia'
);

Hinweis:Wenn eine Tabellenspalte als NOT NULL definiert wird, aber eine Standardwerte zugewiesen wird, muss der Wert in der INSERT-Anweisung nicht explizit zugewiesen werden, um eine neue Zeile in die Tabelle einzufügen.

Fremdschlüsselbeschränkung (FOREIGN KEY)

Ein Fremdschlüssel (FK) ist eine Spalte oder eine Kombination von Spalten, die zur Erstellung und zum Stärken von Beziehungen zwischen Daten in zwei Tabellen verwendet wird.

zeigtMitarbeiter (employees)undAbteilung(departmentsBeispielbild der Beziehung zwischen den Tabellen. Wenn man genau hinschaut, merkt manemployeesTabelledept_idSpalte unddepartmentsder Tabelle übereinstimmt. Dahermit der Primärschlüsselspalteder Spaltevon Mitarbeiternder Fremdschlüssel der TabelleAbteilungTabelle.

In MySQL können Sie durch Definieren von Bedingungen Fremdschlüssel beim Erstellen der Tabelle erstellen. Die folgenden Anweisungen inemployeesTabelledept_ideine Fremdschlüsselverknüpfung auf der Spalte erstellen, die aufdepartmentsTabelledept_idSpalte.

CREATE TABLE employees (
    emp_id INT NOT NULL PRIMARY KEY,
    emp_name VARCHAR(55) NOT NULL,
    hire_date DATE NOT NULL,
    salary INT,
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

Überprüfungsbedingung (CHECK)

CHECK-Bedingungen werden verwendet, um den Wertebereich der in eine Spalte eingefügten Werte zu begrenzen.

Zum Beispiel kann eine CHECK-Bedingung erstellt werden, um den Wertebereich der Gehaltszeile zu begrenzen, die nur Werte in30,000 und10Zwischen 0,000 und 0,000. Dies verhindert, dass Gehälter außerhalb des normalen Gehaltsrahmens eingegeben werden. Ein Beispiel ist:

CREATE TABLE employees (
    emp_id INT NOT NULL PRIMARY KEY,
    emp_name VARCHAR(55) NOT NULL,
    hire_date DATE NOT NULL,
    salary INT NOT NULL CHECK (salary >= 3000 AND salary <= 10000),
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

Hinweis: MySQL unterstützt keine SQL-Prüfbedingungen. Obwohl, alle MySQL-Storage-Engines die CHECK-Klausel analysieren, werden sie jedoch ignoriert.