5 SQL Structured Query Language
|
|
- Gesche Althaus
- vor 8 Jahren
- Abrufe
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 LV Datenorientierte Systemanalyse, WS 2014/15 Dr. Walter Ebner, Institut für Informationswirtschaft Wirtschaftsuniversität Wien SQL Structured Query
MehrSQL 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
MehrEinfü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
MehrSQL 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-
MehrMengenvergleiche: 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
MehrStructured 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
MehrInformatik 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
MehrIV. 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.
MehrSructred 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
MehrLabor 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.
MehrNachtrag: 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
MehrSQL. 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
MehrSQL. 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
MehrEinfü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
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
MehrSQL 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
MehrDATENBANKEN 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.
MehrSQL: 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
MehrAufbau 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
MehrDetails 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
MehrSQL 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
MehrRelationales 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
MehrISU 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
MehrViews 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
MehrUniversitä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
MehrSQL 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
MehrSQL. 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
MehrDBS ::: 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
MehrDatenbanken 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,
MehrSQL 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
MehrSQL 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)
MehrWiederholung VU Datenmodellierung
Wiederholung VU Datenmodellierung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester
MehrSQL. 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
MehrDas 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 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
MehrDynamisches 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
MehrBeispiel 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,
MehrAnwendungsentwicklung 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
Mehr5.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
MehrDatumsangaben, 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
MehrWiederholung VU Datenmodellierung
Wiederholung VU Datenmodellierung VL Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester
Mehr7. Ü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
MehrEine 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
MehrDatenbank- 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
MehrSeminar 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
MehrBibliografische 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
MehrKapitel 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:
Mehr6. 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
MehrSQL (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
MehrAbfragen (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
MehrWS 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)
MehrDie 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
MehrSQL 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
MehrMySQL: 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
MehrAbfragen: 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:
MehrKapitel 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
MehrOracle: 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
MehrDatenbanksysteme 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.
Mehr4. 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:
MehrTU 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/
MehrXAMPP-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.
MehrKonstante Relationen
Konstante Relationen values-syntax erzeugt konstante Relation values ( [, Konstante] * )[, ( [, Konstante] * )]* Beispiel values (1, eins ), (2, zwei ), (3, drei ); Resultat ist eine
Mehrmit 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
MehrSQL. 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
MehrModul 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%
MehrMySQL-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
MehrUni 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
MehrSQL-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
Mehr3. 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
Mehr4.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
MehrSemantische 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
MehrVorlesung Datenbankmanagementsysteme
Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse & Einführung Online Analytical Processing (OLAP) (auf Basis von Oracle) Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse M. Lange, S.
MehrDatenbanktechnologie 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
MehrUnterabfragen (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
MehrSQL. 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:
MehrReferenzielle 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
MehrSQL 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
MehrVorlesung 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
MehrDipl. 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
MehrInformatik 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.....................................
MehrRelationale 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
MehrLeseprobe: 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
MehrSQL - Ü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
MehrKurzanleitung 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)
MehrEinleitung 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
MehrIntegritä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
MehrProgrammieren 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
Mehr3 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
Mehrdbis 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
MehrKalkü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
MehrDer 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.
MehrWhitepaper. 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
MehrACCESS 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
MehrGrundlagen 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)
MehrDatenbanken. 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
MehrDB1. 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
Mehr5/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
MehrDatenbanksysteme 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