5 SQL Structured Query Language

Größe: px
Ab Seite anzeigen:

Download "5 SQL Structured Query Language"

Transkript

1 5 SQL Structured Query Language 5.1 Allgemeines zu SQL SQL-DDL: Definition eines Datenbankschemas SQL-DML: Abfragen in SQL (Query Language) SQL-DML: Mutationen in SQL (Insert, Update, Delete) 65 1

2 5.1 Allgemeines zu SQL (1 3) Entwicklungsziele: möglichst einfach für den Endbenutzer; möglichst deskriptiv, nicht prozedural Benennung: SQL: structured query language" ursprünglich: SEQUEL structured english query language" Entwicklung: (im IBM-Labor) basiert auf relationaler Algebra und Tupelkalkül erste Vorschläge 1974; weiterentwickelt Implementierungen 1977 im System R (Prototyp eines rel. DBS) Erste kommerzielle Implementierungen: Oracle: 1980 IBM: SQL/DS (1981), DB2 (1983) 2

3 5.1 Allgemeines zu SQL (2 3) Standardisierung SQL-86 (1986): erster Standardisierungsversuch SQL-89 (1989): Lücken (z.b.: Fremdschlüssel) von SQL-86 z.t. geschlossen; SQL-92 (1992): Aktueller, umfassender Standard; drei Standardisierungslevels (entry, intermediate, full level); Der Entry Level wird von den meisten Datenbanken unterstützt. Der Intermediate Level im vollen Sprachumfang von keiner einzigen. SQL-99 (1999): Weiterentwicklung mit objekt-orientierten Ansätzen; in kommerziellen Produkten nur teilweise implementiert; Gliederung in Core-SQL (Sprachkern) und verschiedenen Packages, die aus Features bestehen. Sprachumfang: SQL deckt die Aspekte der DDL und der DML (Abfragen, Mutationen) ab. 3

4 5.1 Allgemeines zu SQL (3 3) Schnittstellen: SQL kann sowohl interaktiv, als auch eingebettet in einer konventionellen Programmiersprache (z.b. C, JAVA, ) verwendet werden. Terminologie: table Relation row Tupel column Attribut relationales Modell: SQL ist eine Umsetzung des relationalen Modells, wobei es neben den eigentlichen Tabellen (set of rows) auch uneigentliche Tabellen (multi-set of rows) gibt. Bei diesen können Tupel mehrfach auftreten, was dem Mengenbegriff widerspricht. 4

5 5 SQL Structured Query Language 5.1 Allgemeines zu SQL SQL-DDL: Definition eines Datenbankschemas Definition von Basistabellen Datentypen und benutzerdefinierte Domänen Ein Beispiel für ein Datenbankschema Definition von Sichten SQL-DML: Abfragen in SQL (Query Language) SQL-DML: Mutationen in SQL

6 5.2 Definition eines Datenbankschemas (SQL-DDL) Datenbank Benutzersichten Übersicht: SQL-DDL (vereinfacht) : Menge von Basistabellen : Views Anweisungen Bedeutung CREATE SCHEMA Anlegen eines Datenbankschemas DROP SCHEMA Löschen eines Schemas CREATE TABLE Definition einer Basistabelle ALTER TABLE Ändern einer Basistabelle (Hinzufügen von Attributen) DROP TABLE Löschen einer Basistabelle CREATE VIEW Definition einer Sicht DROP VIEW Löschen einer Sicht CREATE DOMAIN benutzerdefinierte Domain anlegen DROP DOMAIN benutzerdefinierte Domain löschen Die CREATE TABLE Anweisung ist davon die wichtigste. 6

7 5.2.1 Definition von Basistabellen Definition einer Relation: CREATE TABLE table-name ({column-definition table-constraint}[, {column-definition table-constr.} ]); definiert einen Relationstyp und legt gleichzeitig eine entsprechende Relation (Instanz) an ( Schema einer Relation ). SQL kennt nicht den benannten Relationstyp Spaltendefinition: column-definition: column-name {data-type domain-name} [column-constraint ] column-constraint: NOT NULL UNIQUE PRIMARY KEY reference-constraint reference-constraint: REFERENCES table-name [(reference-column)] Constraints über mehrere Attribute: (table-constraint) UNIQUE (column-list) PRIMARY KEY (column-list) FOREIGN KEY (referencing-columns) REFERENCES table-name [(column-list)] 7

8 5.2.2 Datentypen und benutzerdefinierte Domänen (1/2) SQL bietet folgende (Basis-)Datentypen: (Auswahl) Beschreibung Datentyp Kurzform Zeichen(ketten): Ein einzelnes Zeichen CHARACTER CHAR Kette fester Länge CHARACTER (n) CHAR (n) ) Kette variabler Länge Bit-Datentyp: CHARACTER VARYING (n) VARCHAR (n) Ein Bit BIT Bitfolge fester Länge BIT (n) Exakte Zahlen: Bitfolge variabler Länge BIT VARYING (n) mit Nachkommastellen DECIMAL [(p,[,s])] DEC(p,s) dto. NUMERIC [(p,[,s])] Ganzzahl INTEGER INT Gleitkommazahlen: kleine Ganzzahl SMALLINT hohe Genauigkeit DOUBLE PRECISION benutzerdefinierte Gen. FLOAT (n) geringere Genauigkeit *) n=integer, p, s ebenso. REAL 8

9 5.2.2 Datentypen und benutzerdefinierte Domänen (2/2) Beschreibung Datentyp Kurzform Zeit, Datum, Zeitintervall: Datum (y,m,d) DATE Zeitpunkt (h,min,sec) TIME Zeitpunkt (y,m,d,h, min, sec) TIMESTAMP Zeitintervall INTERVAL f INTERVAL sf to ef f, sf, ef {YEAR, MONTH, DAY, HOUR, MINUTE, SECOND} ( sf>ef ) In SQL können benutzerdefinierte Datentypen als Einschränkung der vorgegebenen Datentypen definiert werden. Beispiel 5-1: Prozentangaben sind Gleitkommawerte zwischen 0 und 100. CREATE DOMAIN ProzentAngabe AS REAL CONSTRAINT ProzAngabeConstraint CHECK ( VALUE >= 0.0 AND VALUE <= 100.0); 9

10 5.2.3 Ein Beispiel für ein Datenbankschema CREATE SCHEMA Projektverwaltung; CREATE DOMAIN PersonalNr AS INTEGER; CREATE DOMAIN ProjektNr AS INTEGER; CREATE DOMAIN ProzentAngabe AS... CREATE TABLE angestellte (ANG-NR PersonalNr PRIMARY KEY, NAME VARCHAR (30), WOHNORT VARCHAR (30), ABT-NR INTEGER); CREATE TABLE projekt (P-NR ProjektNr PRIMARY KEY, P-NAME VARCHAR (15), P-FILIALE VARCHAR (30), P-LEITER PersonalNr REFERENCES angestellte(ang-nr)); CREATE TABLE ang-pro (P-NR ProjektNr REFERENCES projekt (P-NR), ANG-NR PersonalNr REFERENCES angestellte (ANG-NR), PROZ-ARBZEIT ProzentAngabe, PRIMARY KEY (P-NR, ANG-NR)). 10

11 5.2.4 Definition von Sichten CREATE VIEW table-name [(column-name [,column-name] )] AS query expression [WITH CHECK OPTION]; ([WITH CHECK OPTION]: bei Mutationen: Prüfung ob eingefügte oder geänderte Tupel zu View gehören.) Beispiel 5-2: CREATE VIEW angestellteauskarlsruhe AS SELECT ANG-NR, NAME, WOHNORT, ABT-NR FROM angestellte WHERE WOHNORT = Karlsruhe ; 11

