Kapitel 2: Einstieg in SQL



Ähnliche Dokumente
Kapitel 5: Der SQL-Standard

4.5 Anfragen mit Mengenoperatoren

Kapitel 4: Entwurf der Relationsschemata

Kapitel 3: Entity-Relationship-Modell

Kapitel 6: SQL und XML

Kapitel 4: Konzeptueller Datenbankentwurf

Einführung in die Wirtschaftsinformatik Kapitel 4: Relationale Datenbanksprachen: SQL

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

SQL. Structured Query Language

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar

Datenbanksysteme Kapitel 5: SQL - Grundlagen

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

Datenbanksysteme Kapitel 5: SQL Grundlagen Teil 1

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

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

ACCESS SQL ACCESS SQL

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

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

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

Abfragen: Grundbausteine

4.14 Integrität und Trigger

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

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

Kapitel 3: Datenbanksysteme

Schlüssel. Definition: Ein Schlüssel (key) einer Relation r(r) ist eine Til Teilmenge K von R, so dass für je zwei verschiedene Tupeln t 1

Es geht also im die SQL Data Manipulation Language.

SQL als Zugriffssprache

Datenmanagement I SoSe 2006 Aufgabenblatt 4

Kapitel 1: Einführung 1.1 Datenbanken?

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

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

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

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

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

Übersicht der wichtigsten MySQL-Befehle

Beispiel zur referentiellen Integrität

Datenbanksysteme Kapitel 5: SQL Data Manipulation Language

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

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

Wirtschaftsinformatik 7a: Datenbanken. Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte

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

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

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

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

Datenbanken im WI-Unterricht mit

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

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

Wiederholung VU Datenmodellierung

Verbunde (Joins) und mengentheoretische Operationen in SQL

Wiederholung VU Datenmodellierung

Verbunde (Joins) und mengentheoretische Operationen in SQL

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Vorlesung Datenbankmanagementsysteme

DATENBANKSYSTEME: SQL

C++ Anwendungskurs Tag 4: Datenbanken Daniela Horn Institut für Neuroinformatik Real-time Computer Vision

Datenbanksysteme I Aufgabenblatt 4: SQL

Kapitel 3: Die Relationale Algebra

Informatik 12 Datenbanken SQL-Einführung

SQL: Weitere Funktionen

Einführung in die Wirtschaftsinformatik Akademisches Jahr 2006/07 Prof. Andreas Meier Assistentin: Andreea Ionas. SQL-Grundlagen

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

Übung Datenbanken in der Praxis. Anfragen an Datenbanken mit SQL

Übung 3. Interaktive Abfragen auf eine SQL-Datenbank. Prof. Dr. Andreas Schmietendorf. Wirtschaftsinformatik

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

Kapitel 7: Referentielle Integrität

Geoinformation Abbildung auf Tabellen

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

Vorlesung Informatik II

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Kapitel 5: Sortieren, Gruppieren und Views in SQL

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

Abfragen (Queries, Subqueries)

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

Transkript:

Kapitel 2: Einstieg in SQL 2. Einstieg in SQL 2. SQL (Structured Query Language) ist die in der Praxis am weitesten verbreitete Datenbanksprache für relationale Datenbanken. Die Historie von SQL geht zurück bis 1974, die Anfangszeit der Entwicklung relationaler Datenbanken. Alles begann mit SEQUEL, der Structured English Query Language. Der Sprachumfang von SQL ist einer permanenten Weiterentwicklung und Standardisierung unterworfen. Derzeit relevant sind der Stand von 1992, 1999, 2003 und 2008 entsprechend bezeichnet mit SQL-92, SQL:1999, SQL:2003 und SQL:2008. Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 1

2. Einstieg in SQL 2. Ein Anfrageausdruck in SQL besteht aus einer SELECT-Klausel, gefolgt von einer FROM-Klausel, gefolgt von einer WHERE-Klausel. SFW-Ausdruck SELECT A 1,..., A n (...Attribute der Ergebnisrelation) FROM R 1,..., R m (...benötigte Relationen) WHERE F (...Auswahlbedingung) Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 2

