💻
M105 - Datenbanken mit SQL bearbeiten
  • Intro
  • 🗓️Organisatorisches
  • 🛠️Infrastruktur und Tools
  • ❓FAQ
  • Tag 1
    • 🏁Tagesziele
    • 📖💡 Datenbanklehre
    • 📖💡 DDL – Data Definition Language
    • 📖💡 DDL - Constraints
    • 💬Northwind Sample Database
    • 📖DML - Datenmanipulation
    • ❓Hilfsmittel
      • ❓Datentypen
  • Tag 2
    • 🏁Tagesziele
    • 💡DML - Aufgaben
      • ❓Hilfsmittel
    • 📖Transaktionssteuerung
      • 💡Transaktionen - Aufgaben (optional)
    • 📖DQL - Select-Anweisungen
    • 💡DQL - Aufgaben
    • 📖DQL - Join
  • Tag 3
    • 🏁Tagesziele
    • 📖DQL - Komplexere Abfragen
    • 💡DQL - Aufgaben
    • 📖 Views
    • 💡Views - Aufgaben
  • Tag 4
    • 🏁Tagesziele
    • 📖💡 DCL - Data Control Language
    • 📖💡 Funktionen
    • 📖Datenbanksicherung
    • 💡SQL Projektarbeit
      • ❓Hilfsmittel
  • Tag 5
    • 🏁Tagesziele
    • 📖💡 Datenbank-Programmierung
      • 💡Programmierung - Aufgaben (optional)
    • 📖💡 Befehlszeilenanwendung
Powered by GitBook
On this page
  • Constraints erstellen
  • Constraints auf Spaltenebene
  • Auf Tabellenebene
  • Hinzufügen von Constraints zu einer bereits bestehenden Tabelle
  • Constraint Löschen
  • 💡 Aufgabe 5

Was this helpful?

Export as PDF
  1. Tag 1

📖💡 DDL - Constraints

Constraints sind Einschränkungen, die Regeln in der DB erzwingen. Sie sind eigene Objekte, die an eine Tabelle gebunden sind und überprüfen die DML-Anweisungen, bevor die Änderungen geschrieben werden

Constraint Typ

Beschreibung

PRIMARY KEY

Erzwingt Einmaligkeit eines Datensatzes

  • eindeutig

  • NOT NULL

  • automatische Indexerstellung

  • sollte jede Tabelle haben

  • kann aus einer oder mehreren Spalten bestehen (NOT NULL gilt für jede Spalte)

  • nur einen PK pro Tabelle möglich

UNIQUE KEY

Erzwingt Einmaligkeit eines Werts in einer Spalte

  • eindeutig

  • NULL-Werte sind erlaubt

  • automatische Indexerstellung

  • kann aus einer oder mehreren Spalten bestehen

  • mehrere pro Tabelle möglich

FOREIGN KEY

Erzwingt referentielle Integrität

  • verweist auf den PK einer anderen Tabelle

  • Spalten dürfen nur in der anderen Tabelle enthaltene Werte aufnehmen oder

    NULL sein

  • NOT NULL muss wenn benötigt extra definiert sein

CHECK

Erzwingt Zugehörigkeit eines Wertes zu Bereich

  • Einfache Gültigkeitsregeln / Geschäftsregeln

  • Verweis auf Inhalte derselben Datenzeile

  • kein Verweis auf andere Datensätze in derselben oder anderen Tabelle möglich

  • bei komplexen Geschäftsregeln werden Trigger benötigt

DEFAULT

Befüllt bei der Eingabe einen Vorgabewert

  • Standardwerte

  • werden übernommen, wenn kein Eintrag erfolgt

  • werden nur bei Neuerfassungen befüllt

  • Ausnahme: Neue NOT NULL-Spalte wird mit Default-Wert an die Tabelle angefügt

NOT NULL

Verhindert Eingabe von NULL-Marken

Constraints erstellen

Constraints werden optimalerweise direkt beim Anlegen der Tabelle definiert. Hier gibt es die Möglichkeit, die Constraints entweder auf Spaltenebene (bei der Spaltendefinition) oder auf Tabellenebene (nach den Spaltendefinitionen) zu erstellen.

Constraints auf Spaltenebene

CREATE TABLE Artikel (
	artnr int PRIMARY KEY,
	artbez varchar(100) NOT NULL,
	artkat char(1) CHECK (artkat in ('A','B','C')),
	aktiv bit DEFAULT 1,
);

-- Primärschlüssel mit Auto-Increment (automatischem Hochzählen)
CREATE TABLE Artikel (
	artnr int PRIMARY KEY IDENTITY(1,1),
	artbez varchar(100) NOT NULL,
);

-- mehrere Constraints in einer Spalte
CREATE TABLE Kategorie (
	artkat char(1) PRIMARY KEY CHECK (artkat between 'A' and 'K'),
	katbez varchar(100) NOT NULL
);

-- Syntaxvariante: Angabe eines Namens für den Constraint 
CREATE TABLE Persons (
    PersID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int CONSTRAINT CHK_PersAge CHECK (Age >= 18)
); 

DEFAULT-Constraints können nur auf Spaltenebene definiert werden.

Auf Tabellenebene

CREATE TABLE Article (
	artnr int NOT NULL,
	artbez varchar(100) NOT NULL,
	artkat char(1) CHECK (artkat between 'A' and 'K'),
	aktiv bit DEFAULT 1,
	PRIMARY KEY (artnr, artbez)
);

CREATE TABLE Event (
    eventID int NOT NULL,
    Titel varchar(255) NOT NULL,
    StartDate DATETIME NOT NULL,
    EndDate DATETIME NOT NULL,
    CONSTRAINT CHK_StartEnd CHECK (StartDate < EndDate)
);

CHECK-Constraints, die sich auf mehr als eine Spalte beziehen, müssen auf Tabellenebene definiert werden.

Hinzufügen von Constraints zu einer bereits bestehenden Tabelle

Falls die Tabelle bereits existiert, können die Constraints über ALTER auch nachträglich definiert werden.

Foreign Key

-- Fremdschlüssel definieren
ALTER TABLE Artikel
	ADD FOREIGN KEY (artkat) REFERENCES kategorie(artkat);
	
-- Defaultwert nachträglich festlegen oder ändern
ALTER TABLE Artikel ADD DEFAULT 'Neuer Artikel' FOR artbez;

Primary Key

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

Primary Key (mit Namen)

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

Check

ALTER TABLE Persons
ADD CHECK (Age>=18);

Check (mit Namen)

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

Constraint Löschen

ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

💡 Aufgabe 5

Öffne die Datei in Azure Data Studio und löse die Aufgaben.

Previous📖💡 DDL – Data Definition LanguageNextNorthwind Sample Database

Last updated 3 years ago

Was this helpful?

3KB
M105_Aufgabe5_Constraints_erstellen.ipynb
Aufgabe 5 - Constraints erstellen