4. Datenbanksprache SQL

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

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Datenbanksysteme Kapitel 2: SQL Data Definition Language

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

Die Anweisung create table

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

7. Datenbankdefinitionssprachen

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

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

6. Datendefinition in SQL

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

Datenbanksysteme Kapitel: SQL Data Definition Language

DB1. DB SQL-DQL 1 Mario Neugebauer

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

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

5. Datendefinition in SQL

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Kapitel 2: Das Relationale Modell

Relationales Datenbanksystem Oracle

Kapitel 3: Datenbanksysteme

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

SQL structured query language

7. Datendefinition in SQL Datendefinition

7. Datendefinition in SQL Datendefinition

7. Datendefinition in SQL

Kapitel 3: Datenbanksysteme

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

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

Kapitel 2: Das Relationale Modell

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

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

Datenbanken im WI-Unterricht mit

Kapitel DB:VI (Fortsetzung)

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

Datenbanksysteme 2013

Schnellübersichten. SQL Grundlagen und Datenbankdesign

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

SQL-Befehlsliste. Vereinbarung über die Schreibweise

dbis Praktikum DBS I SQL Teil 2

SQL. Datendefinition

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

Datenbanken. Zusammenfassung. Datenbanksysteme

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

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

Konstante Relationen

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

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

SQL Wintersemester 16/17 DBIS 1

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

Informations-, Daten- und Wissensmanagement

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Oracle 10g Einführung

Datenbanken Entity-Relationship-Modell und Datenbankentwurf 1. Andreas Heß Hochschule Furtwangen

Datenbanksysteme I WS 18/19 Teillösung Übungsblatt 4-6

Kapitel 7: Referentielle Integrität

Kapitel 8: Datenintegrität

Praktische SQL-Befehle

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Grober Überblick zu Datendefinitionsanweisungen in SQL

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen

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

Labor 3 - Datenbank mit MySQL

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

Wiederholung VU Datenmodellierung

Erzeugung und Veränderung von Tabellen

Übersicht der wichtigsten MySQL-Befehle

Kapitel 3: Datenbanksysteme

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

SQL. Allgemeines CREATE TABLE DROP TABLE ALTER TABLE INSERT INTO UPADTE DELETE SELECT

Wiederholung VU Datenmodellierung

Grundlagen von Datenbanken

DB1-Datenbanksysteme. DB SQL-DDL 1 Mario Neugebauer

Datenintegrität. Kapitel 5 1

MySQL, phpmyadmin & SQL. Kurzübersicht

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

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

Datenmodelle und Datenbanken 2

Datenbanksysteme Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Kapitel 4: Entwurf der Relationsschemata

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

Transkript:

4. Datenbanksprache SQL Standard-Sprache für das Arbeiten mit relationalen Datenbanken: Structured Query Language Datendefinition: Anlegen, Ändern und Löschen von Datenbankstrukturen Datenmanipulation: Einfügen, Ändern und Löschen von Datensätzen Datenabfrage: Abfragen von Datensätzen 4.1. Datendefinition Bevor man Daten in einer DB ablegen kann, muss diese zunächst angelegt, ein Schema sowie und Tabellenstrukturen definiert werden. 4.1.1. Schema und Tabellen alle Definitionen für relationale Datenbank werden im relationalen Schema gesammelt zunächst leeres Schema definieren: Datenbankschema löschen: CREATE SCHEMA <Schema-Name> DROP SCHEMA <Schema-Name> CASCADE RESTRICT 1

Sobald ein Schema definiert ist, können die normalisierten Tabellen angelegt werden: Tabelle (Relation) definieren: <Tabellen-Name> ( <Attribut-Definitionen>, [<Tabellen-Integritätsbedingungen>] ) Attribut definieren (<Attribut-Definition>): <Attribut-Name> <Datentyp> [<Attribut-Integritätsbedingungen>] 4.1.2. Datentypen und weitere Integritätsbedingungen Basis-Datentypen für Attribute (<Datentyp>): INT INTEGER: ganze Zahl zwischen -2 31 und 2 31-1 SMALLINT: ganze Zahl zwischen -2 15 und 2 15-1 DEC DECIMAL DECIMAL(p, [q]): Dezimalzahl (mit insgesamt p Stellen, davon q Dezimalstellen) NUM NUMERIC NUMERIC(p, [q]): (wie DECIMAL) FLOAT FLOAT(p): Zahl in (4 Byte-) Fließkomma-Darstellung mit Vorzeichen REAL DOUBLE PRECISION: reelle Zahl (double precision ist genauer) 2