12 5 SQL Structured Query Language 5.1 Allgemeines zu SQL SQL-DDL: Definition eines Datenbankschemas SQL-DML: Abfragen in SQL (Query Language) Die Syntax der SELECT-Abfrage Abfragen mit Bedingungen Spezielle Abfragen an eine Relation Aggregatfunktionen (COUNT, SUM, ) Bildung von Gruppen (GROUP) Verknüpfung von Relationen (Join) Join-Operationen ab SQL Verknüpfung von Relationen mit Subqueries Abfragen mit Existenz-Quantor Mengenoperationen SQL-DML: Mutationen in SQL (Insert, Update, Delete)

13 5.3 Abfragen in SQL (Query Language) (1/2) Tabellen zu den folgenden Beispielen: angestellte (#=n) ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 projekt (#=k) P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim

14 5.3 Abfragen in SQL (Query Language) (2/2) ang-pro (#=m) P-NR ANG-NR PROZ-ARBZEIT

15 5.3.1 Die Syntax der SELECT-Abfrage Die SELECT-Abfrage Grundform: SELECT Auswahl von Spalten (π) FROM Relation(en)/Tabelle(n) WHERE Selektionsbedingung (σ) SELECT-Abfrage ::= SELECT [DISTINCT] derived column(s) FROM table(s) [WHERE search condition] [GROUP BY column(s) [HAVING search condition]] [ORDER BY column(s)]; Mengenoperationen: SELECT-Abfrage op SELECT-Abfrage op := {EXCEPT INTERSECT UNION} [ALL] Ab SQL-92 können SELECT-Abfragen außerdem durch explizite Join- Operationen verknüpft werden. Abs

16 5.3.2 Abfragen mit Bedingungen ( σ )(1/9)(1/9) WHERE <search condition> Die search condition ist ein logischer Ausdruck, der folgendes enthalten kann: - Vergleichsoperationen: =, <, >, <>, >=, <=, BETWEEN, LIKE, IN - Boolesche Operatoren: AND, OR, NOT (d.h. Bezugnahme auf eine Zeile, wie σ-operation) 16

17 5.3.2 Abfragen mit Bedingungen ( σ )(2/9)(2/9) 1. Name und Abteilungsnummer aller Angestellten mit Wohnort Karlsruhe SELECT FROM WHERE NAME, ABT-NR angestellte WOHNORT= Karlsruhe ; Ergebnis: NAME ABT-NR Meyer 35 Maus 30 Groß 35 Müller 32 angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 17

18 5.3.2 Abfragen mit Bedingungen ( σ )(3/9)(3/9) Zusammengesetzte Suchbedingung 2. Name und Abteilungsnummer aller Angestellten, die in Karlsruhe wohnen oder in Abteilung 30 arbeiten SELECT FROM WHERE NAME, ABT-NR angestellte Ergebnis: WOHNORT= Karlsruhe OR ABT-NR=30; NAME ABT-NR Meyer 35 Müller 30 Maus 30 Groß 35 Müller 32 Meier 30 angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 18

19 5.3.2 Abfragen mit Bedingungen ( σ )(4/9)(4/9) Abfragen mit Bereichsgrenzen 3. Alle Angestellten (Nummer und Name) mit Nummer zwischen 1435 und 2314 (jeweils einschließlich) x BETWEEN a AND b entspricht x >= a AND x <= b SELECT FROM WHERE ANG-NR, NAME angestellte Ergebnis: ANG-NR BETWEEN 1435 AND 2314; ANG-NR NAME 2314 Groß 1435 Mayerlein 2244 Schulz angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 19

20 5.3.2 Abfragen mit Bedingungen ( σ )(5/9)(5/9) Abfragen mit Wertaufzählung 4. Alle Angestellten-Nummern der Abteilungen 30 und 35 aus Karlsruhe und Mannheim SELECT FROM WHERE ANG-NR angestellte Ergebnis: ABT-NR IN (30, 35) AND WOHNORT IN ( Karlsruhe, Mannheim ); ANG-NR angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe 32 Negation: 2244 NOT BETWEEN Schulz / NOT Bruchsal IN Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 20

21 5.3.2 Abfragen mit Bedingungen ( σ )(6/9)(6/9) Abfrage mit Teilstring-Suche (Wildcards) Das Zeichen "%" im Suchstring steht für eine beliebige Folge von Characters, "passt" also auf jeden String. 5. Nummer und P-FILIALE aller Projekte, deren P-Filialen in Städten liegen, deren Namen ein ei enthalten. SELECT FROM WHERE P-NR, P-FILIALE projekt P-FILIALE LIKE %ei% ; Ergebnis: P-NR P-FILIALE Heidelberg Mannheim projekt P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim 2814 Bemerkungen: - "like", nicht "=", nach "=" steht ein Wert, z.b. "= Heidelberg " - Groß/Kleinschreibung beachten - Anderes Beispiel: Telefonnummer in Telefonliste 21

22 5.3.2 Abfragen mit Bedingungen ( σ )(7/9)(7/9) Der Unterstrich "_" im Suchstring steht für genau 1 beliebiges Zeichen. 6. Nummer und Name aller Angestellten, deren Namen mit Me beginnen, mit er aufhören und dazwischen nur einen einzelnen Buchstaben beinhalten. SELECT FROM WHERE ANG-NR, NAME angestellte NAME LIKE Me_er ; Ergebnis: ANG-NR NAME 3115 Meyer 3425 Meier angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 22

23 5.3.2 Abfragen mit Bedingungen ( σ )(8/9)(8/9) Kombination von _ und % 7. Alle Angestellten-Namen, deren Anfang wie Maier klingt. SELECT FROM WHERE NAME angestellte NAME LIKE M er% ; Ergebnis: NAME Meyer Meyerlein Meier angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 23

24 5.3.2 Abfragen mit Bedingungen ( σ )(9/9)(9/9) Retrieval mit Sortierung auf / absteigend ([ASC] / DESC) nach Wert einer Spalte oder mehrerer Spalten (zusammengesetztes Sortierkriterium, ASC - DESC beliebig mischbar) 8. Nummer und Name aller Angestellten, die zur Abteilung 30 gehören, aufsteigend sortiert nach Nummer und Name. SELECT FROM WHERE ORDER BY ANG-NR, NAME, angestellte ABT-NR=30 ANG-NR, NAME ASC; ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 Unsortiert: ANG-NR NAME WOHNORT ABT-NR 3207 Müller Mannheim Maus Karlsruhe Meier Pforzheim 30 Ergebnis: ANG-NR NAME 3190 Maus 3207 Müller 3425 Meier 24

25 5.3.3 Spezielle Abfragen an eine Relation (1/6) Auswahl von allen Zeilen 9. Name aller Projekte SELECT FROM Ergebnis: P-NAME projekt; projekt P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim

26 Spezielle Abfragen an eine Relation (2/6) Auswahl von allen Spalten 10. alle Projekte in Karlsruhe SELECT FROM WHERE Ergebnis: projekt P-FILIALE= Karlsruhe ; projekt P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim 2814

27 5.3.3 Spezielle Abfragen an eine Relation (3/6) Keine Auswahl von Spalten und von Zeilen (Gesamte Relation ausgeben) 11. Alle Daten der Relation angestellte SELECT FROM angestellte; Ergebnis: vollständige Kopie von angestellte angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 27

28 Spezielle Abfragen an eine Relation (4/6) Elimination von Duplikaten: 12. Die Orte aller P-Filialen ohne Duplikate SELECT FROM DISTINCT P-FILIALE projekt; Ergebnis: eine einzelne Spalte ohne Duplikation. P-FILIALE Karlsruhe Heidelberg Mannheim projekt P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim 2814

29 5.3.3 Spezielle Abfragen an eine Relation (5/6) Rechnen mit Attributwerten 13. (Zusammengehörige) Projekt- und Angestelltennummern mit relativer Arbeitszeit SELECT FROM Ergebnis: P-NR, ANG-NR, PROZ-ARBZEIT 0.01 ang-pro; ang-pro P-NR ANG-NR PROZ-ARBZEIT

30 5.3.3 Spezielle Abfragen an eine Relation (6/6) Integration von Konstanten in die Antwort 14. (Zusammengehörige) Projekt- und Angestelltennummern mit relativer Arbeitszeit; vor der Arbeitszeit soll stehen: Anteil =. SELECT FROM P-NR, ANG-NR, Anteil=, PROZ-ARBZEIT/100 ang-pro; Ergebnis: ang-pro P-NR ANG-NR ANG-NR Anteil = PROZ-ARBZEIT/ Anteil = Anteil = Anteil = Anteil = Anteil = Anteil =

31 5.3.4 Aggregatfunktionen (COUNT, SUM,...) (1/4) Funktion Bedeutung COUNT Anzahl der Werte in Spalte (Name) bzw. Tabelle (*) SUM Summe der Werte in Spalte AVG Durchschnitt der Werte in Spalte MAX Größter Wert in Spalte MIN Kleinster Wert in Spalte 15. Funktion, auf Tabelle bezogen Anzahl aller Angestellten SELECT FROM Ergebnis: 12 Ohne Duplikation: COUNT(*) angestellte; 12 SELECT COUNT(DISTINCT NAME) FROM angestellte; Ergebnis: 11 ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 31

32 5.3.4 Aggregatfunktionen (COUNT, SUM,...) (2/4) 16. Funktion, auf Spalte bezogen Höchster vorkommender Arbeitszeitanteil SELECT FROM MAX(PROZ-ARBZEIT) AS PROZ-ARBEIT-MAX ang-pro; ang-pro P-NR ANG-NR PROZ-ARBZEIT Qualifikation Qualifikation mit mit Aliasnamen Aliasnamen Bemerkung: Bemerkung: Das Das Schlüsselwort Schlüsselwort AS AS bei bei der der Einführung Einführung von von Aliasnamen Aliasnamen ist ist optional. optional. Ergebnis: PROZ-ARBZEIT-MAX

33 5.3.4 Aggregatfunktionen (COUNT, SUM,...) (3/4) 17. Funktion, auf Spalte bezogen, mit zusätzlicher Selektion Höchster Arbeitszeitanteil am Projekt Nr SELECT FROM WHERE MAX(PROZ-ARBZEIT) AS PROZ-ARBEIT-MAX ang-pro P-NR = ; ang-pro P-NR ANG-NR PROZ-ARBZEIT Ergebnis: PROZ-ARBZEIT-MAX

34 5.3.4 Aggregatfunktionen (COUNT, SUM,...) (4/4) 18. Funktion, auf Spalte bezogen, mit zusätzlicher Selektion Gesamtarbeitsanteil von Projekt Nr SELECT FROM WHERE SUM (PROZ-ARBZEIT) AS PROZ-ARBEIT-SUM ang-pro P-NR = ; ang-pro P-NR ANG-NR PROZ-ARBZEIT Ergebnis: PROZ-ARBZEIT-SUM

35 5.3.5 Bildung von Gruppen (GROUP BY) (1/3) Zusammenfassung von Zeilen mit demselben Wert in einer oder mehreren vorgegebenen Spalten zum Zweck der Anwendung einer Standardfunktion auf diese Gruppe o.ä. 19. Gib den Gesamtarbeitszeitanteil jedes Projekts an. SELECT P-NR, SUM(PROZ-ARBZEIT) AS PROZ-ARBEIT-PROJEKT FROM ang-pro P-NR ANG-NR PROZ-ARBZEIT GROUP BY P-NR; Ergebnis: P-NR PROZ-ARBZEIT- PROJEKT Gruppe Gruppe Gruppe Gruppe SUM 290 SUM 170 SUM 360 SUM

36 5.3.5 Bildung von Gruppen (GROUP BY) (2/3) Auswahl von Gruppen mit HAVING-Bedingung: (WHERE für Auswahl einzelner Zeilen) 20. Gib die Projekte an, in denen der maximale Arbeitszeitanteil 100% erreicht. SELECT P-NR FROM ang-pro GROUP BY P-NR HAVING Ergebnis: MAX(PROZ-ARBZEIT) =100; P-NR Gruppe Gruppe Gruppe Gruppe P-NR ANG-NR PROZ-ARBZEIT MAX 100 MAX 70 MAX 100 MAX

37 5.3.5 Bildung von Gruppen (GROUP BY) (3/3) 21. Gib alle Projekte an, an denen mind. 5 Angestellte beteiligt sind. SELECT P-NR FROM ang-pro GROUP BY P-NR HAVING COUNT (DISTINCT ANG-NR)>=5; Ergebnis: P-NR Gruppe Gruppe Gruppe Gruppe P-NR ANG-NR PROZ-ARBZEIT COUNT COUNT COUNT COUNT

38 5.3.6 Verknüpfung von Relationen (Join) (1/3) Abfragen mit Join ( Natural Join ) 22. Alle Projekte mit den Informationen der zugehörigen Angestellten. SELECT P-NR, a.ang-nr, NAME, WOHNORT, ABT-NR, PROZ-ARBZEIT FROM WHERE angestellte a, ang-pro ap a.ang-nr=ap.ang-nr; Qualifikation Qualifikation mit mit Aliasnamen Aliasnamen Animation und Ergebnis dieses Beispiels (siehe Seite 68) Animation vom Projekt Vikar Kartesisches Produkt Natural Join Join mit Joinbedingung 23. Alle Projekt-Nummern mit den Namen derjenigen Angestellten, die zu 50% mitarbeiten. SELECT FROM WHERE P-NR, NAME angestellte a, ang-pro ap a.ang-nr=ap.ang-nr AND PROZ-ARBZEIT=50; Animation und Ergebnis dieses Beispiels (siehe Seite 69) 38

39 5.3.6 Verknüpfung von Relationen (Join) (2/3) Abfragen mit Join (Spezialfall der Joinbedingung: θ-join) 24. Gib für jedes Projekt die Projektnummer und die Namen aller Angestellten an, die dort nicht Projektleiter sind. (Angestellter muß nicht an Projekt mitarbeiten) SELECT FROM WHERE P-NR, NAME angestellte, projekt ANG-NR <> P-LEITER; Animation und Ergebnis dieses Beispiels (siehe Seite 70) Join mit 3 Relationen 25. Gib für jeden Angestellten seinen Namen, sowie die Projekt-Filialen der Projekte an, an denen er mitarbeitet. SELECT FROM WHERE NAME, P-FILIALE angestellte a, ang-pro ap, projekt p a.ang-nr=ap.ang-nr AND ap.p-nr=p.p-nr; Animation und Ergebnis dieses Beispiels (siehe Seite 71) 39

40 5.3.6 Verknüpfung von Relationen (Join) (3/3) Join mit derselben Relation Verwendung von Alias-Namen & Qualifikation 26. Suche Paare von (unterschiedlichen) Angestellten(Ang-Nr), die in der selben Stadt wohnen. (Das Ergebnis sollte keine redundanten Angaben enthalten) SELECT FROM WHERE a.ang-nr A-NR, b.ang-nr B-NR angestellte a, angestellte b a.wohnort=b.wohnort AND a.ang-nr < b.ang-nr; ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim 32 (kartesisches Produkt) a b ANG-NR NAME WOHNORT ABT-NR ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Meyer Karlsruhe Meyer Karlsruhe Müller Mannheim Meyer Karlsruhe Klein Mannheim Müller Mannheim Meyer Karlsruhe Müller Mannheim Müller Mannheim Müller Mannheim Klein Mannheim Klein Mannheim Meyer Karlsruhe Klein Mannheim Müller Mannheim Klein Mannheim Klein Mannheim 32 ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim 32 Ergebnis: A-NR B-NR

41 5.3.7 Join-Operationen ab SQL-92 (1/9) Ab SQL-92 gibt es explizite Join-Operationen. Es können sowohl durch SELECT-Abfragen abgeleitete Tabellen in der Form: (SELECT FROM WHERE ) join-op (SELECT FROM WHERE ) [join-spec]; als auch Basis-Tabellen bzw. Views in der Form: SELECT FROM table join-op table [join-spec] WHERE miteinander verbunden werden. Syntax einer Join-Operation: join-op := CROSS JOIN [NATURAL] [INNER] JOIN [NATURAL] {LEFT RIGHT FULL} [OUTER] JOIN UNION JOIN 41

42 Join-Operationen ab SQL-92 (2/9) Kartesisches Produkt: table1 CROSS JOIN table2 berechnet das Kartesische Produkt und entspricht Natural Join: SELECT * FROM table1, table2 Die Verwendung des Schlüsselworts NATURAL führt zur Berechnung des Natural Join. Wenn nicht alle gemeinsamen Attribute verschmolzen werden sollen, kann mit join-spec := USING (column-list) auf die angegebenen Attribute eingeschränkt werden. In diesem Fall darf das Schlüsselwort NATURAL nicht angegeben werden.

43 5.3.7 Join-Operationen ab SQL-92 (3/9) Join mit Joinbedingung: Ein Join mit Joinbedingung wird mit INNER JOIN (oder nur JOIN) durchgeführt, wobei die Join-Bedingung mit join-spec := ON search condition angegeben wird (search condition entspricht der Bedingung, die nach WHERE in einer SELECT-Abfrage angegeben werden kann). Beim Join mit Joinbedingung kommt es zu keiner Verschmelzung gemeinsamer Attribute (wie bei der gleichnamigen Operation der relationalen Algebra). Outer-Join: Sämtliche Variationen des Outer-Join (FULL, LEFT, RIGHT) können formuliert werden. Dabei kann entweder ein Natural-Join (NATURAL, wenn opt. USING-Klausel, muss Schlüsselwort NATURAL weggelassen werden) oder ein Join mit Joinbedingung (ON-Klausel) durchgeführt werden. Das Schlüsselwort OUTER ist optional, sollte aber aus Gründen der Leserlichkeit benutzt werden. 43

44 Join-Operationen ab SQL-92 (4/9) Union-Join: Der Union-Join kann mit Hilfe des Schlüsselworts UNION JOIN durchgeführt werden. Damit kann man Tabellen vereinigen, die gar nicht vereinigungskompatibel sind. Die privaten Attribute der jeweils anderen Tabelle werden ergänzt und mit NULL-Werten ausgefüllt. Bemerkung: Die expliziten Join-Operationen können zwar auch mit früheren SQL- Versionen formuliert werden, allerdings z.t. nur sehr umständlich. Die neuen Schlüsselwörter dienen der verbesserten Lesbarkeit; insbesondere die WHERE-Klausel wird dadurch entlastet.

45 Join-Operationen ab SQL-92 (5/9) Beispiel 5-3 (Umformulierung der Bsp ) 27. (Beispiel 22, S.41, Natural Join ) Alle Projektmitarbeiter mit den zugehörigen Angestellteninfos. SELECT P-NR, a.ang-nr, NAME, WOHNORT, ABT-NR, FROM PROZ-ARBZEIT angestellte a, ang-pro ap WHERE a.ang-nr=ap.ang-nr; Ab SQL-92: SELECT * FROM angestellte NATURAL JOIN ang-pro;

46 5.3.7 Join-Operationen ab SQL-92 (6/9) Beispiel 5-3 (Umformulierung der Bsp ) 28. (Beispiel 23, S.41, Join mit Joinbedingung) Alle Projekt-Nummern mit den Namen derjenigen Angestellten, die zu 50% mitarbeiten. SELECT P-NR, NAME FROM angestellte a, ang-pro ap WHERE a.ang-nr=ap.ang-nr AND PROZ-ARBZEIT=50; Ab SQL-92: SELECT P-NR, NAME FROM angestellte NATURAL JOIN ang-pro WHERE PROZ-ARBZEIT = 50; oder SELECT P-NR, NAME FROM angestellte INNER JOIN ang-pro ON (angestellte.ang-nr=ang-pro.ang-nr AND PROZ-ARBZEIT=50); 46

47 Join-Operationen ab SQL-92 (7/9) Beispiel 5-3 (Umformulierung der Bsp ) 29. (Beispiel 24, S.42, Spezialfall der Joinbedingung: θ-join) Gib für jedes Projekt die Projektnummer und die Namen aller Angestellten an, die dort nicht Projektleiter sind. (Angestellter muß nicht an Projekt mitarbeiten) SELECT P-NR, NAME FROM angestellte, projekt WHERE ANG-NR <> P-LEITER; Ab SQL-92: SELECT P-NR, NAME FROM angestellte JOIN projekt ON (ANG-NR <> P-LEITER);

48 Join-Operationen ab SQL-92 (8/9) Beispiel 5-3 (Umformulierung der Bsp ) 30. (Beispiel 25, S.42, Join mit 3 Relationen) Gib für jeden Angestellten seinen Namen, sowie die Projekt-Filialen der Projekte an, an denen er mitarbeitet. SELECT NAME, P-FILIALE FROM angestellte a, ang-pro ap, projekt p WHERE a.ang-nr=ap.ang-nr AND ap.p-nr=p.p-nr; Ab SQL-92: SELECT NAME, P-FILIALE FROM angestellte NATURAL JOIN ang-pro NATURAL JOIN projekt;

49 Join-Operationen ab SQL-92 (9/9) Beispiel 5-3 (Umformulierung der Bsp ) 31. (Beispiel 26, S.43, Join mit derselben Relation) Suche Paare von (unterschiedlichen) Angestellten, die in der selben Stadt wohnen. (Das Ergebnis sollte keine redundanten Angaben enthalten) SELECT a.ang-nr A-NR, b.ang-nr B-NR FROM angestellte a, angestellte b WHERE a.wohnort=b.wohnort AND a.ang-nr<b.ang-nr; Ab SQL-92 SELECT a.ang-nr, b.ang-nr FROM (angestellte a) JOIN (angestellte b) USING (WOHNORT) WHERE a.ang-nr < b.ang-nr;

50 5.3.8 Verknüpfung von Relationen mit Subqueries (1/7) Dabei handelt es sich um geschachtelte Queries. 32. Namen aller Angestellten, die mit 100 % ihrer Arbeitszeit an einem Projekt mitarbeiten. 1. Schritt: Bestimme aus ang-pro alle ANG-NR, die zu PROZ-ARBZEIT=100 gehören (Query a) SELECT FROM WHERE ANG-NR ang-pro PROZ-ARBZEIT=100; ang-pro (#=m) P-NR ANG-NR PROZ-ARBZEIT Ergebnis: ANG-NR

51 5.3.8 Verknüpfung von Relationen mit Subqueries (2/7) 2. Schritt: Wähle in angestellte alle Tupel aus, deren ANG-NR in der oben gegebenen Ergebnismenge liegt: (Query b) SELECT FROM WHERE NAME angestellte ANG-NR IN (3207, 2412, 2314,1324); angestellte (#=n) ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 Ergebnis: NAME Müller Groß Schmitt Müller 51

52 Verknüpfung von Relationen mit Subqueries (3/7) Zusammenfassung zu geschachtelter Query: {äußere Query b} SELECT NAME FROM angestellte WHERE ANG-NR IN {Subquery a} (SELECT ANG-NR FROM ang-pro Vorgehensweise des Systems: WHERE PROZ-ARBZEIT = 100); a) Abarbeitung Subquery (a) b) Übergabe Ergebnis an übergeordnete (äußere) Query (b) c) Abarbeitung Query b mit dem übergebenen Ergebnis

53 5.3.8 Verknüpfung von Relationen mit Subqueries (4/7) 33. Äquivalente Abfrage mit Join: SELECT NAME FROM angestellte, ang-pro WHERE PROZ-ARBZEIT = 100 AND ang-pro.ang-nr = angestellte.ang-nr; Ergebnis von 32. SELECT NAME FROM angestellte WHERE ANG-NR IN (SELECT ANG-NR FROM ang-pro WHERE PROZ-ARBZEIT = 100); Vergleich 32. mit 33.: (vereinfachte Betrachtung!) Man betrachte Anzahl der notwendigen DB-Zugriffe! bei 32.: n+m bei 33.: n m 53

54 5.3.8 Verknüpfung von Relationen mit Subqueries (5/7) Mehrfach geschachtelte Queries 34. Namen aller Angestellten, die an mindestens einem Projekt in Karlsruhe mitarbeiten. Vorgehensweise: a) in projekt: Auswahl P-NR der Projekte in Karlsruhe b) in ang-pro: Auswahl ANG-NR, deren P-NR in der obigen Ergebnismenge liegen c) in angestellte: Auswahl NAMEn, deren ANG-NR in der o.e. liegen c) SELECT NAME FROM angestellte WHERE ANG-NR IN b) (SELECT ANG-NR FROM ang-pro WHERE P-NR IN a) (SELECT P-NR FROM projekt WHERE P-FILIALE = Karlsruhe )); Animation und Ergebnis dieses Beispiels (siehe Seite 72) 54