2.1 Beispiels-Datenbank Mondial-Datenbank Teil 1 2. Einstieg in SQL 2.1. Beispiels-Datenbank LName Land LCode HStadt Fläche Austria A Vienna 84 Egypt ET Cairo 1001 France F Paris 547 Germany D Berlin 357 Italy I Rome 301 Russia RU Moscow 17075 Switzerland CH Bern 41 Turkey TR Ankara 779 PName Provinz LCode Fläche Baden D 15 Bavaria D 70,5 Berlin D 0,9 Ile de France F 12 Franken D null Lazio I 17 Stadt SName LCode PName Einwohner LGrad BGrad Berlin D Berlin 3472 13,2 52,45 Freiburg D Baden 198 7,51 47,59 Karlsruhe D Baden 277 8,24 49,03 Munich D Bavaria 1244 11,56 48,15 Nuremberg D Franken 495 11,04 49,27 Paris F Ile de France 2125 2,48 48,81 Rome I Lazio 2546 12,6 41,8 Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 3

2. Einstieg in SQL 2.1. Beispiels-Datenbank Mondial-Datenbank Teil 2 Lage LCode Kontinent Prozent D Europe 100 F Europe 100 TR Asia 68 TR Europe 32 ET Africa 90 ET Asia 10 RU Asia 80 RU Europe 20 Mitglied LCode Organisation Art A EU member D EU member D WEU member ET UN member I EU member I NAM guest TR UN member TR CERN observer Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 4

2.2 Einfache Anfragen 2. Einstieg in SQL 2.2. Einfache Anfragen......... Anfragen über einer Relation: gesamter Inhalt. Gib den vollständigen Inhalt der Tabelle Stadt. SELECT * FROM Stadt Stadt SName LCode PName Einwohner LGrad BGrad Berlin D Berlin 3472 13,2 52,45 Freiburg D Baden 198 7,51 47,59 Karlsruhe D Baden 277 8,24 49,03 Munich D Bavaria 1244 11,56 48,15 Nuremberg D Franken 495 11,04 49,27 Paris F Ile de France 2125 2,48 48,81 Rome I Lazio 2546 12,6 41,8 Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 5

2. Einstieg in SQL 2.2. Einfache Anfragen......... Anfragen über einer Relation: einzelne Spalten. In welchen Provinzen liegen die Städte der Tabelle Stadt? SELECT PName FROM Stadt PName Berlin Baden Baden Bavaria Franken Ile de France Lazio In welchen unterschiedlichen Provinzen liegen die Städte der Tabelle Stadt? SELECT DISTINCT PName FROM Stadt PName Berlin Baden Bavaria Franken Ile de France Lazio Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 6

2. Einstieg in SQL 2.2. Einfache Anfragen......... Anfragen über einer Relation: einzelne Zeilen. Stadt SName LCode PName Einwohner LGrad BGrad Berlin D Berlin 3472 13,2 52,45 Freiburg D Baden 198 7,51 47,59 Karlsruhe D Baden 277 8,24 49,03 Munich D Bavaria 1244 11,56 48,15 Nuremberg D Franken 495 11,04 49,27 Paris F Ile de France 2125 2,48 48,81 Rome I Lazio 2546 12,6 41,8 Wie heißen die Städte, die mehr als 1 Mio. Einwohner haben? SELECT * FROM Stadt WHERE Einwohner > 1000 Stadt SName LCode PName Einwohner LGrad BGrad Berlin D Berlin 3472 13,2 52,45 Munich D Bavaria 1244 11,56 48,15 Paris F Ile de France 2125 2,48 48,81 Rome I Lazio 2546 12,6 41,8 Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 7

2. Einstieg in SQL 2.2. Einfache Anfragen......... Anfragen über einer Relation: Pattern Matching (a). Land LName LCode HStadt Fläche Austria A Vienna 84 Egypt ET Cairo 1001 France F Paris 547 Germany D Berlin 357 Italy I Rome 301 Russia RU Moscow 17075 Switzerland CH Bern 41 Turkey TR Ankara 779 Erstelle eine Namensliste der Länder, deren Namen mit G anfängt oder mit y aufhört? SELECT LName FROM Land WHERE LName LIKE G% OR LName LIKE %y LName Germany Italy Turkey Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 8

2. Einstieg in SQL 2.2. Einfache Anfragen......... Anfragen über einer Relation: Pattern Matching (b). Land LName LCode HStadt Fläche Austria A Vienna 84 Egypt ET Cairo 1001 France F Paris 547 Germany D Berlin 357 Italy I Rome 301 Russia RU Moscow 17075 Switzerland CH Bern 41 Turkey TR Ankara 779 Erstelle eine Namensliste der Länder, deren dritter Buchstabe des Namen y ist? SELECT LName FROM Land WHERE LName LIKE y% LName Egypt Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 9

