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

Ähnliche Dokumente
Relationale Anfragesprachen

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

Fortsetzung: Projektion Selektion. NULL Werte

Relationale Abfragesprachen

Wiederholung VU Datenmodellierung

Web Science & Technologies University of Koblenz Landau, Germany. Grundlagen der Datenbanken SQL. Dr. Gerd Gröner Wintersemester 2013/14

Datenbanksysteme 2013

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

Kapitel 8: Datenintegrität

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

Web Science & Technologies University of Koblenz Landau, Germany. Grundlagen der Datenbanken. SQL Teil 2. Dr. Jérôme Kunegis Wintersemester 2013/14

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

Datenmodellierung. VU , SS 2016 Relationale Abfragesprachen SQL. Nysret Musliu, Sebastian Skritek

Fortsetzung: Kreuzprodukt, Inner Join. Sortierung. Existenzquantor, Mengenvergleich Gruppierung, Aggregate Cast-Operator

Termin 12: Datenbanksysteme (2) - Einführung in SQL

Übersicht der wichtigsten MySQL-Befehle

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

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

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

Abfragen (Queries, Subqueries)

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

Kapitel 8 Dr. Jérôme Kunegis. SQL Continued. WeST Institute for Web Science & Technologies

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

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

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

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

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

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

Referentielle Integrität

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

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

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

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

DB1. DB SQL-DQL 1 Mario Neugebauer

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

Microsoft SQL-Server Enterprise-Manager

Referentielle Integrität

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

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

Grundlagen des relationalen l Modells

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

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

Datenbanksysteme SS 2007

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

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

Wie definieren wir das Relationen-

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

Diskussion: Personal (1)

4. Structured Query Language (SQL)

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

Vorlesung Datenbanksysteme vom

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

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

SQL structured query language

SQL-Anweisungen. SELECT (SQL Data Query Language)

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

SQL Data Manipulation Language (DML) und Query Language (QL)

ACCESS SQL ACCESS SQL

Relationales Datenbanksystem Oracle

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

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

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

Es wird empfohlen folgendes Material anzusehen:

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

Aufgabensammlung SQL SW4 1. Einfache Anfragen

Vorlesungen. Studenten. hören. Grundzüge. Fichte Glaube und Wissen Jonas

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

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

Es geht also im die SQL Data Manipulation Language.

Grundlagen des relationalen Modells

Webbasierte Informationssysteme 8. Datenbanksprache SQL

Management of Information Systems. Tutorat: Session 3 Einführung in SQL

Webbasierte Informationssysteme 8. Datenbanksprache SQL

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme

SQL (Structured Query Language) Schemata Datentypen

SQL. Allgemeines CREATE TABLE DROP TABLE ALTER TABLE INSERT INTO UPADTE DELETE SELECT

SQL als Zugriffssprache

Wiederholung: Relationale Algebra

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

Kapitel 3: Datenbanksysteme

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Einführung in SQL mit Oracle

Datenintegrität. Bisherige Integritätsbedingungen

Das relationale Modell (Teil 1)

SQL: Weitere Funktionen

Erzeugung und Veränderung von Tabellen

Sructred Query Language

Einführung in die Spezialisierungsrichtungen

Datenbanksysteme 2009

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

dbis Praktikum DBS I SQL Teil 2

PRG2 Folien Zicari Teil 5. Einführung in Datenbanken SS 2007

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

Objektrelationale und erweiterbare Datenbanksysteme

Datenbanken. SQL Einführung und SQL-DDL

Datenbanksysteme SS 2007

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

Transkript:

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) SQL Abfragen Aggregation und Gruppierung Null-Werte, 3-wertige Logik Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 2

Geschichte von SQL Anfang 70er Jahre System R von IBM mit der Sprache SEQUEL Structured English Query Language, später aus patentrechtlichen Gründen in SQL unbenannt Parallel entwickelte man QUEL als Anfragesprache für das INGRES-System SQL setzte sich durch als Industrie-Standard (wegen Ignorranz der INGRES-Entwickler) 1986: SQL-86 1. SQL Norm von ANSI Comitee 1992: SQL-92 bzw. SQL-2 1999: SQL-99 bzw. SQL-3 (objektrelationale Erweiterungen) Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 3

Datentypen in SQL Atomare Datentypen als Attribut-Domänen Zahlen numeric(p,s) number(p,s) integer float Zeichenketten character(n) char(n) char varying (n) varchar(n), varchar2(n) Datumstyp date Weitere: BLOB (Binary Large Objects), RAW für große Binärdatein, CLOB (Character LOB), benutzerdefinierte Typen als objektrelationale Erweiterung... Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 4

Einfache Datendefinition SQL DDL (Data Definition Language) CREATE TABLE Professoren (PersNr INTEGER, Name CHARACTER VARYING(30), Rang CHARACTER(2)); CREATE TABLE professoren (persnr NUMBER(*,0), name VARCHAR2(30), rang CHAR(2)); Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 5

Schemaveränderungen SQL DDL (Data Definition Language) Hinzufügen eines Attributs bzw. einer Spalte ALTER TABLE Professoren ADD Raum INTEGER; Löschen eines Attributs bzw. einer Spalte ALTER TABLE Professoren DROP COLUMN Raum; Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 6

Datenmanipulation (1) SQL DML (Data Manipultaion Language) Einfügen von Tupeln insert into hören select MatrNr, VorlNr from Studenten, Vorlesungen where Titel= `Logik ; insert into Studenten (MatrNr, Name) values (28121, `Archimedes ); Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 7

Datenmanipulation (2) SQL DML (Data Manipultaion Language) Löschen von Tupeln delete Studenten where Semester > 13; Verändern von Tupeln update Studenten set Semester= Semester + 1; Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 8