55 5.3.8 Verknüpfung von Relationen mit Subqueries (6/7) 35. Äquivalente Formulierung mit 2-fach Join: SELECT FROM WHERE a.name angestellte a, ang-pro ap, projekt p a.ang-nr = ap.ang-nr AND ap.p-nr=p.p-nr AND p.p-filiale= Karlsruhe ; 55

56 5.3.8 Verknüpfung von Relationen mit Subqueries (7/7) Correlated subquery : Die Subquery ist durch eine äußere Referenz von der umgebenden äußeren Query abhängig. : 36. Gib alle Orte an, an denen mehr als ein Projekt angesiedelt ist. (b) SELECT DISTINCT P-FILIALE FROM projekt a WHERE 1 < (a) (SELECT COUNT (*) FROM projekt b WHERE b.p-filiale = a.p-filiale ); Jetzt kann Subquery (a) nicht vorab ausgewertet werden, da sie durch äußere Referenz von umgebender Query (b) abhängig ist. Animation und Ergebnis dieses Beispiels (siehe Seite 73) 56

57 5.3.9 Abfragen mit Existenz-Quantor Sei q Ergebnis(menge) einer Subquery; q leer? 37. Suche Namen aller Angestellten, die keine Projektleiter sind. SELECT NAME FROM angestellte WHERE NOT EXISTS (SELECT P-LEITER FROM projekt WHERE P-LEITER = ANG-NR); Alternative möglich? q = q EXISTS q falsch wahr NOT EXISTS q wahr falsch Animation und Ergebnis dieses Beispiels (siehe Seite 74) 57

