DB1-Datenbanksysteme. DB SQL-DDL 1 Mario Neugebauer

Ähnliche Dokumente
Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

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

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

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

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

4. Datenbanksprache SQL

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

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

SQL structured query language

Referenzielle Integrität SQL

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Datenbanken: Datenintegrität.

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Datumsangaben, enthält mindestens Jahr, Monat, Tag

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

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme

Marcus Throll, Oliver Bartosch. Einstieg in SQL. Verstehen, einsetzen, nachschlagen. Galileo Press

Datenbanksysteme Kapitel: SQL Data Definition Language

SQL: statische Integrität

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Datenbanksysteme I Integrität und Trigger Felix Naumann

Labor 3 - Datenbank mit MySQL

SQL-Anweisungen. SELECT (SQL Data Query Language)

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

Konstante Relationen

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

7. Datenbankdefinitionssprachen

Microsoft Access 2010 SQL nutzen

Kapitel 7: Referentielle Integrität

SQL. Fortgeschrittene Konzepte Auszug

Kapitel DB:VI (Fortsetzung)

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

SQL-Vertiefung. VU Datenbanksysteme. Reinhard Pichler

Views in SQL. 2 Anlegen und Verwenden von Views 2

6. Datenintegrität. Integritätsbedingungen

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

SQL,Teil 1: CREATE, INSERT, UPDATE, DELETE, DROP

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #5. SQL (Teil 3)

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

DB2 SQL, der Systemkatalog & Aktive Datenbanken

5. SQL: Erstellen von Tabellen. Erzeugen und Löschen von Tabellen. Umgang mit Bedingungen (Constraints) Einfügen und Löschen von Daten

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

VO Datenmodellierung. Katrin Seyr

Grober Überblick zu Datendefinitionsanweisungen in SQL

Bedingungen über Werte Statische Integrität. CHECK-Klausel

5.6 Praktischer Teil. Modellierung einer Schulen-Lehrer-Verwaltung, kurz SLV (was sonst )

PostgreSQL unter Debian Linux

Dipl.-Hdl., Dipl.-Kfm. ACCESS 2007

Bibliografische Informationen digitalisiert durch

Referentielle Integrität

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN:

Datendefinition und Datenmanipulation in SQL

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

Objektrelationale, erweiterbare Datenbanken WS 04/05

Von der passiven zur aktiven Datenbank. Checks und Assertions Referentielle Aktionen Trigger

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

4. Structured Query Language (SQL)

Relationale Datenbanken in der Praxis

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

Web Technologien Klassische Datenbanken am Beispiel von MySQL

SQL (Structured Query Language) Schemata Datentypen

Referentielle Integrität

Sructred Query Language

Arbeiten mit einem lokalen PostgreSQL-Server

[1] DBS-exercice

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

Multimedia im Netz Wintersemester 2013/14. Übung 03 (Nebenfach)

Tag 2 Inhaltsverzeichnis

Datenbanken für Online Untersuchungen

Xampp Administration und Grundlagen. Stefan Maihack Dipl. Ing. (FH) Datum:

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

3 Arbeiten mit geographischen Daten

MNR NAME VORNAME STRASSE PLZ ORT TELEFON

Einführung in SQL mit Oracle

Informatik Datenbanken SQL-Einführung

Advanced SQL verstehen und einsetzen SQL-Implementierungen kennen und bewerten

Datenmodellierung und Datenbanksysteme. Vorlesung. Informationswissenschaft und Informationssysteme. Hans Uszkoreit & Brigi1e Jörg

Datenbank- und Informationssysteme - Übungsblatt 6 -

IBM Informix SQL. Seminarunterlage. Version vom

SQL und MySQL. Kristian Köhntopp

Software-Engineering und Datenbanken

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Arbeiten mit ACCESS 2013

Inhaltsverzeichnis. jetzt lerne ich

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

6. Datendefinition in SQL

Informations- und Wissensmanagement

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen

5. SQL. Einleitung / Historie / Normierung. Datendefinition mit SQL (DDL) Datenänderung/-zugriff mit SQL (DML) Datenkontrolle mit SQL (DCL)

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

5.3 Datenänderung/-zugriff mit SQL (DML)

Benutzerverwaltung, Sichten und Datenintegrität