CHAR(n): alphanumerische Zeichenkette mit fester Länge n VARCHAR(n): alphanumerische Zeichenkette mit variabler Länge (maximal n) CLOB(m [K M G]): Text mit max. m Zeichen (angebbar in Kilo-, Mega- oder Giga-Byte) BOOLEAN: Wahrheitswerte true, false, unknown DATE: Datum - als Zeichenkette in der Form JJJJ-MM-TT TIME: (Uhr-)Zeit - als Zeichenkette in der Form HH:MM:SS TIMESTAMP: Zeitstempel - als Zeichenkette in der Form JJJJ-MM-TT HH:MM:SS Integritätsbedingungen für Attribute (<Attribut-Integritätsbedingungen>): UNIQUE NOT NULL DEFAULT <Default-Wert> CHECK (<<Attribut-Name> VALUE> <Prüfbedingung 1> [AND OR AND OR <<Attribut-Name> VALUE> <Prüfbedingung n>]) PRIMARY KEY FOREIGN KEY REFERENCES <Tabellen-Name> (<Attribut-Name>) [ON DELETE CASCADE SET NULL SET DEFAULT RESTRICT NO ACTION] [ON UPDATE CASCADE SET NULL SET DEFAULT RESTRICT NO ACTION] 3

Prüfbedingungen für CHECK-Klausel: <Vergleichsoperator> <Wert-Ausdruck> mit: <Vergleichsoperator>: = < <= > >= <> <Wert-Ausdruck>: <konkreter Wert> <arithm. Ausdruck> <skalare -Anweisung> [NOT] IN (<Werte-Aufzählung> <-Anweisung>) [NOT] BETWEEN <Untergrenze> AND <Obergrenze> [NOT] LIKE <Textmuster> [ESCAPE <Sonderzeichen>] Integritätsbedingungen für Tabelle (= Attribut-übergreifend): <Attribut-Name> WITH OPTIONS <Attribut-Integritätsbedingungen> UNIQUE (<Liste Attribut-Namen>) CHECK (<Selektionsbedingung 1> [AND OR AND OR <Selektionsbedingung n>]) PRIMARY KEY (<Liste Attribut-Namen>) FOREIGN KEY (<Liste Attribut-Namen>) REFERENCES <Tabellen-Name> (<Liste Attribut-Namen>) [ON DELETE CASCADE SET NULL SET DEFAULT RESTRICT NO ACTION] [ON UPDATE CASCADE SET NULL SET DEFAULT RESTRICT NO ACTION] 4

Beispiel 4-1: Eine Kaufhaus-Kette möchte seine in den Filialen verkauften Waren in einer relationalen Datenbank verwalten, die aus den folgenden Relationen bestehen soll: Kunde mit den Attributen - KNr (Kundennummer, alphanumerisch) als Primärschlüssel, - Name (alphanumerisch), der immer mit einem Wert belegt sein soll, - Wohnort (alphanumerisch) und - Bonität, die zwischen 0 (für schlechter Kunde) und 100 (für guter Kunde) liegt und beim Einfügen eines Kunden mit dem Wert 50 belegt werden soll, Artikel mit den Attributen - ANr (Artikelnummer, alphanumerisch) als Primärschlüssel, - Bezeichner, der ebenfalls immer mit einem Wert belegt sein soll, - Preis, der immer mit einem Wert belegt und größer 0 sein soll, Filiale mit den Attributen - FNr (Filialnummer, alphanumerisch) als Primärschlüssel und - Ort, der immer mit einem Wert belegt und eindeutig sein soll (d.h. es gibt pro Ort max. eine Filiale), Kauf mit den Attributen - KNr (Kundennummer) als Teil des Primärschlüssels und Fremdschlüssel zum Attribut KNr der Relation Kunde, - ANr (Artikelnummer) als Teil des Primärschlüssels und Fremdschlüssel zum Attribut ANr der Relation Artikel, - FNr (Filialnummer) als Teil des Primärschlüssels und Fremdschlüssel zum Attribut FNr der Relation Filiale, - Menge, die immer mit einem Wert belegt und größer 0 sein soll, und - Datum. 5

Beispiel CREATE SCHEMA Verkauf; Kunde ( KNr VARCHAR (7) PRIMARY KEY, Name VARCHAR (30) NOT NULL, Wohnort VARCHAR (60), Bonität SMALLINT DEFAULT 50 CHECK (VALUE BETWEEN 0 AND 100) ); Artikel ( ANr VARCHAR (5) PRIMARY KEY, Bezeichner VARCHAR (20) NOT NULL, Preis DECIMAL (7,2) NOT NULL CHECK (VALUE > 0) ); Filiale ( FNr VARCHAR (3) PRIMARY KEY, Ort VARCHAR (60) NOT NULL UNIQUE ); Kauf muss zuletzt definiert werden, da sonst die FS nicht Kauf definiert werden ( KNr VARCHAR (7) FOREIGN KEY REFERENCES Kunde (KNr), können ANr VARCHAR (5) FOREIGN KEY REFERENCES Artikel (ANr), FNr VARCHAR (3) FOREIGN KEY REFERENCES Filiale (FNr), Menge SMALLINT NOT NULL, Datum DATE, PRIMARY KEY (KNr, ANr, FNr), Menge WITH OPTIONS CHECK (VALUE > 0) ); 6