58 Mengenoperationen (1/3) Verknüpfung von Abfragen mit Mengenoperationen: Ergebnismengen müssen vereinigungskompatibel sein (Namen und Wertebereiche korrespondierender Spalten müssen übereinstimmen). Operationen: {UNION INTERSECT EXCEPT} [ALL] Wird ALL verwendet, dann arbeiten die Operationen mit uneigentlichen Tabellen, sonst mit eigentlichen Tabellen (keine Duplikate). 38. Nummern aller Angestellten, die in Karlsruhe wohnen oder dort Leiter eines Projektes sind SELECT ANG-NR FROM angestellte WHERE WOHNORT = Karlsruhe UNION SELECT P-LEITER as ANG-NR FROM projekt WHERE P-FILIALE = Karlsruhe ; Animation und Ergebnis dieses Beispiels (siehe Seite 75) 58

59 Mengenoperationen (2/3) 39 Nummern aller Angestellten, die an mehr als einem Projekt arbeiten und in Karlsruhe wohnen. SELECT ANG-NR FROM angestellte WHERE WOHNORT = Karlsruhe INTERSECT SELECT ANG-NR FROM ang-pro GROUP BY ANG-NR HAVING COUNT (ANG-NR) > 1; Animation und Ergebnis dieses Beispiels (siehe Seite 76)