DBSP. Vorlesung. Prof. Dr. rer. nat. Nane Kratzke. Unit. Praktische Informatik und betriebliche Informationssysteme

Kapitel 3 Datenintegrität

Transkript:

DB1-Datenbanksysteme DB-13 042-SQL-DDL 1 Mario Neugebauer Einführung Informationsmodellierung Relationales Datenbankmodell Datenbanksprache SQL Einführung Daten-Abfrage-Sprache Daten-Definitions-Sprache Tabellen Daten-Manipulations-Sprache - DQL - DDL - DML

DDL - Daten-Definitions-Sprache DB-13 042-SQL-DDL 2 Mario Neugebauer Data Definition Language Anweisungen zum Anlegen, Ändern und Löschen von Datenbankobjekte SCHEMA DATABASE TABLE VIEW INDEX SYNONYM CREATE X X X X X X ALTER X X DROP X X X X X

DDL-TABLE: Create DB-13 042-SQL-DDL 3 Mario Neugebauer Anlegen einer Tabellen mit: einer definierten Spaltenliste definierten Integritätsbedingungen einem eindeutigen Tabellen-Namen CREATE TABLE tabname ( spaname datentyp [feldeinschränkung] [... ] ) ; CREATE TABLE Abteilung ( AbtNr INTEGER NOT NULL, Bezeichnung VARCHAR(50), PRIMARY KEY (AbtNr) ) ; Abteilung AbtNr Bezeichnung

DDL-TABLE: Integritätsregeln / Constraints integrity constraints / Beschränkung werden verwendet, um: die Verwaltung von Tabellen zu erleichtern die Integrität einer Datenbank zu sichern mögliche Constraints: Primärschlüssel ein Datensatz kann eindeutig angesprochen werden Fremdschlüssel eindeutige Verknüpfung von Tabellen im relationalen DB-Modell UNIQUE verhindert, dass doppelte Werte gespeichert werden CHECK Prüfungsregeln bei Dateneingabe Vermeidung von Fehleingaben DEFAULT Standardwerte die gesetzt werden, wenn nichts angegeben wird NOT NULL legt fest, dass eine Spalte nicht NULL sein kann DB-13 042-SQL-DDL 4 Mario Neugebauer

DDL-TABLE: Integritätsregeln / Constraints DB-13 042-SQL-DDL 5 Mario Neugebauer Syntax für die DBMS: Firebird/Interbase, OpenOffice, SQL-Server CREATE TABLE tabname ( spadefinition [... ] [CONSTRAINT conname] PRIMARY KEY(spaListe), UNIQUE (spaliste), [CONSTRAINT conname] FOREIGN KEY(spaName) REFERENCES tabname(spaname) [ON DELETE aktion] [ON UPDATE aktion] CHECK (bedingung) ) ;

DDL-TABLE: Integritätsregeln - Primärschlüssel DB-13 042-SQL-DDL 6 Mario Neugebauer PRIMARY KEY (spaliste) Bestimmung der als Primärschlüssel (PS) dienenden Spalte/n CONSTRAINT gibt dem PS einen Namen, über den er angesprochen werden kann (z.b. zum Ändern oder Löschen der PS-Eigenschaft) Varianten: am Ende des CREATE-Befehls Tabellenbedingung CREATE TABLE tabname ( spaname1 datentyp NOT NULL, spaname2 datentyp, [... ] [CONSTRAINT constraintname_für_primärschlüssel] PRIMARY KEY (spaliste)) ; nach der Spaltendefinition Spaltenbedingung nur möglich, wenn nur eine Spalte den PS bildet CREATE TABLE tabname ( spaname datentyp PRIMARY KEY, [ ] ) ;

DDL-TABLE: Integritätsregeln - Primärschlüssel DB-13 042-SQL-DDL 7 Mario Neugebauer Systemseitige Erzeugung eindeutiger Primärschlüssel Syntax: MS Access: spname datentyp AUTOWERT MySQL: spname datentyp NOT NULL AUTO_INCREMENT SQL-Server: spname datentyp NOT NULL IDENTITY SQLite: spname datentyp AUTOINCREMENT Firebird: Realisierung mittels Trigger DB2: Realisierung mittels Trigger Oracle: CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10 INSERT INTO Persons (P_Id, FirstName, LastName) VALUES (seq_person.nextval,'lars', 'Monsen')

