Folienadaption HS, 4/00. Relationen sind Tabellen! Relationales Modell = Tabellarische Repräsentation der Daten + assoziative Anfragesprache Datenbank.

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.
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,
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.
SQL-Datentypen INTEGER
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)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
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.
Folienadaption HS, 4/99.
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)
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/00

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) 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 Oft andere Notation!

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

Wie kommt man zum 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 [ ] | * FROM [WHERE ] ; 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) 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. Engl.

Einfache Anfragen (1) SELECT EMPLOYEEIDNO FROM EMPLOYEESTATISTICSTABLE WHERE SALARY < AND POSITION = ´Programmer´; Programmierer, die weniger als 4000 (was??) verdienen? Angestellte mit Gehalt > oder Bonus (benefits) von mehr als 10000? SELECT EMPLOYEEIDNO FROM EMPLOYEESTATISTICSTABLE WHERE SALARY 10000; Kann hier auch OR stehen?

Einfache Anfragen (2) Manager mit Gehalt > oder Bonus (benefits) von mehr als 10000? SELECT EMPLOYEEIDNO FROM EMPLOYEESTATISTICSTABLE WHERE POSITION = ´Manager´ AND (SALARY 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 < Bonus (benefits) ? SELECT EMPLOYEEIDNO FROM EMPLOYEESTATISTICSTABLE WHERE POSITION = ´Manager´ AND SALARY < BENEFITS ; Natürlich nur, wenn die Attribute gleichen Typ haben! Manager mit Gehalt zwischen und ? SELECT EMPLOYEEIDNO FROM EMPLOYEESTATISTICSTABLE WHERE POSITION = ´MANAGER´ AND SALARY BETWEEN AND ;

Einfache Anfragen (4) Manager mit Gehalt zwischen und ? SELECT EMPLOYEEIDNO FROM EMPLOYEESTATISTICSTABLE WHERE POSITION = ´MANAGER´ AND SALARY BETWEEN AND ; Etwas ´verbose´ ! Angestellte mit Anfangsbuchstabe ´S´ SELECT EMPLOYEEIDNO FROM EMPLOYEESTATISTICSTABLE 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 EMPLOYEESTATISTICSTABLE WHERE FIRSTNAME IN (SELECT LASTNAME FROM EMPLOYEESTATISTICSTABLE) ; Beachte Unterschied zu ´Vorname = Nachname´ Diese Subqueries sind unabhängig voneinander

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

Andere Jointypen Voriges Beispiel: Join-Prädikat Teil der WHERE -Klausel: muss nicht so sein. SELECT LASTNAME FROM EMPLOYEESTATISTICSTABLE ES JOIN EMPLOYEEADDRESSTABLE EA ON EA.EMPLOYEENO = ES.EMPLOYEENO WHERE POSITION = ´MANAGER´ AND SALARY > ; Unterschied: Gültigkeitsbereich der Bezeichner in WHERE - Klausel

Natürlicher Verbund SELECT LASTNAME FROM EMPLOYEESTATISTICSTABLE ES NATURAL JOIN EMPLOYEEADDRESSTABLE EA WHERE POSITION = ´MANAGER´ AND SALARY > ; Gleichverbund (Equijoin) auf gleich benannten Attributen verschiedener Tabellen.

Äusserer Verbund ID Erstelle Liste aller Namen und Adressen und (ggf.) des Gehalts Wo bleibt die Adresse der nicht angestellten Personen? SELECT EA.LASTNAME, EA.ADRESS,ES.SALARY FROM EMPLOYEESTATISTICSTABLE ES RIGHT OUTER JOIN EMPLOYEEADDRESSTABLE EA ON EA.EMPLOYEENO = ES.EMPLOYEENO ; Right Outer Join: auch die Tupel des rechten Relationsarguments ohne Korrespondenzwert im ersten gehören zum Ergebnis!

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. SELECT SUM(SALARY), AVG(SALARY) FROM EMPLOYEESTATISTICSTABLE; Bsp : Gehaltssumme und -durchschnitt aller Mitarbeiter!

Arithmetisch Zielliste und Prädikate können Arithmetik enthalten Bsp: Angestellte, die das Doppelte des Durchschnitts verdienen SELECT EMPLOYEEID 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 > 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', ); 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 = WHERE ITEM = 'Chair'; Lösche alle Ottomanen DELETE FROM ANTIQUES WHERE ITEM = 'Ottoman'; Beliebige Prädikate möglich

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 > AND EA.EMPLOYEENO = ES.EMPLOYEENO; SELECT COUNT(LASTNAME) FROM MONEYMAKERS GROUP BY CITY, STATE; Anfrage auf VIEW

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