60 Mengenoperationen (3/3) 40. Die Nummern aller Angestellten, deren Name mit M anfängt, die nicht Projektleiter sind. SELECT ANG-NR FROM angestellte WHERE NAME like M% EXCEPT SELECT P-LEITER as ANG-NR FROM projekt; Animation und Ergebnis dieses Beispiels (siehe Seite 77)

61 5 SQL Structured Query Language 5.1 Allgemeines zu SQL SQL-DLL: Definition eines Datenbankschemas SQL-DML: Abfragen in SQL (Query Language) SQL-DML: Mutationen in SQL (Insert, Update, Delete)

62 5.4 Die Mutationen (1 2) UPDATE UPDATE table SET column = expression [, column = expression ] [WHERE search condition]; Beispiel: UPDATE projekt SET P-LEITER = 3207, P-FILIALE = Mannheim WHERE P-NR = ; DELETE DELETE FROM table [WHERE search condition]; Beispiel: DELETE FROM ang-pro WHERE ANG-NR = 3190; 62

63 5.4 Die Mutationen (2 2) INSERT INSERT INTO table [(column [, column ])] VALUES (constant [, constant ]); oder INSERT INTO table [(column [, column ])] query; Beispiel: INSERT INTO angestellte (ANG-NR, NAME, WOHNORT, ABT-NR) VALUES (1717, Häberle, Stuttgart, 30); Annahme: Es existiert eine Tabelle angestellte_in_ka mit dem gleichen Aufbau wie angestellte : INSERT INTO angestellte_in_ka SELECT * FROM angestellte WHERE WOHNORT = Karlsruhe ; 63

64 ENDE Beenden 64

65 Beispiel für Natural Join SELECT FROM WHERE P-NR, a.ang-nr, NAME, WOHNORT, ABT-NR,PROZ-ARBZEIT angestellte a, ang-pro ap a.ang-nr=ap.ang-nr; ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Klein Mannheim Schmitt Heidelberg 35 kartesisches Produkt ANG-NR NAME WOHNORT ABT-NR P-NR ANG-NR PROZ-ARBZEIT 3115 Meyer Karlsruhe Meyer Karlsruhe Meyer Karlsruhe Meyer Karlsruhe Meyer Karlsruhe Klein Mannheim Klein Mannheim Klein Mannheim Klein Mannheim Klein Mannheim Schmitt Heidelberg Schmitt Heidelberg Schmitt Heidelberg Schmitt Heidelberg Schmitt Heidelberg P-NR ANG-NR PROZ-ARBZEIT Ergebnis: P-NR ANG- ABT- NAME WOHNORT NR NR Meyer Karlsruhe Meyer Karlsruhe Klein Mannheim Klein Mannheim Schmitt Heidelberg PROZ- ARBZEIT 65

66 Beispiel für Join mit Joinbedingung SELECT FROM WHERE P-NR, NAME angestellte a, ang-pro ap a.ang-nr=ap.ang-nr AND PROZ-ARBZEIT=50; ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Klein Mannheim Schmitt Heidelberg 35 (kartesisches Produkt) ANG-NR NAME WOHNORT ABT-NR P-NR ANG-NR PROZ-ARBZEIT 3115 Meyer Karlsruhe Meyer Karlsruhe Meyer Karlsruhe Meyer Karlsruhe Meyer Karlsruhe Klein Mannheim Klein Mannheim Klein Mannheim Klein Mannheim Klein Mannheim Schmitt Heidelberg Schmitt Heidelberg Schmitt Heidelberg Schmitt Heidelberg Schmitt Heidelberg P-NR ANG-NR PROZ-ARBZEIT Ergebnis: P-NR NAME Meyer Meyer 66