DDL-TABLE: Integritätsregeln - Primärschlüssel A Gesucht: Definition der Tabelle Geburtstag mit den Informationen: laufende Nummer gebnr als PS Name, Vornamen Zeichenanzahl jeweils 50 Geburtstag CREATE TABLE GeburtsTag( gebnr INTEGER NOT NULL, Name VARCHAR(50) NOT NULL, Vorname VARCHAR(50), Geburtstag DATE, CONSTRAINT ps_geburtstag PRIMARY KEY (gebnr) ); die Constraint-Definition ermöglicht das Ändern und Löschen der PS-Eigenschaft der Spalten Testen DB-13 042-SQL-DDL 8 Mario Neugebauer

DDL-TABLE: Integritätsregeln - Primärschlüssel A Gesucht: Definition der Tabelle Urlaub mit den Informationen: UrlaubNr als PS Namen, Vornamen Urlaubsantritt UrlBeginn und Urlaubsende UrlEnde CREATE TABLE Urlaub ( UrlaubNr INTEGER NOT NULL, Name VARCHAR(50), Vorname VARCHAR(50), UrlBeginn DATE, UrlEnde DATE, PRIMARY KEY (urlnr) ) ; Testen DB-13 042-SQL-DDL 9 Mario Neugebauer

DDL-TABLE: Integritätsregeln - Primärschlüssel A Gesucht: Definition der Tabelle Telefonliste mit den Informationen: laufende Nummer TelefonListenNr als PS Anlage mit einem CONSTRAINT ps_telefonliste Name, Vorname Telefonnummer Bemerkung ein Buchstaben (P für privat oder G für geschäftlich) der Name und die Telefonnummer müssen immer vorhanden sein CREATE TABLE Telefonliste ( TelefonListenNr INTEGER NOT NULL, Name VARCHAR(50) NOT NULL, Vorname VARCHAR(50), Telefonnummer VARCHAR(50) NOT NULL, Bemerkung CHAR(1), CONSTRAINT ps_telefonliste PRIMARY KEY (TelefonListenNr)) ; DB-13 042-SQL-DDL 10 Mario Neugebauer Testen

DDL-TABLE: Integritätsregeln - Fremdschlüssel FOREIGN KEY FS Verbindung einer Spalte einer Tabellen mit einer gleichartigen Spalte einer anderen Tabelle CREATE TABLE tabname ( spanamea datentyp [feldbeschränkung], [... ] [PRIMARY KEY (spaliste),] [CONSTRAINT constraintname_für_fremdschlüssel] FOREIGN KEY (spanamea) REFERENCES tabnameb (spanameb) ) ; REFERENCES Tabelle mit PS, auf die man sich bezieht!! die Tabelle, auf die man sich bezieht, muss bereits existieren Student StudienGang MatNr StudName SGNr SGNr SGName 1 Rot 1 1 Gesu-Inf. 3 Blau 2 2 Sport-Inf. 4 Gelb 2 999 Dmy DB-13 042-SQL-DDL 11 Mario Neugebauer

DDL-TABLE: Integritätsregeln - Fremdschlüssel DB-13 042-SQL-DDL 12 Mario Neugebauer Definition der Tabellen Student und Studiengang mit der Verknüpfung durch den PS StudienGang.SGNr und dem FS Student.SGNr: CREATE TABLE StudienGang ( SGNr INTEGER NOT NULL, SGName VARCHAR(50), PRIMARY KEY (SGNr) ) ; CREATE TABLE Student ( MatNr INTEGER NOT NULL, SGNr INTEGER, PRIMARY KEY (MatNr), FOREIGN KEY (SGNr) REFERENCES StudienGang (SGNr) );

DDL-TABLE: Integritätsregeln - Fremdschlüssel A Gesucht: Definition der Tabelle Ferien mit den Informationen: Beginn und Ende des Urlaubs (UrlBeginn, UrlEnde) MitarbeiterNr als FS aus Mitarbeiter CREATE TABLE Ferien ( MitarbeiterNr INTEGER NOT NULL, UrlBeginn DATE NOT NULL, UrlEnde DATE, PRIMARY KEY (MitarbeiterNr, Beginn), FOREIGN KEY (MitarbeiterNr) REFERENCES Mitarbeiter (MitarbeiterNr) ); DB-13 042-SQL-DDL 13 Mario Neugebauer Testen

