Datenbanksysteme: Unterschied zwischen den Versionen
(Initial revision) |
K (Heading levels corrected.) |
||
Zeile 4: | Zeile 4: | ||
Die Structured Query Language (SQL) ist eine standardisierte Sprache zum Bedienen von DBMS. Sie ist heute sehr weit verbreitet und wird von den meisten DBMS unterstützt. Die zahlreichen SQL-Befehle kann man grob wie folgt einteilen: | Die Structured Query Language (SQL) ist eine standardisierte Sprache zum Bedienen von DBMS. Sie ist heute sehr weit verbreitet und wird von den meisten DBMS unterstützt. Die zahlreichen SQL-Befehle kann man grob wie folgt einteilen: | ||
− | * Data Definition Language (DDL) -- | + | * Data Definition Language (DDL) -- Festlegen des Datenbankschemas |
* Data Manipulation Language (DML) -- Arbeiten mit dem Datenbestand | * Data Manipulation Language (DML) -- Arbeiten mit dem Datenbestand | ||
** Data Query Language (DQL) -- Abfragen (SELECT) | ** Data Query Language (DQL) -- Abfragen (SELECT) | ||
Zeile 12: | Zeile 12: | ||
− | == | + | == Festlegen des Datenbankschemas == |
=== Definieren von Spalten === | === Definieren von Spalten === | ||
Zeile 48: | Zeile 48: | ||
− | == Pflichtfelder == | + | === Pflichtfelder === |
CREATE TABLE Categories | CREATE TABLE Categories | ||
Zeile 80: | Zeile 80: | ||
− | == Primärschlüssel == | + | === Primärschlüssel === |
CREATE TABLE Categories | CREATE TABLE Categories | ||
Zeile 118: | Zeile 118: | ||
− | == Eindeutige Werte == | + | === Eindeutige Werte === |
CREATE TABLE Categories | CREATE TABLE Categories | ||
Zeile 148: | Zeile 148: | ||
− | == Fremdschlüssel == | + | === Fremdschlüssel === |
CREATE TABLE Posts | CREATE TABLE Posts | ||
Zeile 174: | Zeile 174: | ||
− | == Weitere Bedingungen == | + | === Weitere Bedingungen === |
CREATE TABLE Posts | CREATE TABLE Posts | ||
Zeile 200: | Zeile 200: | ||
CHECK (CreatedOn < EditedOn) | CHECK (CreatedOn < EditedOn) | ||
); | ); | ||
+ | |||
+ | |||
+ | == Abfragen == | ||
+ | |||
+ | == Pflege des Datenbestandes == | ||
+ | |||
+ | === Einfügen von Datensätzen === | ||
+ | |||
+ | === Ändern von Datensätzen === | ||
+ | |||
+ | === Löschen von Datensätzen === |
Version vom 25. September 2019, 20:40 Uhr
Große Datenmengen, wie sie beispielsweise in einem Social Network oder Online-Shop anfallen, werden üblicherweise als Datenbanksystem (database system, DBS) verwaltet. Dazu benötigt man ein Programm, das man als Datenbankmanagementsystem (database management system, DBMS) bezeichnet. Ein DBMS kann eine oder mehrere Datenbanken betreiben. Eine Datenbank (database, DB) wiederum besteht aus dem Schema (schema), das die Struktur der zu speichernden Daten beschreibt, und den eigentlichen Daten (data).
Es gibt viele verschiedene Arten von Datenbanksysteme. Wir werden hier zunächst nur relationale Datenbanksysteme thematisieren.
Die Structured Query Language (SQL) ist eine standardisierte Sprache zum Bedienen von DBMS. Sie ist heute sehr weit verbreitet und wird von den meisten DBMS unterstützt. Die zahlreichen SQL-Befehle kann man grob wie folgt einteilen:
- Data Definition Language (DDL) -- Festlegen des Datenbankschemas
- Data Manipulation Language (DML) -- Arbeiten mit dem Datenbestand
- Data Query Language (DQL) -- Abfragen (SELECT)
- Befehle zur Pflege des Datenbestandes (INSERT, UPDATE, DELETE)
- Transaction Control Language (TCL) -- Arbeiten mit Transaktionen
- Data Control Language (DCL) -- Festlegen von Zugriffsrechten
Inhaltsverzeichnis
Festlegen des Datenbankschemas
Definieren von Spalten
Beispiel: Web-Forum
CREATE TABLE Categories ( CategoryID INTEGER, Title CHAR(255), Description VARCHAR(4096) );
CREATE TABLE Users ( UserID INTEGER, LoginName CHAR(64), PasswdHash CHAR(255), EMailAddr CHAR(255), LastName CHAR(255), FirstName CHAR(255), BirthDate DATE );
CREATE TABLE Posts ( PostID INTEGER, Author INTEGER, Category INTEGER, Title VARCHAR(512), Content TEXT, CreatedOn TIMESTAMP, EditedOn TIMESTAMP );
Pflichtfelder
CREATE TABLE Categories ( CategoryID INTEGER NOT NULL, Title CHAR(255) NOT NULL, Description VARCHAR(4096) NULL );
CREATE TABLE Users ( UserID INTEGER NOT NULL, LoginName CHAR(64) NOT NULL, PasswdHash CHAR(255) NOT NULL, EMailAddr CHAR(255) NOT NULL, LastName CHAR(255) NULL, FirstName CHAR(255) NULL, BirthDate DATE NULL );
CREATE TABLE Posts ( PostID INTEGER NOT NULL, Author INTEGER NULL, Category INTEGER NOT NULL, Title VARCHAR(512) NOT NULL, Content TEXT NOT NULL, CreatedOn TIMESTAMP NOT NULL, EditedOn TIMESTAMP NULL );
Primärschlüssel
CREATE TABLE Categories ( CategoryID INTEGER NOT NULL, Title CHAR(255) NOT NULL, Description VARCHAR(4096) NULL, PRIMARY KEY (CategoryID) );
CREATE TABLE Users ( UserID INTEGER NOT NULL, LoginName CHAR(64) NOT NULL, PasswdHash CHAR(255) NOT NULL, EMailAddr CHAR(255) NOT NULL, LastName CHAR(255) NULL, FirstName CHAR(255) NULL, BirthDate DATE NULL, PRIMARY KEY (UserID) );
CREATE TABLE Posts ( PostID INTEGER NOT NULL, Author INTEGER NULL, Category INTEGER NOT NULL, Title VARCHAR(512) NOT NULL, Content TEXT NOT NULL, CreatedOn TIMESTAMP NOT NULL, EditedOn TIMESTAMP NULL, PRIMARY KEY (PostID) );
Eindeutige Werte
CREATE TABLE Categories ( CategoryID INTEGER NOT NULL, Title CHAR(255) NOT NULL, Description VARCHAR(4096) NULL, PRIMARY KEY (CategoryID), UNIQUE (Title) );
CREATE TABLE Users ( UserID INTEGER NOT NULL, LoginName CHAR(64) NOT NULL, PasswdHash CHAR(255) NOT NULL, EMailAddr CHAR(255) NOT NULL, LastName CHAR(255) NULL, FirstName CHAR(255) NULL, BirthDate DATE NULL, PRIMARY KEY (UserID), UNIQUE (LoginName), UNIQUE (EMailAddr) );
Fremdschlüssel
CREATE TABLE Posts ( PostID INTEGER NOT NULL, Author INTEGER NULL, Category INTEGER NOT NULL, Title VARCHAR(512) NOT NULL, Content TEXT NOT NULL, CreatedOn TIMESTAMP NOT NULL, EditedOn TIMESTAMP NULL, PRIMARY KEY (PostID), FOREIGN KEY (Author) REFERENCES Users (UserID) ON UPDATE RESTRICT ON DELETE SET NULL, FOREIGN KEY (Category) REFERENCES Categories (CategoryID) ON UPDATE RESTRICT ON DELETE CASCADE );
Weitere Bedingungen
CREATE TABLE Posts ( PostID INTEGER NOT NULL, Author INTEGER NULL, Category INTEGER NOT NULL, Title VARCHAR(512) NOT NULL, Content TEXT NOT NULL, CreatedOn TIMESTAMP NOT NULL, EditedOn TIMESTAMP NULL, PRIMARY KEY (PostID), FOREIGN KEY (Author) REFERENCES Users (UserID) ON UPDATE RESTRICT ON DELETE SET NULL, FOREIGN KEY (Category) REFERENCES Categories (CategoryID) ON UPDATE RESTRICT ON DELETE CASCADE, CHECK (CreatedOn < EditedOn) );