67 Beispiel für Abfragen mit Join (Spezialfall der Joinbed.: θ-join) SELECT FROM WHERE P-NR, NAME angestellte, projekt ANG-NR <> P-LEITER; ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Klein Mannheim Schmitt Heidelberg 35 (kartesisches Produkt) ANG-NR NAME WOHNORT ABT-NR P-NAME P-NR P-FILIALE P-LEITER 3115 Meyer Karlsruhe 35 p Karlsruhe Meyer Karlsruhe 35 p Karlsruhe Meyer Karlsruhe 35 p Heidelberg Meyer Karlsruhe 35 P Mannheim Klein Mannheim 32 p Karlsruhe Klein Mannheim 32 p Karlsruhe Klein Mannheim 32 p Heidelberg Klein Mannheim 32 P Mannheim Schmitt Heidelberg 35 p Karlsruhe Schmitt Heidelberg 35 p Karlsruhe Schmitt Heidelberg 35 p Heidelberg Schmitt Heidelberg 35 P Mannheim 2814 P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim 2814 Ergebnis: P-NR NAME Meyer Meyer Klein Klein Klein Schmitt Schmitt Schmitt 67

68 Beispiel für Join mit 3 Relationen SELECT FROM WHERE NAME, P-FILIALE angestellte a, ang-pro ap, projekt p a.ang-nr=ap.ang-nr AND ap.p-nr=p.p-nr; ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Klein Mannheim 32 (kartesisches Produkt) ANG-NR NAME WOHNORT ABT- P-NR ANG-NR PROZ- NR ARBZEIT 3115 Meyer Karlsruhe Meyer Karlsruhe Klein Mannheim Klein Mannheim P-NR ANG-NR PROZ-ARBZEIT (kartesische Produkt) ANG-NR NAME WOHNORT ABT- PROZ- P- P-NR ANG-NR NR ARBZEIT NAME P-NR P- P- FILIALE LEITER 3115 Meyer Karlsruhe p Karlsruhe Meyer Karlsruhe p Karlsruhe Meyer Karlsruhe p Karlsruhe Meyer Karlsruhe p Karlsruhe Klein Mannheim p Karlsruhe Klein Mannheim p Karlsruhe Klein Mannheim p Karlsruhe Klein Mannheim p Karlsruhe 3115 P- NAME P-NR P- P- FILIALE LEITER P Karlsruhe 3115 P Karlsruhe 3115 Ergebnis: NAME P-FILIALE Meyer Klein Karlsruhe Karlsruhe 68

69 Beispiel für Mehrfach geschachtelte Queries SELECT NAME FROM angestellte WHERE ANG-NR IN (SELECT ANG-NR FROM ang-pro WHERE P-NR IN projekt (#=k) P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim 2814 (SELECT P-NR FROM projekt WHERE P-FILIALE = Karlsruhe )); angestellte (#=n) ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 Ergebnis: NAME Meyer Müller Klein Maus Mayerlein Krämer Meier Schuster ang-pro (#=m) P-NR ANG-NR PROZ-ARBZEIT

70 Beispiel für Correlated subquery (äußere Referenz) SELECT DISTINCT P-FILIALE FROM projekt a WHERE 1 < (SELECT COUNT (*) FROM projekt b WHERE b.p-filiale = a.p-filiale); projekt a P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim 2814 Ergebnis: P-FILIALE Kalrsruhe projekt b P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe P Heidelberg P Mannheim

71 Beispiel für Abfragen mit Existenz-Quantor SELECT NAME FROM angestellte WHERE NOT EXISTS (SELECT P-LEITER FROM projekt WHERE P-LEITER = ANG-NR); projekt P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim 2814 Ergebnis: NAME Müller Maus Groß Mayerlein Müller Schulz Krämer Meier Schuster angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 71

72 Beispiel für Mengenoperationen (Union) SELECT ANG-NR FROM angestellte WHERE WOHNORT = Karlsruhe UNION SELECT P-LEITER as ANG-NR FROM projekt WHERE P-FILIALE = Karlsruhe ; angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 Ergebnis: ANG-NR Zwischenergebnis: Zwischenergebnis: ANG-NR Zwischenergebnis: Zwischenergebnis: ANG-NR projekt P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim

73 Beispiel für Mengenoperationen (INTERSECT) SELECT ANG-NR FROM angestellte WHERE WOHNORT = Karlsruhe INTERSECT SELECT ANG-NR FROM ang-pro GROUP BY ANG-NR HAVING COUNT (ANG-NR) > 1; angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 Ergebnis: ANG-NR Zwischenergebnis: Zwischenergebnis: ANG-NR ang-pro P-NR ANG-NR PROZ-ARBZEIT Zwischen- Zwischenergebnis: ergebnis: ANG-NR

74 Beispiel für Mengenoperationen (EXCEPT) SELECT ANG-NR FROM angestellte WHERE NAME like M% EXCEPT SELECT P-LEITER as ANG-NR FROM projekt; angestellte ANG-NR NAME WOHNORT ABT-NR 3115 Meyer Karlsruhe Müller Mannheim Klein Mannheim Maus Karlsruhe Groß Karlsruhe Schmitt Heidelberg Mayerlein Bruchsal Müller Karlsruhe Schulz Bruchsal Krämer Ludwigshafen Meier Pforzheim Schuster Worms 31 Ergebnis: ANG-NR projekt P-NAME P-NR P-FILIALE P-LEITER P Karlsruhe 3115 P Karlsruhe 3115 P Heidelberg 1324 P Mannheim

SQL Structured Query Language

SQL Structured Query Language SQL Structured Query Language LV Datenorientierte Systemanalyse, WS 2014/15 Dr. Walter Ebner, Institut für Informationswirtschaft Wirtschaftsuniversität Wien SQL Structured Query

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R VII-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

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

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

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

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

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

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) Albert Weichselbraun Member of the University of Applied Sciences Eastern Switzerland (FHO) page 1 Agenda 1. Einleitung 2. Data Definition

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

Labor 3 - Datenbank mit MySQL

Labor 3 - Datenbank mit MySQL Labor 3 - Datenbank mit MySQL Hinweis: Dieses Labor entstand z.t. aus Scripten von Prof. Dr. U. Bannier. 1. Starten des MySQL-Systems MySQL ist ein unter www.mysql.com kostenlos erhältliches Datenbankmanagementsystem.

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

SQL. Fortgeschrittene Konzepte Auszug

SQL. Fortgeschrittene Konzepte Auszug SQL Fortgeschrittene Konzepte Auszug Levels SQL92 Unterteilung in 3 Levels Entry Level (i.w. SQL89) wird von nahezu allen DBS Herstellern unterstützt Intermediate Level Full Level SQL DML 2-2 SQL92 behebt

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

Mehr

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

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language) Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data

Mehr

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL Datenmodifikation mit SQL Folie 45 SQL - Datenmodifikation Einfügen INSERT INTO Relation [(Attribut, Attribut,...)] VALUES (Wert, Wert,...) INSERT INTO Relation [(Attribut, Attribut,...)] SFW-Anfrage Ändern

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

SQL: statische Integrität

SQL: statische Integrität SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen

Mehr

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

Mehr

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY. SELECT - Der Grundbefehl zur Auswahl von Daten Die SELECT-Anweisung fragt Daten aus einer Datenbank ab und stellt diese in einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, eine Menge von

Mehr

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

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

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

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL Relationales Modell: SQLDDL SQL als Definitionssprache SQLDDL umfaßt alle Klauseln von SQL, die mit Definition von Typen Wertebereichen Relationenschemata Integritätsbedingungen zu tun haben Externe Ebene

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B

Mehr

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Fahren fort mit SQL Befehlen. Bilden Relationenalgebra auf SQL ab. So Umsetzung von Anfragen an die DB (bzw. Tabellen) möglich. SELECT

Mehr

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis. SQL Lehr- und Forschungseinheit Datenbanken und Informationssysteme Ziele Grundlagen von SQL Beziehung zur relationalen Algebra SELECT, FROM, WHERE Joins ORDER BY Aggregatfunktionen Lehr- und Forschungseinheit