DDL-TABLE: Integritätsregeln - Fremdschlüssel A Gesucht: Befehl zur Erstellung der Tabelle Posten CREATE TABLE posten ( In SQLTeacher Erstellung von: BestellNr INTEGER NOT NULL, * Posten2 ArtikelNr INTEGER NOT NULL, BestellMenge INTEGER, LieferMenge INTEGER, PRIMARY KEY (BestellNr, ArtikelNr), FOREIGN KEY (BestellNr) REFERENCES Bestellung (BestellNr), FOREIGN KEY (ArtikelNr) REFERENCES Artikel (ArtikelNr) ) ; DB-13 042-SQL-DDL 14 Mario Neugebauer Testen

DDL-TABLE: Integritätsregeln - Fremdschlüssel A Gesucht: Befehle zur Erstellung folgender Tabellen und Beziehungen. CREATE TABLE MWSteuer( MWSteuerNr INTEGER NOT NULL PRIMARY KEY, Prozent DECIMAL(4,2)); CEATE TABLE Hersteller( HerstellerNr INTEGER PRIMARY KEY, HerstellerName VARCHAR(50)); In SQLTeacher Erstellung von: * Artikel2 * MWSteuer2 * Hersteller2 CREATE TABLE Artikel( ArtikelNr INTEGER NOT NULL PRIMARY DECIMAL(10,2) KEY, Bezeichnung VARCHAR(50), HerstellerNr INTEGER, Nettopreis DECIMAL(10,2), MwSteuerNr INTEGER, FOREIGN KEY (HerstellerNr) REFERENCES Hersteller (HerstellerNr) FOREIGN KEY (MwSteurNr) REFERENCES MwSteuer (MwSteuerNr)); 2 Stellen nach dem Komma da insgesamt 10 Stellen vor und nach dem Komma definiert sind, bleiben acht Stellen vor dem Komma übrig Testen DB-13 042-SQL-DDL 15 Mario Neugebauer

DDL-TABLE: Integritätsregeln Fremdschlüssel Spezifikation der Reaktion auf das Löschen oder Verändern eines Datensatzes in der Vatertabelle ( Tabelle auf die der FS verweist) Übung dazu in DML CREATE TABLE tabname ( spanamea datentyp, FOREIGN KEY (spanamea) REFERENCES tabname (spaname) [ON DELETE (NO ACTION / CASCADE / SET DEFAULT / SET NULL)] [ON UPDATE (NO ACTION / CASCADE / SET DEFAULT / SET NULL)] ); Vatertabelle Mastertabelle Student StudienGang MatNr StudName SGNr SGNr SGName 1 Rot 1 1 Gesu-Inf. 3 Blau 2 2 Sport-Inf. 4 Gelb 2 999 Dmy DB-13 042-SQL-DDL 16 Mario Neugebauer

DDL-TABLE: Integritätsregeln FS Reaktion /1 SET NULL in der abhängigen Tabelle werden die Schlüsselwerte auf NULL gesetzt Bsp.: ON DELETE SET NULL DELETE FROM StudienGang WHERE SGNr = 2; SET DEFAULT in der abhängigen Tabelle werden die Schlüsselwerte auf den DEFAULT- Wert gesetzt der Default-Wert muss in der Mastertabelle existieren Bsp.: ON DELETE SET DEFAULT Löschung der Sport-Inf. Student MatNr StudName SGNr 1 Rot 1 3 Blau 2 4 Gelb 2 Student Default Wert muss in der Mastertabelle vorhanden sein StudienGang SGNr SGName 1 Gesu-Inf. 2 Sport-Inf. 999 Dmy StudienGang MatNr StudName SGNr SGNr SGName DELETE FROM StudienGang 1 Rot 1 1 Gesu-Inf. WHERE SGNr = 2; 3 Blau 2 2 Sport-Inf. 4 Gelb 2 999 Dmy DB-13 042-SQL-DDL 17 Mario Neugebauer