......... Anfragen über mehreren Relationen. Land LName LCode HStadt Fläche Austria A Vienna 84 Egypt ET Cairo 1001 France F Paris 547 Germany D Berlin 357 Italy I Rome 301 Russia RU Moscow 17075 Switzerland CH Bern 41 Turkey TR Ankara 779 2. Einstieg in SQL 2.2. Einfache Anfragen Stadt SName LCode PName Einwohner LGrad BGrad Berlin D Berlin 3472 13,2 52,45 Freiburg D Baden 198 7,51 47,59 Karlsruhe D Baden 277 8,24 49,03 Munich D Bavaria 1244 11,56 48,15 Nuremberg D Franken 495 11,04 49,27 Paris F Ile de France 2125 2,48 48,81 Rome I Lazio 2546 12,6 41,8 Gib zu jedem Land die zugehörigen Städte an. SELECT DISTINCT Land.LName AS Land, Stadt.SName AS Stadt FROM Land, Stadt WHERE Land.LCode = Stadt.LCode Land Stadt Germany Berlin Germany Freiburg Germany Karlsruhe Germany Munich Germany Nuremberg France Paris Italy Rome Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 10

2. Einstieg in SQL 2.2. Einfache Anfragen Land LName LCode HStadt Fläche Austria A Vienna 84 Egypt ET Cairo 1001 France F Paris 547 Germany D Berlin 357 Italy I Rome 301 Russia RU Moscow 17075 Switzerland CH Bern 41 Turkey TR Ankara 779 Stadt SName LCode PName Einwohner LGrad BGrad Berlin D Berlin 3472 13,2 52,45 Freiburg D Baden 198 7,51 47,59 Karlsruhe D Baden 277 8,24 49,03 Munich D Bavaria 1244 11,56 48,15 Nuremberg D Franken 495 11,04 49,27 Paris F Ile de France 2125 2,48 48,81 Rome I Lazio 2546 12,6 41,8 = Land Stadt Germany Berlin Germany Freiburg Germany Karlsruhe Germany Munich Germany Nuremberg France Paris Italy Rome Gib zu jedem Land die zugehörigen Städte an. SELECT DISTINCT Land.LName AS Land, Stadt.SName AS Stadt FROM Land, Stadt WHERE Land.LCode = Stadt.LCode intuitive deklarative Semantik Das Ergebnis besteht aus denjenigen Tupeln des kartesische Produktes Land Stadt, die die Bedingung der WHERE-Klausel erfüllen, wobei nur die Werte der Attribute der SELECT-Klausel angegeben werden. Algorithmus (nested-loop-semantik) FOR each Tupel t 1 in Relation Land DO FOR each Tupel t 2 in Relation Stadt DO IF Die WHERE-Klausel ist erfüllt nach Ersetzen der Attributnamen Land.LCode, Stadt.LCode durch die entsprechenden Werte der gerade betrachteten Tupel t 1, t 2, THEN Bilde ein Antwort-Tupel aus den Werten der in der SELECT-Klausel angegebenen Attributen Land.LName, Stadt.SName dieser Tupel t 1, t 2. Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 11

2. Einstieg in SQL 2.2. Einfache Anfragen... Verwende optionale Korrelationsnamen. SELECT DISTINCT S.SName, L.LName FROM Stadt S, Land L WHERE S.LCode = L.LCode Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 12

2. Einstieg in SQL 2.2. Einfache Anfragen......... Anfragen mehrmals über dieselbe Relation. Lage LCode Kontinent Prozent D Europe 100 F Europe 100 TR Asia 68 TR Europe 32 ET Africa 90 ET Asia 10 RU Asia 80 RU Europe 20 Bestimme alle Paare von Ländern, die im selben Kontinent liegen. SELECT DISTINCT L1.LCode AS Land1, L2.LCode AS Land2 FROM Lage L1, Lage L2 WHERE L1.Kontinent = L2.Kontinent AND L1.LCode < L2.LCode Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 13