Mehr

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt DBS ::: SERIE 5 Die Relation produkt enthält Hersteller, Modellnummer und Produktgattung (pc, laptop oder drucker aller Produkte. Die Modellnummer ist (der Einfachheit halber eindeutig für alle Hersteller

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

SQL Performance - Tips Do's & Don'ts

SQL Performance - Tips Do's & Don'ts SQL Performance - Tips Do's & Don'ts S.K. Consulting GmbH, München DB2_SQL_PERF - 1 - Inhaltsverzeichnis I. Richtlinien bei der Verwendung von SQL 1.1. In Programmen "verbotene" SQL- Anweisungen 1.2 SQL

Mehr

SQL und MySQL. Kristian Köhntopp

SQL und MySQL. Kristian Köhntopp SQL und MySQL Kristian Köhntopp Wieso SQL? Datenbanken seit den frühen 1950er Jahren: Hierarchische Datenbanken Netzwerkdatenbanken Relationale Datenbanken = SQL Relational? 10 9 8 7 6 f(y) := y = x r(y)

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

SQL. Abfragesprache Datenmanipulation - DML

SQL. Abfragesprache Datenmanipulation - DML SQL Abfragesprache Datenmanipulation - DML SQL DML-Operationen DML = Data Manipulation Language Sprache zur Veränderung der Daten Operationen Daten selektieren Daten einfügen Daten ändern Daten löschen

Mehr

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik Beispielaufgaben Informationssysteme erstellt von Fabian Rump zur IS Vorlesung 2009/10 1 Multiple Choice Aussage richtig falsch Eine SQL-Abfrage beginnt immer mit dem Schlüsselwort SELECT Eine Datenbank

Mehr

Übersicht der wichtigsten MySQL-Befehle

Übersicht der wichtigsten MySQL-Befehle Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit

Mehr

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester

Mehr

Beispiel 1: Filmdatenbank

Beispiel 1: Filmdatenbank Beispiel 1: Filmdatenbank Die Filmdatenbank hat drei Tabellen (ACTOR, MOVIE, PLAYED) Aufgabe 1: Erstelle mit Hilfe der SQL-DDL die drei Tabellen und die Datenbank (MOVIEDB) ACTOR (ActorID, Name, Birthday,

Mehr

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel Anwendungsentwicklung Datenbanken SQL Stefan Goebel SQL Structured Query Language strukturierte Abfragesprache von ANSI und ISO standardisiert deklarativ bedeutet was statt wie SQL beschreibt, welche Daten

Mehr

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

5.3 Datenänderung/-zugriff mit SQL (DML) 5.3 Datenänderung/-zugriff mit SQL (DML) Hinweis: - DML-Anweisungen sind mengenorientiert - Mit einer Anweisungen kann mehr als ein Tupel eingefügt, geändert, gelöscht oder gelesen werden Benutzungs- und

Mehr

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datumsangaben, enthält mindestens Jahr, Monat, Tag Datenbanken mit SQL Informatik - Sprenger Häufig wird mit Tabellenkalkulationen gearbeitet, obwohl der Einsatz von Datenbanken sinnvoller ist. Tabellenkalkulationen wie Microsoft Excel oder LibreOffice

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VL Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

7. Übung - Datenbanken

7. Übung - Datenbanken 7. Übung - Datenbanken Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: DBS a Was ist die Kernaufgabe von Datenbanksystemen? b Beschreiben Sie kurz die Abstraktionsebenen

Mehr

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten. Einführung SQL 2010 Niko Becker Mit unseren Übungen zu ACCESS können Sie Aufbau und Struktur einer relationalen Datenbank kennenlernen. Wir zeigen Ihnen wie Sie Tabellen, Formulare und Berichte erstellen

Mehr

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester 1999. CREATE DOMAIN KennzeichenDomain AS VARCHAR(9);

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester 1999. CREATE DOMAIN KennzeichenDomain AS VARCHAR(9); Institut für Angewandte Informatik AIFB und Formale Beschreibungsverfahren Universität Karlsruhe (TH) Prof. Dr. W. Stucky U. Schmidle Tel.: 0721 / 608-3812, 3509 Fax.: 0721 / 693717 e-mail: stucky schmidle

Mehr

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

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle. Seminar 2 SQL - DML(Data Manipulation Language) und DDL(Data Definition Language) Befehle. DML Befehle Aggregatfunktionen - werden auf eine Menge von Tupeln angewendet - Verdichtung einzelner Tupeln yu

Mehr

Bibliografische Informationen digitalisiert durch http://d-nb.info/995021198

Bibliografische Informationen digitalisiert durch http://d-nb.info/995021198 Auf einen Blick 1 Einleitung 15 2 Datenbankentwurf 23 3 Datenbankdefinition 43 4 Datensätze einfügen (INSERT INTO) 95 5 Daten abfragen (SELECT) 99 6 Daten aus mehreren Tabellen abfragen (JOIN) 143 7 Unterabfragen

Mehr

Kapitel 3: Datenbanksysteme

Kapitel 3: Datenbanksysteme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2015 Kapitel 3: Datenbanksysteme Vorlesung:

Mehr

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung Informa=onssysteme Sommersemester 2015 6. Sichten, Integrität und Zugriffskontrolle Vorlesung "Informa=onssysteme" Sommersemester 2015 Überblick Sichten Integritätsbedingungen Zugriffsrechte SQL- Schema und SQL- Katalog Das Informa=onsschema

Mehr

SQL (Structured Query Language) Schemata Datentypen

SQL (Structured Query Language) Schemata Datentypen 2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente

Mehr

Abfragen (Queries, Subqueries)

Abfragen (Queries, Subqueries) Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl

Mehr

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

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1) Vorlesung #3 SQL (Teil 1) Fahrplan Wiederholung/Zusammenfassung Relationales Modell Relationale Algebra Relationenkalkül Geschichte der Sprache SQL SQL DDL (CREATE TABLE...) SQL DML (INSERT, UPDATE, DELETE)

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2 SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R IV-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

MySQL: Einfaches Rechnen. www.informatikzentrale.de

MySQL: Einfaches Rechnen. www.informatikzentrale.de MySQL: Einfaches Rechnen Vorweg: Der Merksatz Warum geht Herbert oft laufen? Vorweg: Der Merksatz Warum geht Herbert oft laufen?...... WHERE... GROUP BY... HAVING... ORDER BY... LIMIT Beispieldatenbank

Mehr

Abfragen: Grundbausteine

Abfragen: Grundbausteine Abfragen: Grundbausteine Abfragen sollen gezielt Teile der Information wiedergeben. Das Ergebnis einer solchen Operation ist eine. Der Aufbau der Ergebnistabelle wird durch zwei Grundverfahren festgelegt:

Mehr

Kapitel DB:VI (Fortsetzung)

Kapitel DB:VI (Fortsetzung) Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Datenbanksysteme Kapitel: SQL Data Definition Language

Datenbanksysteme Kapitel: SQL Data Definition Language Datenbanksysteme Kapitel: SQL Data Definition Language Prof. Dr. Peter Chamoni Mercator School of Management Lehrstuhl für Wirtschaftsinformatik, insb. Business Intelligence Prof. Dr. Peter Chamoni - Prof.

Mehr

4. Datenbanksprache SQL

4. Datenbanksprache SQL 4. Datenbanksprache SQL Standard-Sprache für das Arbeiten mit relationalen Datenbanken: Structured Query Language Datendefinition: Anlegen, Ändern und Löschen von Datenbankstrukturen Datenmanipulation:

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Blatt Nr. 7 Übung zur Vorlesung Grundlagen: Datenbanken im WS13/14 Henrik Mühe (muehe@in.tum.de) http://www-db.in.tum.de/teaching/ws1314/dbsys/exercises/

Mehr

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL XAMPP-Systeme Teil 3: My SQL Daten Eine Wesenseigenschaft von Menschen ist es, Informationen, in welcher Form sie auch immer auftreten, zu ordnen, zu klassifizieren und in strukturierter Form abzulegen.

Mehr

Konstante Relationen

Konstante Relationen Konstante Relationen values-syntax erzeugt konstante Relation values ( [, Konstante] * )[, ( [, Konstante] * )]* Beispiel values (1, eins ), (2, zwei ), (3, drei ); Resultat ist eine

Mehr

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007 6. Übung zur Vorlesung Datenbanken im Sommersemester 2007 mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007 Aufgabe 1: Rekursion Betrachten Sie die folgende Tabelle

Mehr

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

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) SQL DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) DML(Data Manipulation Language) SQL Abfragen Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro

