SQL. Datendefinition

Ähnliche Dokumente
SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

Die Anweisung create table

1. Tabellen-Beziehungen

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

4. Datenbanksprache SQL

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen

DB1-Datenbanksysteme. DB SQL-DDL 1 Mario Neugebauer

Microsoft Access Relationen. Anja Aue

Kapitel 7: Referentielle Integrität

Datenbank und Tabelle mit SQL erstellen

Eine neue Datenbank erstellen

Create-Table-Befehl. CREATE TABLE Tabellenname ( { Spalte { Datentyp Gebietsname } [ Spaltenbedingung [ ] ] Tabellenbedingung }

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)

Integritätsbedingungen Eindeutige Identifikation (1)

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Datenbanksysteme Kapitel 2: SQL Data Definition Language

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Indizes. Index. Datenfeld Normale Tabelle. Gesucht wird: Zugriff. 3. Zugriff 1. Zugriff.

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken im WI-Unterricht mit

Erstellen und Verwalten von Tabellen

Einführung SQL Data Definition Language (DDL)

Erzeugen von Constraints

Kapitel 8: Datenintegrität

7. Datenbankdefinitionssprachen

SQL. Komplexe Abfragen. SQL-Komplexe Abfragen. SQL-Komplexe Abfragen. Komplexe Abfragen verknüpfen mehrere Tabellen miteinander.

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Datenintegrität. Kapitel 5 1

Übung 01 Tabellen erstellen

Übersicht der wichtigsten MySQL-Befehle

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Das relationale Datenmodell

Inhaltsverzeichnis. Einleitung

1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Hafen(HNR, Ort, Grundsteinlegung)

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

Es geht also im die SQL Data Manipulation Language.

SQL structured query language

Datenintegrität. Kapitel 5 1

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints

3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien

Datenbanken. Zusammenfassung. Datenbanksysteme

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Konstante Relationen

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

3 Arbeiten mit geographischen Daten

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Datenbanken. 5 Tabellen. Karl Meier karl.meier@kasec.ch Inhalt. Domänen verwenden Tabellen anzeigen, ändern, löschen Übung

Relationale Datenbanken

Kapitel 2: Das Relationale Modell

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Relationales Datenbanksystem Oracle

Kapitel 3: Datenbanksysteme

Inhaltsverzeichnis. jetzt lerne ich

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

SQL. erfolgreich Madrid Amsterdam An imprint of Pearson

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Datenbanksysteme 2013

Kapitel 2: Das Relationale Modell

Testklausur 1 Übungsaufgaben aus alten Datenbanken 1 Klausuren zum Data Science-Synchronisationsmodul Datenbanken WS 2016/17

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Grundlagen von Datenbanken. Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking

Labor 3 - Datenbank mit MySQL

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Dieter Staas Das Einsteigerseminar SQL

Datenmodelle und Datenbanken 2

Kapitel 3: Datenbanksysteme

MNR NAME VORNAME STRASSE PLZ ORT TELEFON

DB I S. 1 Referentielle Aktionen [10 P.] Gegeben sei folgende Datendefinition:

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Grundlagen von Datenbanken

3 Indizes. 3.1 Indexarchitektur von SQL Server. SQL Server 2008: Datenbankentwicklung

SQL: statische Integrität

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Foreign Keys. MySQL 4, 5. Kapitel 16: Fremdschlüssel. Marcel Noe

Datenbanksysteme I Integrität und Trigger Felix Naumann

SQL-Vertiefung. VL Datenbanksysteme. Ingo Feinerer

Indexe. Ein Index = eine Struktur auf Platte, die einer Tabelle oder Sicht zugeordent ist, um die Tupeln in der Tabelle oder Sicht schneller abzurufen

Erzeugung und Veränderung von Tabellen

Datenintegrität. Referentielle Integrität. Referentielle Integrität in SQL. Bisherige Integritätsbedingungen

Transkript:

SQL Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer oder logischer Natur sein. Das folgende Kapitel beschäftigt sich mit der Erstellung und Bearbeitung solcher Objekte.

Lutz Kleinostendarp ALTER Die grundlegende Anweisung zum Erstellen von Datenbankobjekten ist. Datenbankobjekte können sein: Datenbanken Tabellen Informationen über Datenbankobjekte werden in der jeweils übergeordneten Datenbank gespeichert, also Datenbanken in der Masterdatenbank Tabellen in der zugehörigen Datenbank ACCESS kennt keine Masterdatenbank 2

ALTER Das erste Objekt, dass erzeugt werden muss, ist die Datenbank selbst. Der Befehl dazu lautet: db_name Weitere Optionen des Befehls sollen hier nicht behandelt werden. Beispiel: testdb; Besondere Berechtigung zur Erstellung einer Datenbank erforderlich siehe hierzu das Kapitel Sicherheitskonzepte 3