DDL-TABLE: Integritätsregeln FS Reaktion /2 NO ACTION Standard in der abhängigen Tabelle dürfen die FS der Datensätze nicht geändert werden Fehlermeldung und Rollback der Lösch- oder Änderungsaktion Student MatNr StudName SGNr 1 Rot 1 3 Blau 2 4 Gelb 2 CASCADE in der abhängigen Tabelle werden bei: Update: die Schlüsselwerte aktualisiert Delete: die Datensätze mit dem FS gelöscht Bsp.: ON DELETE CASCADE Student StudienGang SGNr SGName 1 Gesu-Inf. 2 Sport-Inf. 999 Dmy StudienGang MatNr StudName SGNr SGNr SGName DELETE FROM StudienGang 1 Rot 1 1 Gesu-Inf. WHERE SGNr = 2; 3 Blau 2 2 Sport-Inf. 4 Gelb 2 999 Dmy DB-13 042-SQL-DDL 18 Mario Neugebauer

DDL-TABLE: Integritätsregeln FS Reaktion /3 REFERENCES ON DELETE CASCADE StudienGang SGNr SGName 1 Gesu-Inf. 2 Sport-Inf. 999 Dmy Delete REFERENCES ON DELETE CASCADE Student MatNr StudName SGNr 1 Rot 1 3 Blau 2 4 Gelb 2 Prpüfung MatNr Fach Note 1 Mathe1 1 3 Mathe2 2 3 DB2 2 4 DB1 3 4 DWH 2 DB-13 042-SQL-DDL 19 Mario Neugebauer

DDL-TABLE: Integritätsregeln UNIQUE UNIQUE Verhinderung der Eingabe von doppelten Werten Varianten: am Ende der Tabellendefinition: CREATE TABLE tabname ( spaname1 datentyp, [... ] [PRIMARY KEY (spaliste),] [CONSTRAINT constraintname_für_unique] UNIQUE (spaname1, spaname2 [... ])) ; nach der Spaltendefinition: CREATE TABLE tabname ( spaname datentyp UNIQUE [... ] ) ; z.b. zum nachträglichen Löschen der UNIQUE- Eigenschaft der Spalten Bsp.: Erstellung der Tabelle Kunde mit einem eindeutigen MatchCode CREATE TABLE Kunde ( Name VARCHAR(50), MatchCode VARCHAR(60) UNIQUE); DB-13 042-SQL-DDL 20 Mario Neugebauer

DDL-TABLE: Integritätsregeln CHECK /1 CHECK Prüfung von Eingaben auf definierte Bedingungen Varianten: am Ende der Tabellendefinition: CREATE TABLE tabname ( spaname datentyp, [CONSTRAINT constraintname_für_check] CHECK (Bedingung)) ; nach der Spaltendefinition: CREATE TABLE tabname ( spaname datentyp CHECK (Bedingung) [... ] ) ; Bedingung: kann jede beliebige Query mit dem Resultattyp boolean sein die CHECK-Klausel ist jeweils an eine Tabellen-Deklaration gebunden ab SQL2 gibt es freistehende CHECK-Klauseln, die nicht Teil einer Tabellen-Definition sind ASSERTIONS DB-13 042-SQL-DDL 21 Mario Neugebauer