4.1.3. Änderung einer Tabelle ALTER TABLE <Tabellen-Name> ADD [COLUMN] <Attribut-Name> <Datentyp> [<Attribut-Integritätsbedingungen>] DROP [COLUMN] <Attribut-Name> CASCADE RESTRICT Die ALTER TABLE Anweisung ist zwingend erforderlich, wenn zwei Relationen definiert werden sollen, die sich über FS-Attribute gegenseitig referenzieren. Beispiel 4-2: In einem Unternehmen sollen die Angestellten in einer eigenen Relation und die Abteilungen in einer eigenen Relation verwaltet werden. Für die Angestellten soll die eindeutige Personalnummer (PersNr, 10-stellige Zeichenkette) als Primärschlüssel, der Name (max. 30-stellige Zeichenkette, muss immer Wert aufweisen) und die Abteilungsnummer (AbtNr, Zahl) als Fremdschlüssel mit Referenz auf das gleichnamige Attribut in der Relation Abteilung geführt werden. Für die Abteilungen soll die eindeutige Abteilungsnummer (AbtNr, Zahl) als Primärschlüssel, der Name (max. 25-stellige Zeichenkette, muss immer Wert aufweisen) und die Personalnummer des Abteilungsleiters (Leiter) als Fremdschlüssel mit Referenz auf das Attribut PersNr in der Relation Angestellter geführt werden. 7

CREATE SCHEMA Ang_Abt_Datenbank; Angestellter ( PersNr CHAR (10) PRIMARY KEY, Name VARCHAR (30) NOT NULL ); Abteilung ( AbtNr SMALLINT PRIMARY KEY, Name VARCHAR (25) NOT NULL, Leiter CHAR (10) FOREIGN KEY REFERENCES Angestellter (PersNr) ); ALTER TABLE Angestellter ADD AbtNr SMALLINT FOREIGN KEY REFERENCES Abteilung (AbtNr); Tabelle löschen: DROP TABLE <Tabellen-Name> CASCADE RESTRICT Löscht nicht nur den Inhalt einer Tabelle, sondern auch deren Definition. 8

Bisher: SQL-Anweisungen für die Definition eines relationalen Datenbankschemas auf der logischen Ebene. Zusätzlich: SQL-Anweisungen auf der externen Ebene (View) und internen Ebene (Index). 4.1.4. Views und Indexe View = Sicht eines Benutzers auf die Datenbank Daten aus Basisrelationen und anderen Views extrahieren Inhalt einer View nicht permanent in Datenbank gespeichert (= virtuelle Relation) View definieren: CREATE VIEW <View-Name> [( <Liste Attribut-Namen> )] AS <-Anweisung> Extraktion der gewünschten Daten mittels 9

Views Beispiel 4-3: Die Personalabteilung benötigt eine bestimmte Sicht auf die beiden Tabellen Angestellter und Abteilung aus Beispiel 4-2. Es wird eine Aufstellung benötigt, welche Abteilung von welchem Mitarbeiter geleitet wird. Dies soll in einer View Abteilungsleiter mit den Attributen Abteilung (Name der Abteilung) und Leiter (Name des Abteilungsleiters) ausgegeben werden. a. Basistabellen Angestellter Abteilung PersNr Name AbtNr AbtNr Name Leiter 007 Bond A-1 A-1 Außendienst 007 0815 Smith A-1 P-0 Personal 4711 4711 Walker P-0 4712 Miller P-0 b. View Abteilungsleiter Abteilung Leiter Außendienst Bond Personal Walker Abb. 4-1: Relationale Datenbank mit Basistabellen und View View löschen: DROP VIEW <View-Name> CASCADE RESTRICT 10

Index = Attributwertverzeichnis (Inhalts- oder Stichwortverzeichnis) dient zum schnellen Zugriff auf einen bestimmten Datensatz liefert zu einem bestimmten Attributwert die Speicheradresse des zugehörigen Datensatzes Index kann über einzelnes Attribut oder über eine Attributkombination definiert werden (Hinweis: Index nur auf der logischen Ebene definierbar, also nicht für Views!) Index im SQL-Standard nicht vorgesehen, aber in Datenbanksystemen unentbehrlich Index definieren: CREATE [UNIQUE] INDEX <Index-Name> ON <Tabellen-Name> (<Attribut-Name 1> [ASC DESC],, <Attribut-Name n> [ASC DESC] ) Bsp.: CREATE INDEX PersNrIndex ON Angestellter (PersNr); Index löschen: DROP INDEX <Index-Name> 11