ALTER Da ACCESS keine Masterdatenbank kennt, kann der Befehl dort nicht ausgeführt werden. Die DB kann nur auf der Benutzeroberfläche erstellt werden. Im Folgenden wird in diesem Kapitel davon ausgegangen, dass der Benutzer die betroffene Datenbank als aktuelle ausgewählt hat und über entsprechende Berechtigungen verfügt 4

Innerhalb der Datenbank werden Informationen in Tabellen gespeichert. Der Befehl zur Erstellung dieser Tabellen lautet: tab_name; ALTER Es können sofort Attribute angelegt werden. Die vollständige Syntax lautet dann: tab_name (sp_name1 datentyp1 [{NOT NULL NULL}], sp_name2 datentyp2 [{NOT NULL NULL}]...) 5

ALTER Beispiel: Erstellung der Tabellen der Beispieldatenbank (Seite 1) abteilung (abt_nr varchar(4) NOT NULL, abt_name varchar(20) NOT NULL, stadt varchar(15) NULL); mitarbeiter (m_nr int NOT NULL, m_name varchar(20) NOT NULL, m_vorname varchar(20) NOT NULL, abt_nr varchar(4) NULL); 6

ALTER Beispiel: Erstellung der Tabellen der Beispieldatenbank (Seite 2) projekt (pr_nr varchar(4) NOT NULL, pr_name varchar(25) NOT NULL, mittel float NULL); arbeiten (m_nr int NOT NULL, pr_nr varchar(4) NOT NULL, aufgabe varchar(15) NULL, einst_dat date NULL); 7

