Folienadaption HS, 4/99.

Slides:



Advertisements
Ähnliche Präsentationen
CREATE TABLE Statement Rückblick
Advertisements

Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen.
Datenintegrität Integitätsbedingungen Schlüssel
ER-Datenmodell und Abfragen in SQL
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
PL/SQL - Kurze Einführung -.
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MySQL.
© A. Kemper / A. Eickler1 Kapitel 5: Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung.
Folienadaption HS, 4/00. Relationen sind Tabellen! Relationales Modell = Tabellarische Repräsentation der Daten + assoziative Anfragesprache Datenbank.
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
SQL als Abfragesprache
SQL als Abfragesprache
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 Tabellen In relationalen DB werden Daten in Tabellen organisiert Jede Spalte enthält eine bestimmte Art von Information,
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Otto-von-Guericke-Universität MagdeburgGamal Kassem Übung 7 Reports mit Datenbankzugriff.
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Datenintegrität Referentielle Integrität create table
Oracle interMedia Audio Vortrag für das Seminar Oracle Zusatzoptionen Chris Haußmann.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Kapitel 9: Integritätssicherung
Erhard Künzel für Info 9. Klasse: digitale-schule-bayern.de © Erhard Künzel.
3.5.2 Fremdschlüssel/ Referentielle Integrität (6/9)
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
Datenbankentwicklung IV-LK
Relationale Datenbanken III
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #4 Anfragebearbeitung (Teil 2)
ADAT©2004 Dipl. - Ing. Walter SabinSeite: 37 Version 1.0a Datenmodellierung Modell –Abbild eines Wirklichkeitsausschnittes –Abstraktion – Reduktion auf.
| DC-IAP/SVC3 | © Bosch Rexroth Pneumatics GmbH This document, as well as the data, specifications and other information set forth in.
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
Datenintegrität Integitätsbedingungen Schlüssel
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Algorithmen und Datenstrukturen Übungsmodul 6
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #4 SQL (Teil 1)
Vorlesung #4 SQL (Teil 1).
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
Erläuterung der wichtigsten Befehle
Befehle in SQL Erläuterungen.
Datenbanksysteme für hörer anderer Fachrichtungen
Einführung in Datenbankmodellierung und SQL
Aggregatsfunktion SQL = Structured Query Language.
1 Gruppierung, Aggregierung und Sortierung (2) Abarbeitungsmodell bei Gruppierung: Werte from- und where-Klauseln aus wie bisher (Bildung von Kreuzprodukt.
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Einführung in SQL Universeller Zugriff auf Daten in Datenbanksystemen unterschiedlicher Systemhersteller!
Verdichten von Daten mit Gruppenfunktionen
Structured Query Language
Vorlesung #5 SQL (Teil 2).
Integritätsbedingungen (Constraints)
RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.
1 Referenzielle Konsistenz (1) Vorgehensweise: Klausel references mit nachfolgender Spezikation eines Attributs einer anderen Tabelle identifiziert ein.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Vorlesung #5 SQL (Teil 2).
Vorlesung #6 SQL (Teil 3).
Wirtschaftsinformatik
Indexierung Oracle: indexes Indexierung.
Die erste Form der INSERT-Anweisung dient der Neueingabe von Daten:
(Structured Query Language)
 Präsentation transkript:

Folienadaption HS, 4/99

Relationen sind Tabellen! Relationales Modell = Tabellarische Repräsentation der Daten + „assoziative“ Anfragesprache Datenbank enthält auch Beschreibung der Daten: Datenbankschema (also Metadaten)

Wie kommt man zu einem DB-Schema? 1. Datenmodellierung typisch: Entity-Relationship-Modell (datenorientiert) zunehmend mit den Operationen (Unified Modeling Language, UML) Oft andere Notation! Lies z.B: einem Kunde (customer) werden Lieferungen (shipments) gesandt, keine, eine oder mehrere (1:M) Kardinalitäten sind Invarianten: eine Lieferung kann nie an mehrere Kunden gehen

Beispiel zu Entity-Relationship-Modellierung Schlüssel (key) Allgemein: eine identifizierende Folge von Attributen. (Invanrianzeigenschaft!) Kunden (AntiqueOwners) Antiquität bestellen (Orders) N M KDnr (ownerID) Name Nachname Bezeichner (item) Handelstransaktion (Antiques) kauft verkauft Was? (siehe Tutorial S. 6 u. 7)

Wie kommt man DB-Schema: Datendefinition 2. Datenbankschema definieren im RDM heißt das: Tabellenstruktur festlegen, Bezeichner, Attribute und deren Typ, ggf. Invarianten CREATE TABLE Orders (OwnerId INTEGER NOT NULL FOREIGN KEY REFERENCES AntiqueOwners (OWNERID), ItemDesired CHAR(40) NOT NULL); CREATE TABLE AntiqueOwners (OwnerId INTEGER NOT NULL, OwnerLastname CHAR(40) NOT NULL, OwnerFirstName CHAR(30)); CREATE TABLE Antiques (SellerID INTEGER NOT NULL FOREIGN KEY REFERENCES AntiqueOwners (OWNERID), .....);

Das Datenbänkchen... ... benutzen wir später!

Eine zweite DB für einfache SQL-Anfragen Leider hat diese Tabelle des Tutorials herzlich wenig mit der ersten zu tun! Was fehlt da?

Einfache SQL-Anfragen Grundstruktur (eine beteiligte Tabelle): SELECT [<attributBezeicher>] | * FROM <tabellenBezeichner > [WHERE <prädikat>] ; EBNF-Syntax Metasymbole! Ein SQL-Ausdruck braucht also kein (Selektions-)prädikat Ergebnis einer Anfrage ist immer eine Tabelle! ... auf der wieder eine Anfrage... -> Algebra auf Relationen als theoretische Basis. Relationenalgebra: eine applikative Sprache SELECT State FROM EmployeeAddressTable; So sollte Ergebnis aussehen, (leider) werden Duplikate nicht entfernt

Beispiele SELECT FirstName, LastName, Address, City, State FROM EmployeeAddressTable; SELECT LastName, Address, City, State FROM EmployeeAddressTable WHERE State = ´Ohio´; Projektion Selektion Zeichenkettenwerte in Hochkommata

Selektionsprädikate (1) Engl. <condition_list> <prädikat> This is a boolean expression which each row must satisfy. Operators which may be used include AND, OR, NOT, >, >=, =, <, <= The LIKE operator permits strings to be compared using 'wild cards'. The symbols _ and % are used to represent a single character or a sequence of characters. The IN operator allows an item to be tested against a list of values. There is a BETWEEN operator for checking ranges.

Einfache Anfragen (1) Programmierer, die weniger als 40000 (was??) verdienen? SELECT EmployeeIdNo FROM EmployeeStatisticsTable WHERE Salary < 40000 AND Position = ´Programmer´; Kann hier auch OR stehen? Angestellte mit Gehalt > 40000 oder Bonus (benefits) von mehr als 10000? SELECT EmployeeIdNo FROM EmployeeStatisticsTable WHERE Salary < 40000 OR Benefits > 10000;

Einfache Anfragen (2) Manager mit Gehalt > 40000 oder Bonus (benefits) von mehr als 10000? SELECT EmployeeIdNo FROM EmployeeStatisticsTable WHERE POSITION = ´Manager´ AND (SALARY < 40000 OR BENEFITS > 10000; Manager, Programmierer, Stabsmitglieder oder Ingenieure! SELECT EmployeeIdNo FROM EmployeeStatisticsTable WHERE Position IN (´Manager´, ´Programmer´, ´Staff´, ´Engineer´) ; Vermeidet lästiges OR, was bedeutet: NOT IN ?

Einfache Anfragen (3) Manager mit Gehalt zwischen 50000000 und 100000000 ? SELECT EmployeeIdNo FROM EmployeeStatisticsTable WHERE Position = ´MANAGER´ AND Salary BETWEEN 50000000 AND 100000000 ; Etwas ´verbose´ ! Manager mit Gehalt < Bonus (benefits) ? SELECT EmployeeIdNo FROM EmployeeStatisticsTable WHERE Position = ´MANAGER´ AND Salary < Benefits ; Natürlich nur, wenn die Attribute gleichen Typ haben!

Einfache Anfragen (4) Angestellte mit Anfangsbuchstabe ´S´ SELECT EmployeeIdNo FROM EmployeeAddressTable WHERE Lastname LIKE ´S%´; In regulären Ausdrücken ist das der *

Einfache Subqueries Personen mit Vornamen, die auch als Nachnamen auftauchen SELECT EmployeeIdNo FROM EmployeeAddressTable WHERE Firstname IN (SELECT Lastname FROM EmployeeAddressTable) ; Diese Subqueries sind unabhängig voneinander Beachte Unterschied zu ´Vorname = Nachname´

Mehrere Tabellen Anfrage: Namen der Manager, die mehr als 1000000 verdienen. Problem: Verbindung zwischen der Information in verschiedenen Tabellen kann nicht hergestellt werden. Annahme: EmployeeAddressTable besitzt zusätzlich Spalte EmployeeNo Alias manchmal nötig, immer nützlich SELECT Lastname FROM EmployeeStatisticsTable ES, EmployeeAddressTable EA WHERE Position = ´Manager´ AND Salary > 1000000 AND EA.EmployeeIdNo = ES. EmployeeIdNo; Verbund (genauer: Gleichheitsverbund)

Andere Join-Typen Voriges Beispiel: Join-Prädikat Teil der WHERE-Klausel: muss nicht so sein. Unterschied: Gültigkeitsbereich der Bezeichner in WHERE - Klausel SELECT Lastname FROM EmployeeStatisticsTable ES JOIN EmployeeAddressTable EA ON EA.EmployeeIdNo = ES. EmployeeIdNo WHERE Position = ´Manager´ AND Salary > 1000000;

Natürlicher Verbund Gleichverbund (Equijoin) auf gleich benannten Attributen verschiedener Tabellen. SELECT Lastname FROM EmployeeStatisticsTable ES NATURAL JOIN EmployeeAddressTable EA WHERE Position = ´Manager´ AND Salary > 1000000;

Äußerer Verbund Wo bleibt die Adresse der nicht angestellten Personen? 010 400 ID Erstelle Liste aller Namen und Adressen und (ggf.) des Gehalts SELECT EA.LastName, EA.Address, ES.Salary FROM EmployeeStatisticsTable ES RIGHT OUTER JOIN EmployeeAddressTable EA ON EA.EmployeeIdNo = ES.EmployeeIdNo ; Right Outer Join: auch die Tupel des rechten Relationsarguments ohne Korrespondenzwert im ersten gehören zum Ergebnis! Wo bleibt die Adresse der nicht angestellten Personen?

Duplikate eliminieren SELECT State FROM EmployeeAddressTable; liefert .... Mehrfach auftretende Werte (Duplikate) unterdrücken durch Schlüsselwort DISTINCT . SELECT DISTINCT State FROM EmployeeAddressTable ORDER BY State; hier sogar sortiert

Aggregierungsfunktionen · SUM () gives the total of all the rows, satisfying any conditions, of the given column, where the given column is numeric. · AVG () gives the average of the given column. · MAX () gives the largest figure in the given column. · MIN () gives the smallest figure in the given column. · COUNT(*) gives the number of rows satisfying the conditions. Bsp: Gehaltssumme und -durchschnitt aller Mitarbeiter! SELECT SUM(Salary), AVG(Salary) FROM EmployeeStatisticsTable ;

Zielliste und Prädikate können Arithmetik enthalten Arithmetisch Zielliste und Prädikate können Arithmetik enthalten Bsp: Angestellte, die das Doppelte des Durchschnitts verdienen SELECT EmployeeIdNo FROM EmployeeStatisticsTable WHERE Salary > (SELECT AVG(Salary) FROM EmployeeStatisticsTable);

Gruppierung Maximaler Verdienst aller Berufsgruppen SELECT Position MAX(Salary) FROM EmployeeStatisticsTable GROUP BY Position; Maximaler Verdienst aller Berufsgruppen mit Durchschnittsgehalt > 50000 SELECT Position MAX(Salary) FROM EmployeeStatisticsTable GROUP BY Position HAVING AVG(Salary) > 50000;

Daten ändern Adding Data To insert rows into a table, do the following: INSERT INTO Antiques VALUES (21, 01, 'Ottoman', 200.00); This inserts the data into the table, as a new row, column-by-column, in the pre-defined order. Instead, let's change the order and leave Price blank: INSERT INTO Antiques (BuyerId, SellerId, Item) VALUES (01, 21, 'Ottoman');

Ändern und Löschen Ändere Preis für alle Positionen ´chair´ auf 500. UPDATE Antiques SET Price = 500.00 WHERE Item = 'Chair'; Beliebige Prädikate möglich Lösche alle Ottomanen DELETE FROM Antiques WHERE Item = 'Ottoman';

Nochmal: Datendefinition Mit Hilfe von Anfragen können Tabellen definiert werden, die künftig (fast) wie Basistabellen behandelt werden. Diese Tabellen heißen VIEW . Sie werden normalerweise nicht materialisiert. CREATE VIEW MoneyMakers AS SELECT Lastname, City, State FROM EmployeeStatisticsTable ES, EmployeeAddressTable EA WHERE Salary > 1000000 AND EA.EmployeeIdNo = ES.EmployeeIdNo; SELECT COUNT(Lastname) FROM MoneyMakers GROUP BY City, State; Anfrage auf VIEW

Schemaänderungen erleichtern Rapid Prototyping Hinzufügen des Attributs (der Spalte) EmployeeIdNo zur EmployeeAddressTable ALTER TABLE EmployeeAddressTable ADD (EmployeeIdNo INTEGER NULL); Nullwert != 0 NULL : undefiniert Nicht behandelt: Mengenoperationen, physikalisches Schema, Einbettung in Pogrammiersprachen.