2. Einstieg in SQL 2.2. Einfache Anfragen (1) FROM Lage L1, Lage L2 Lage L1 (8 Tupel) Lage L2 (8 Tupel) LCode Kontinent Prozent LCode Kontinent Prozent D Europe 100 F Europe 100 TR Asia 68 TR Europe 32 ET Africa 90 ET Asia 10 RU Asia 80 RU Europe 20 D Europe 100 F Europe 100 TR Asia 68 TR Europe 32 ET Africa 90 ET Asia 10 RU Asia 80 RU Europe 20 = L 1 L 2 (64 Tupel) L1.LCode L1.Kontinent L1.Prozent L2.LCode L2.Kontinent L2.Prozent D Europe 100 D Europe 100 D Europe 100 F Europe 100.................. D Europe 100 RU Asia 80.................. RU Asia 20 D Europe 100.................. RU Europe 20 RU Europe 20 Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 14

(2) FROM Lage L1, Lage L2 WHERE L1.Kontinent = L2.Kontinent 2. Einstieg in SQL 2.2. Einfache Anfragen L 1 L 2 (26 Tupel) L1.LCode L1.Kontinent L1.Prozent L2.LCode L2.Kontinent L2.Prozent D Europe 100 D Europe 100 D Europe 100 F Europe 100.................. D Europe 100 RU Europe 80.................. RU Europe 20 D Europe 100.................. RU Europe 20 RU Europe 20 Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 15

(3) FROM Lage L1, Lage L2 WHERE L1.Kontinent = L2.Kontinent AND L1.LCode < L2.LCode 2. Einstieg in SQL 2.2. Einfache Anfragen (9 Tupel) L1.LCode L1.Kontinent L1.Prozent L2.LCode L2.Kontinent L2.Prozent D Europe 100 F Europe 100 ET Asia 10 TR Asia 68 RU Asia 80 TR Asia 68 D Europe 100 TR Europe 32 F Europe 100 TR Europe 32 RU Europe 20 TR Europe 32 ET Asia 10 RU Asia 80 D Europe 100 RU Europe 20 F Europe 100 RU Europe 20 Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 16

(4) SELECT DISTINCT L1.LCode AS Land1, L2.LCode AS Land2 FROM Lage L1, Lage L2 WHERE L1.Kontinent = L2.Kontinent AND L1.LCode < L2.LCode 2. Einstieg in SQL 2.2. Einfache Anfragen (8 Tupel) Land1 D ET RU D F ET D F Land2 F TR TR TR TR RU RU RU Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 17

2. Einstieg in SQL 2.2. Einfache Anfragen Auswertung einfacher SQL-Anfragen SFW-Ausdruck SELECT A 1,..., A n FROM R 1,..., R m WHERE F (...Attribute der Ergebnisrelation) (...benötigte Relationen) (...Auswahlbedingung) Algorithmus (nested-loop-semantik) FOR each Tupel t 1 in Relation R 1 DO FOR each Tupel t 2 in Relation R 2 DO. FOR each Tupel t m in Relation R m DO IF Die WHERE-Klausel ist erfüllt nach Ersetzen der Attributnamen in F durch die entsprechenden Werte der gerade betrachteten Tupel t 1,..., t m. THEN Bilde ein Antwort-Tupel aus den Werten der in der SELECT-Klausel angegebenen Attributen A 1,..., A n bezüglich der gerade betrachteten Tupel t 1,..., t m. Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 18

Verbund (engl. join) 2. Einstieg in SQL 2.2. Einfache Anfragen Anfragen mit mehreren Relationen in der FROM-Klausel sind sogenannte Verbund-Anfragen (engl. join-queries). Gib zu jedem Land die zugehörigen Städte an. SELECT DISTINCT S.SName, L.LName FROM Stadt S, Land L WHERE S.LCode = L.LCode... explizit als Verbund: SELECT DISTINCT S.SName, L.LName FROM Stadt S JOIN Land L ON S.LCode = L.LCode... wird Gleichheit über Attributen mit identischen Bezeichnern gefordert redet man von einem natürlichen Verbund (engl. natural join) und schreibt kürzer: SELECT DISTINCT S.SName, L.LName FROM Stadt S NATURAL JOIN Land L... Spezialfall kartesisches Produkt: SELECT DISTINCT S.SName, L.LName FROM Stadt S CROSS JOIN Land L Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 19

2. Einstieg in SQL 2.2. Einfache Anfragen Sortierung. Sortiere die Zeilen der Tabelle Stadt aufsteigend nach LCode und für gemeinsame Werte zu LCode absteigend nach dem Breitengrad. SELECT * FROM Stadt ORDER BY LCode ASC, BGrad DESC Grundlagen der Datenbanksysteme, WS 2012/13 5. November 2012 Seite 20