Mehr

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007. Name: Note:

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007. Name: Note: 1 Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007 Name: Note: Nr. Aufgaben Max. Punkte Erreichte Punkte 1 Grundlagen ~ 10% Vgl. Hinweis unten 2 Integrität, Procedures, Triggers, Sichten ~ 20%

Mehr

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

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

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

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr Raum: LF 230 Bearbeitung: 9.-11. Mai 2005 Datum Gruppe Vorbereitung Präsenz Aktuelle Informationen unter: http://www.is.informatik.uni-duisburg.de/courses/dbp_ss03/ Tabellen in IBM DB2 Tabellen Eine relationale

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

3. Das Relationale Datenmodell

3. Das Relationale Datenmodell 3. Das Relationale Datenmodell Das Relationale Datenmodell geht zurück auf Codd (1970): E. F. Codd: A Relational Model of Data for Large Shared Data Banks. Comm. of the ACM 13(6): 377-387(1970) DBMS wie

Mehr

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

4.14.3 Bedingungen über Werte. 4.14.4 Statische Integrität. CHECK-Klausel 4.14.3 Bedingungen über Werte 4.14.4 Statische Integrität Zu jeder Tabelle werden typischerweise ein Primärschlüssel und möglicherweise weitere Schlüssel festgelegt (UNIQUE-Klausel). In jeder Instanz zu

Mehr

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

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung 6. Datenintegrität Motivation Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung nur sinnvolle Attributwerte (z.b. keine negativen Semester) Abhängigkeiten

Mehr

Vorlesung Datenbankmanagementsysteme

Vorlesung Datenbankmanagementsysteme Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse & Einführung Online Analytical Processing (OLAP) (auf Basis von Oracle) Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse M. Lange, S.

Mehr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Übung, Sommersemester 2013 22. April 2013 - MySQL Sebastian Cuy sebastian.cuy@uni-koeln.de Datenbanken Was sind eigentlich Datenbanken? Eine

Mehr

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

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

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:

Mehr

Referenzielle Integrität SQL

Referenzielle Integrität SQL Referenzielle Integrität in SQL aus Referential Integrity Is Important For Databases von Michael Blaha (Modelsoft Consulting Corp) VII-45 Referenzielle Integrität Definition: Referenzielle Integrität bedeutet

Mehr

SQL als Zugriffssprache

SQL als Zugriffssprache SQL als Zugriffssprache Der Select Befehl: Aufbau Select- und From-Klausel Where-Klausel Group-By- und Having-Klausel Union Join-Verbindung Order-By-Klausel Der Update-Befehl Der Delete-Befehl Der Insert-Befehl

Mehr

Vorlesung Dokumentation und Datenbanken Klausur

Vorlesung Dokumentation und Datenbanken Klausur Dr. Stefan Brass 5. Februar 2002 Institut für Informatik Universität Giessen Vorlesung Dokumentation und Datenbanken Klausur Name: Geburtsdatum: Geburtsort: (Diese Daten werden zur Ausstellung des Leistungsnachweises

Mehr

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

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger

Mehr

Informatik Datenbanken SQL-Einführung

Informatik Datenbanken SQL-Einführung Informatik Datenbanken SQL-Einführung Gierhardt Inhaltsverzeichnis 1 Vorbemerkungen 1 2 Auswahl-Abfragen mit SELECT 2 2.1 Selektion...................................... 2 2.2 Projektion.....................................

Mehr

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5. Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.1 im Internet: www.datenbanken-programmierung.de... 3.0 SQL nach

Mehr

SQL - Übungen Bearbeitung der Datenbank Personal (1)

SQL - Übungen Bearbeitung der Datenbank Personal (1) Bearbeitung der Datenbank Personal (1) 1. Abfragen einer einzigen Tabelle 1.1. Zeigen Sie alle Informationen an, die über die Kinder der Mitarbeiter gespeichert sind. 1.2. Zeigen Sie aus der Tabelle stelle

Mehr

Kurzanleitung für Umsteiger von DataEase. www.datacool.net

Kurzanleitung für Umsteiger von DataEase. www.datacool.net DataCool Kurzanleitung für Umsteiger von DataEase www.datacool.net Copyright 2009 Ingenieurbüro Neuhahn GmbH Tengstr. 3 85055 Ingolstadt DataCool ist ein eingetragenes Warenzeichen (Registernummer 30239297)

Mehr

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join Parsen der Anfrage (SQL) Transformation in eine Standardform (Relationenalgebra) Logische Optimierung Transformation in alternative Zugriffspläne, Physische Optimierung Ausführung des gewählten Zugriffsplans

Mehr

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung Technische Universität München WS 2003/04, Fakultät für Informatik Datenbanksysteme I Prof. R. Bayer, Ph.D. Lösungsblatt 8 Dipl.-Inform. Michael Bauer Dr. Gabi Höfling 12.01. 2004 Integritätsbedingungen

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Informationen aus der Datenbank lesen Klasse SQLiteDatabase enthält die Methode query(..) 1. Parameter: Tabellenname

Mehr

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

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7 1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern

Mehr

dbis Praktikum DBS I SQL Teil 2

dbis Praktikum DBS I SQL Teil 2 SQL Teil 2 Übersicht Fortgeschrittene SQL-Konstrukte GROUP BY HAVING UNION / INTERSECT / EXCEPT SOME / ALL / ANY IN / EXISTS CREATE TABLE INSERT / UPDATE / DELETE 2 SELECT Syntax SELECT FROM [WHERE [GROUP

Mehr

Kalkülteil. Structured Query Language, SQL. 1. Semantik: erzeuge alle Kombinationen von Tupeln

Kalkülteil. Structured Query Language, SQL. 1. Semantik: erzeuge alle Kombinationen von Tupeln Structured Query Language, SQL vom American National Standards Institute, ANSI, genormte Datenbanksprache. enthält eine Teilsprache, die eine relationale Anfragesprache ist, Mischung von tupelorientierten

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt

Mehr

ACCESS SQL ACCESS SQL

ACCESS SQL ACCESS SQL ACCESS SQL Datenbankabfragen mit der Query-Language ACCESS SQL Datenbankpraxis mit Access 34 Was ist SQL Structured Query Language Bestehend aus Datendefinitionssprache (DDL) Datenmanipulationssprache

Mehr

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

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

Mehr

Datenbanken. Sommersemester 2010 Probeklausur

Datenbanken. Sommersemester 2010 Probeklausur Prof. Dr. V. Linnemann Christoph Reinke Universität zu Lübeck Institut für Informationssysteme Lübeck, den 29. Juli 2010 Datenbanken Sommersemester 2010 Probeklausur Hinweise: Es ist sinnvoll, die Aufgaben

Mehr

DB1. DB SQL-DQL 1 Mario Neugebauer

DB1. DB SQL-DQL 1 Mario Neugebauer DB1 DB1-12 041-SQL-DQL 1 Mario Neugebauer Einführung Informationsmodellierung Relationales Datenbankmodell Datenbanksprache SQL Einführung Daten-Abfrage-Sprache - DQL Daten-Definitions-Sprache - DDL Daten-Manipulations-Sprache

Mehr

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

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp 5/14/18 Grundlagen von SQL (Structured Query Language) Datenbanksprache Befehle Datenbanken und Tabellen erstellen/verändern Daten manipulieren (eingeben, ändern, löschen) Datenbank durchsuchen (Queries

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 7a: Structured Query Language (SQL) MySQL 5.0 (enthalten in: http://www.apachefriends.org/de/xampp.html)

Mehr