DDL-TABLE: Integritätsregeln CHECK /2 DB-13 042-SQL-DDL 22 Mario Neugebauer Bedingung: Vergleich mit Werteliste: CHECK (spaname IN (werteliste)) Prüfung: MwSt 7% oder 19% CHECK (MwSt IN (7, 19)) Vergleich mit Konstanten: CHECK (spaname VergleichsOP Wert) Prüfung: Alter >17 und < 80 Jahre CHECK (Alter > 17 AND Alter < 80) CREATE TABLE Liefert (TeileNr DECIMAL(6) NOT NULL, CHECK (EXISTS (SELECT * FROM Teil WHERE Teil.TeileNr = Liefert.TeileNr) AND

DDL-TABLE: Integritätsregeln CHECK /2 A Gesucht: Definition der Tabelle Rabatt zur Speicherung der Kundennummer mit einer Rabattstufe. Es gibt die Rabattstufen: B»Bronze«S»Silber«G»Gold«Die eingegebene Rabattstufe soll immer gültig sein. CREATE TABLE Rabatt ( KundeNr INTEGER NOT NULL PRIMARY KEY, Rabattstufe CHAR(1) CHECK (Rabattstufe IN ('B', 'G', 'S )) ) ; Testen DB-13 042-SQL-DDL 23 Mario Neugebauer

DDL-TABLE: Integritätsregeln DEFAULT DB-13 042-SQL-DDL 24 Mario Neugebauer DEFAULT Vorgabe eines Standardwertes, der immer dann eingesetzt wird, wenn nichts anderes angegeben ist. Standardwerte können sein: Null-Marke Systemvariable z.b. CURRENT_DATE( ) gültige Zeichen CREATE TABLE tabname ( spaname datentyp DEFAULT vorgabewert [... ] CHECK(..)) ; CREATE TABLE Artikel ( ArtikelNr INTEGER NOT NULL PRIMARY KEY, Bezeichnung VARCHAR(50), Nettopreis DECIMAL (10,2), MwSt INTEGER DEFAULT 19 CHECK (MwSt IN (7, 19))) ;

DDL-TABLE: Integritätsregeln A Gesucht: Definition der Tabelle Patient zur Speicherung: PatNr Primärschlüssel PatName 50 Zeichen Geschl Zahl / Standardwert 999 / 1-w, 2-m, 999-noValue Groesse Zahl / Standardwert 999 / min:150,max:220, 999-noValue CREATE TABLE Patient ( ); PatNr INTEGER NOT NULL, PatName char(50), Geschl INTEGER DEFAULT 999 CHECK (Geschl IN (1,2,999)), Groesse INTEGER DEFAULT 999 CHECK (((Groesse => 150) AND (Groesse <= 220)) OR (Groesse = 999)), PRIMARY KEY (PatNr) Testung mit: insert into Patient (PatNr,PatName,Geschl,Groesse) values(1, Aa',3,177); insert into Patient (PatNr,PatName) values(2, Bb ); Testen DB-13 042-SQL-DDL 25 Mario Neugebauer

DDL-DOMAIN: Erzeugen Definition einer Menge zulässiger Werte Vereinfachung der Tabellendefinition ( übersichtlicher) Bedingung kann nach der Definition mehrfach angewendet werden CREATE DOMAIN domainenname AS datentyp DEFAULT Vorgabewert CHECK ( VALUE Bedingung ) ; CREATE TABLE tabname ( spaname domainenname, [... ] ) ; Vgl. Sql-Server: CREATE RULE [ schname. ] rule_name AS condition_expression [ ; ] DB-13 042-SQL-DDL 26 Mario Neugebauer

DDL-DOMAIN: Bsp. Zahlungsart Bsp.: Rechnung R, Bankeinzug B, Nachnahme N, Vorkasse V, Kreditkarte K ohne DOMAIN CREATE TABLE Kunde ( [... ] Zahlungsart CHAR(1) DEFAULT R CHECK (Zahlungsart IN ('R, 'B 'N 'V, 'K'))); mit DOMAIN CREATE DOMAIN d_zahlungsart AS CHAR(1) DEFAULT R CHECK ( VALUE IN ( R, B, N, V, K )); CREATE TABLE Kunde ( [... ] Zahlungsart d_zahlungsart ); Möglichkeit zum Zugriff auf den Wert DB-13 042-SQL-DDL 27 Mario Neugebauer

DDL-DOMAIN: Übung A Gesucht: Domain d_nichtnegativ, die für den Datentyp INTEGER die Eingabe von negativen Werten verhindert. CREATE DOMAIN d_nichtnegativ AS INTEGER CHECK (VALUE >= 0); Gesucht: Mehrwertsteuer als Domain d_mwst. Der Datentyp soll eine Nachkommastelle haben und der Vorgabewert soll 19 (Prozent) sein. CREATE DOMAIN d_mwst AS DECIMAL(3,1) DEFAULT 19; Testen DB-13 042-SQL-DDL 28 Mario Neugebauer

DDL-DOMAIN DB-13 042-SQL-DDL 29 Mario Neugebauer DBs Firebird Interbase PostgreSQL MySQL -:- Oracle -:- SQL-Srv -:- CREATE DOMAIN domänenename [AS] datentyp [DEFAULT wert] [NOT NULL] [CHECK (bedingung)] [COLLATE sortierungsreihenfolge; CREATE DOMAIN domänenename [AS] datentyp [DEFAULT wert] [NOT NULL] [CHECK (bedingung)];

DDL-DOMAIN: Löschen DB-13 042-SQL-DDL 30 Mario Neugebauer Löschung der Domänendefinition DROP DOMAIN domainenname; Achtung: Tabellen die die Domain verwenden, müssen erst geändert oder gelöscht werden (sonst Fehlermeldung).

DDL-TABLE: Ändern Änderung der Definitionen einer Tabelle ALTER TABLE tabname ADD I ALTER I DROP spaname I CONSTRAINT constraintname {Änderung I Anlage}, [... ] ; Arten von Änderungen: ADD Ergänzen von Spalten ALTER bzw. MODIFY Ändern von bestehenden Spalten DROP Löschen von Spalten DB-13 042-SQL-DDL 31 Mario Neugebauer

DDL-TABLE: Ändern A CREATE TABLE mein_kunde( KundenNr INTEGER NOT NULL, Name VARCHAR(50) NOT NULL, Anschrift VARCHAR(50) NOT NULL, Ort VARCHAR(50) NOT NULL, email VARCHAR(50)); Vergrößerung des Speicherplatzes für Name auf 100: ALTER TABLE mein_kunde ALTER Name TYPE VARCHAR(100); Zugriff auf Spaltendefinition über Type Löschen der Spalte email ALTER TABLE mein_kunde DROP email; Testen DB-13 042-SQL-DDL 32 Mario Neugebauer

DDL-TABLE: Ändern A CREATE TABLE mein_kunde( KundenNr INTEGER NOT NULL, Name VARCHAR(100) NOT NULL, Anschrift VARCHAR(50) NOT NULL, Ort VARCHAR(50) NOT NULL); Einfügen einer Spalte Zahlungsart ('R', 'K', 'B') mit Standardwert R ALTER TABLE mein_kunde ADD Zahlungsart CHAR(1) DEFAULT 'R' CHECK (Zahlungsart IN ('R', 'K', 'B')); Anlegen eines Primärschlüssels ps_mein_kunde für diese Tabelle: ALTER TABLE mein_kunde ADD CONSTRAINT ps_mein_kunde PRIMARY KEY (kundennr); Testen DB-13 042-SQL-DDL 33 Mario Neugebauer

DDL-TABLE: Ändern A CREATE TABLE mein_kunde( KundenNr INTEGER NOT NULL, Name VARCHAR(100) NOT NULL, Vorname VARCHAR(50) NOT NULL, Anschrift VARCHAR(50) NOT NULL, Plz CHAR(5) NOT NULL, Ort VARCHAR(50) NOT NULL, CONSTRAINT ps PRIMARY KEY (KundenNr)) ; Aufgabe: Löschen der Primärschlüsseleigenschaft von KundenNr Einfügen des Feldes Anrede mit den zulässigen Angaben: Herr / Frau Einfügen der Zahlungsart auf die zulässigen Werte : R / E / K ALTER TABLE mein_kunde DROP CONSTRAINT ps_mein_kunde, ADD Anrede CHAR(4) CHECK (Anrede IN ('Herr', 'Frau )), ADD Zahlungsart CHAR(1) CHECK (Zahlungsart IN ('R', 'E', 'K')); DB-13 042-SQL-DDL 34 Mario Neugebauer Testen

DDL-TABLE: Ändern A CREATE TABLE mein_kunde( KundenNr INTEGER NOT NULL, Name VARCHAR(50) NOT NULL, Vorname VARCHAR(50) NOT NULL, Anschrift VARCHAR(50) NOT NULL, Plz CHAR(5) NOT NULL, Ort VARCHAR(50) NOT NULL, CONSTRAINT ps PRIMARY KEY (KundenNr)) ; Aufgabe: Änderung der KundenNr auf mögliche Werte zwischen 0 und 1000 ALTER TABLE mein_kunde ADD CONSTRAINT knr CHECK (KundenNr > -1 AND KundenNr < 1001); Testen DB-13 042-SQL-DDL 35 Mario Neugebauer

DDL-TABLE: Löschen DB-13 042-SQL-DDL 36 Mario Neugebauer Löschen einer Tabelle DROP TABLE tabname;