Einfache SQL Anfragen select PersNr, Name from Professoren where Rang= C4 ; PersNr Name 2125 Sokrates 2126 Russel 2136 Curie 2137 Kant Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 9

Einfache SQL Anfragen (2) Sortierung select PersNr, Name, Rang from Professoren PersNr 2136 2137 Name Curie Kant Rang C4 C4 order by Rang desc, Name asc; 2126 2125 Russel Sokrates C4 C4 desc descending asc ascending 2134 2127 2133 Augustinus Kopernikus Popper C3 C3 C3 Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 10

Einfache SQL Anfragen (3) Duplikateliminierung select distinct Rang from Professoren; Rang C3 C4 Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 11

Anfragen über mehrere Relationen Welcher Professor liest "Mäeutik"? select Name, Titel from Professoren, Vorlesungen where PersNr = gelesenvon and Titel = `Mäeutik ; σ Name, Titel( PersNr = gelesenvon Titel ' Mäeutik' (Professoren Vorlesungen)) = Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 12

Anfragen über mehrere Relationen (2) Professoren Vorlesungen PersNr Name Rang Raum VorlNr Titel SWS gelesenvon 2125 2126 Sokrates Russel C4 C4 226 232 5001 5041 Grundzüge Ethik 4 4 2137 2125 2137 Kant C4 7 5049 Mäeutik 2 2125 4630 Die 3 Kritiken 4 2137 Verknüpfung Χ Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 13

Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 14

3 Wege Join Welche Studenten hören welche Vorlesungen? select Name, Titel from Studenten, hören, Vorlesungen where Studenten.MatrNr = hören.matrnr and hören.vorlnr = Vorlesungen.VorlNr; Alternativ: select s.name, v.titel from Studenten s, hören h, Vorlesungen v where s. MatrNr = h. MatrNr and h.vorlnr = v.vorlnr Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 15

Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 16

Aggregatfunktionen min, max, avg, sum, count SELECT min(semester) FROM Studenten; SELECT max(semester) FROM Studenten; SELECT avg(semester) FROM Studenten; SELECT sum(semester) FROM Studenten; SELECT count(matrnr), -- count(*) count(distinct Semester) FROM Studenten; Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 17

... mit Gruppierung min, max, avg, sum, count mitgroup BY select gelesenvon, sum (SWS) from Vorlesungen group by gelesenvon; mit HAVING select gelesenvon, Name, sum (SWS) from Vorlesungen, Professoren where gelesenvon = PersNr and Rang = C4 group by gelesenvon, Name having avg (SWS) >= 3; Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 18

Besonderheiten bei Aggregatoperationen SQL erzeugt pro Gruppe ein Ergebnistupel Deshalb müssen alle in der select-klausel aufgeführten Attribute - außer den aggregierten auch in der group by- Klausel aufgeführt werden Nur so kann SQL sicherstellen, dass sich das Attribut nicht innerhalb der Gruppe ändert SELECT A1, A2, An, count(*) FROM... WHERE.. GROUP BY A1, A2, An Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 19

Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 20

Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 21

Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 22

Ergebnis der Abfrage gelesenvon 2125 2137 Name Sokrates Kant sum (SWS) 10 8 Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 23

Nullwerte unbekannter Wert wird vielleicht später nachgereicht Nullwerte können auch im Zuge der Anfrageauswertung entstehen (Bsp. äußere Joins) manchmal sehr überraschende Anfrageergebnisse, wenn Nullwerte vorkommen UPDATE studenten SET semester = '' WHERE matrnr = 24002; select count (*) from Studenten where Semester < 13 or Semester >= 13 Tupel (Zeilen) mit Null-Werten werden einfach nicht mitgezählt!!! Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 24

Nullwerte (2) NULL + 1 = NULL, NULL * 1 = NULL Beispiele (Oracle) SELECT NULL + 2 FROM Dual; SELECT NULL * 2 FROM Dual; Dual ist so etwas wie Dummy -Tabelle in Oracle Es gilt die sogenannte 3-wertige Logik in SQL Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 25

3-wertige Logik (NULL Logik) not and TRUE NULL FALSE TRUE FALSE TRUE TRUE NULL FALSE NULL NULL NULL NULL NULL FALSE FALSE TRUE FALSE FALSE FALSE FALSE or TRUE NULL FALSE TRUE TRUE TRUE TRUE NULL TRUE NULL NULL FALSE TRUE NULL FALSE Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 26

Regeln für NULL Werte In arithmetischen Ausdrücken werden NULL Werte propagiert (NULL + 3 = NULL) Es gilt die 3-wertige Logik. Vergleichsoperatoren (=, >,<=) liefern immer NULL zurück, wenn mindestens ein Argument NULL ist Logische Ausdrücke werden entsprechend den vorgestellten 3-wertige-Logik Tabellen ausgewertet Tupeln mit NULL als Ergebnis in einer WHERE Klausel werden nicht weitergereicht, d.h NULL Werte werden in WHERE Klauseln ausgelassen Bei Gruppierung ist NULL ein eigenständiger Wert Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 27

Behandlung von NULL Werten (Oracle und SQL-92) In Oracle gibt es eine null value Funktion nvl (if NULL then): SELECT nvl(null,5) + 2 AS Result FROM Dual; Result ------ 7 Man kann NULL Werte mit IS NULL oder IS NOT NULL testen (SQL-92) Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 28

Ausblick Vorlesung #4 SQL, Fortsetzung Geschachtelte Anfragen Korrelierte Anfragen Mengenoperationen Quantifizierte Anfragen (, ) Spezielle Sprachkonstrukte Joins in SQL-92, SQL-99 Rekursion Sichten (Views) Bojan Milijaš, 22.10.2010 Vorlesung #3 - SQL (Teil 1) 29

Vorlesung #3 Ende