ALTER Seit SQL Server 6.0 (auch SQL95 genannt) lassen sich weitere Parameter übergeben. In den folgenden Übungen werden diese hier nicht mehr berücksichtigt. Die erweiterte Syntax lautet: tab_name (sp_name1 datentyp1 [DEFAULT wert] DEFAULT Voreinstellung der Spalte wert - ein konstanter Ausdruck - eine (parameterlose) Systemfunktion z.b. CURRENT_USER, CURRENT_TIMESTAMP - NULL 8

ALTER Seit SQL Server 6.0 (auch SQL95 genannt) lassen sich weitere Parameter übergeben. In den folgenden Übungen werden diese hier nicht mehr berücksichtigt. Die erweiterte Syntax lautet: tab_name (sp_name1 datentyp1 [DEFAULT wert] [{IDENTITY NULL NOT NULL}] [Spaltenregeln] [, {weitere Spalten}] [Tabellenregeln]; IDENTITY - entspricht autowert Regeln - 9

ALTER (integrity constraints) dienen dazu, unsinnige oder widersprüch-liche Datenwerte zu erkennen und abzuweisen. In der -Anweisung hinterlegte Regeln werden zentral vom Server überprüft. Eine lokale Prüfung (dieser Regel) im Anwenderprogramm ist somit nicht mehr notwendig. Spaltenregeln beziehen sich immer auf ein Attribut. Tabellenregeln können sich auf mehrere Attribute (Attributgruppen) beziehen. Jede Regel erhält einen Namen. 10

ALTER Die UNIQUE-Klausel definiert Schlüsselkandidaten. Schlüsselkandidaten sind alle Attribute (Attributgruppen), die in der Tabelle eindeutig einen Datensatz kennzeichnen. UNIQUE stellt also die Einmaligkeit jedes Wertes in dem betroffenen Attribut (der Attributgruppe) sicher. 11

Die Syntax der UNIQUE-Klausel: ALTER [CONSTRAINT regel_name] UNIQUE [CLUSTERED NONCLUSTERED] (sp_name1 [{,sp_name}]) CONSTRAINT - definiert den expliziten Namen der Regel CLUSTERED - erstellt den Index sortiert NONCLUSTERED bzw. unsortiert sp_name - max. 6 Spaltennamen sind erlaubt 12

ALTER Beispiel für die UNIQUE-Klausel (Spaltenregel): verkauf (bestell_nr integer null, name char(20) null); Jede Bestellnummer darf nur einmal vorkommen, dies gilt auch für den NULL-Wert! Die zweite Eingabe des selben Wertes wird vom System abgewiesen. Die Regel erhält vom Server automatisch einen impliziten Namen. 13

ALTER Die PRIMARY KEY-Klausel definiert den Primärschlüssel einer Tabelle. Die Syntax lautet: [CONSTRAINT regel_name] PRIMARY KEY [CLUSTERED NONCLUSTERED] (sp_name1 [{,sp_name}]) 14

ALTER Beispiel für die PRIMARY KEY-Klausel (Tabellenregel): mitarbeiter (m_nr int NOT NULL, m_name char(20) NOT NULL, m_vorname char(20) NOT NULL, abt_nr char(4) NULL, CONSTRAINT prim_s_mit PRIMARY KEY (m_nr)); 15

ALTER Beispiel für die PRIMARY KEY-Klausel (Spaltenregel weniger gebräuchlich): mitarbeiter (m_nr int NOT NULL CONSTRAINT prim_s_mit PRIMARY KEY, m_name char(20) NOT NULL, m_vorname char(20) NOT NULL abt_nr char(4) NULL); 16

ALTER Die FOREIGN KEY-Klausel definiert einen Fremdschlüsselbezug. Die Syntax lautet: [CONSTRAINT regel_name] [FOREIGN KEY (sp_name1 [{,sp_name}])] REFERENCES tab_name (sp_1 [{,sp_x}]) REFERENCES - benennt die Bezugstabelle Die angegebenen Spalten müssen in Anzahl und Datentyp in der vorliegenden Reihenfolge übereinstimmen. 17

ALTER Beispiel für die FOREIGN KEY-Klausel (Tabellenregel): arbeiten (m_nr int NOT NULL, pr_nr char(4) NOT NULL, aufgabe char(15) NULL, einst_dat datetime NULL, CONSTRAINT prim_s_arb PRIMARY KEY (m_nr, pr_nr), CONSTRAINT fremd_s_arb FOREIGN KEY (m_nr) REFERENCES mitarbeiter (m_nr)); 18

ALTER Beispiel für die FOREIGN KEY-Klausel (Spaltenregel weniger gebräuchlich): arbeiten (m_nr int NOT NULL CONSTRAINT fremd_s_arb REFERENCES mitarbeiter (m_nr), pr_nr char(4) NOT NULL, aufgabe char(15) NULL, einst_dat datetime NULL, CONSTRAINT prim_s_arb PRIMARY KEY (m_nr, pr_nr)); 19

Lutz Kleinostendarp ALTER Referentielle Integrität wird durch die PRIMARY KEY- und FOREIGN KEY-Klauseln erzeugt. Die Tabelle mit dem Primärschlüssel ist die Master- oder Zieltabelle. Die Tabelle mit dem Fremdschlüssel ist die Detail- oder Referenztabelle. sorgt dafür, dass in die Detailtabelle nur Werte eingetragen werden können, die auch in der Mastertabelle existieren. Somit wird sichergestellt, dass ein Tabellenbezug nicht ins Leere läuft. verhindert das Löschen eines Wertes in der Mastertabelle, solange noch referierte Datensätze in der Detailtabelle existieren. 20

Lutz Kleinostendarp ALTER Es gibt weitere Anweisungen zur Erstellung von Datenbankobjekten, von denen hier aber nur eine Auswahl kurz erwähnt werden soll: CHECK erlaubt die Einschränkung des Wertebereiches INDEX kann die Antwortzeit bei Abfragen beschleunigen 21

Übungsphase 1: ALTER Gehen Sie mit Hilfe des Skriptes die Möglichkeiten der -Anweisung (Kapitel 3.1.2 3.2.4) durch und erstellen Sie dabei die Übungsdatenbank. 22

Lutz Kleinostendarp ALTER Ändern von Objekten Strukturell änderbare Objekte sind: Die Datenbank (ALTER ) Die Tabellenstruktur (ALTER ) Die Änderungen der Datenbank beziehen sich nur auf die Größe des Speicherplatzes, weshalb hier im Folgenden nur auf die Strukturänderungen von Tabellen eingegangen wird. 23

Grundform: ALTER ALTER tab_name ADD spalten_name datentyp [{,spalten_name2 datentyp2} ]; Diese Anweisung fügt der Tabelle eine neue Spalte hinzu. Die optionale Angabe NULL kann entfallen, da NOT NULL nicht erlaubt ist (schon existierende Spalten können nur NULL enthalten). ALTER tab_name spalten_name [{,spalten_name2} ]; Diese SQL92-Standarderweiterung wird nicht allgemein unterstützt. 24

Erweiterte Form: ALTER Auch lassen sich nachträglich einfügen (und löschen): ALTER tab_name [WITH {CHECK NOCHECK} ADD spalten_name datentyp [{,spalten_name2 datentyp2} ]; ADD tabellenbezogene_regel tabellenbezogene_regel Mit der Angabe CHECK wird dabei geprüft, ob die Integrität gewährleistet ist. 25

Erweiterte Form (Beispiele): ALTER abteilung ADD constraint prim_s_abt (abt_nr); ALTER ALTER mitarbeiter ADD constraint fremd_s_mita (abt_nr) references abteilung (abt_nr); ALTER abteilung constraint prim_s_abt; 26

Lutz Kleinostendarp ALTER Löschen von Objekten: objekt obj_name [{,.}] Beispiele: db_name [{, db_name2} ] Die Datenbank(en) wird/werden mit allen Objekten gelöscht. Hierzu muss die aktuelle Datenbank die Master-Datenbank sein!!! tab_name [{, tab_name2} ] Die Tabelle(n) wird/werden mit allen Elementen und Regeln gelöscht. arbeiten; 27

Übungsphase 2: ALTER Gehen Sie mit Hilfe des Skriptes die Anweisungen ALTER und (Kapitel 3.3 und 3.4) durch. 28