Praktische SQL-Befehle 2

Ähnliche Dokumente
Praktische SQL-Befehle

Garten - Daten Bank. - survival pack -

Datenbanksysteme 2013

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

6. Trigger Charakterisierung von Triggern. 6. Trigger. Trigger definieren automatische Reaktionen auf Ereignisse, die durch Datenmanupilationen

Die Anweisung create table

Übersicht der wichtigsten MySQL-Befehle

Am Campus Bockenheim, im Sozialzentrum/Neue Mensa Foyer. zwischen 10 Uhr und 16 Uhr Der Eintritt ist kostenfrei.

Garten -Daten Bank. -survivalpack - Dr. Karsten Tolle PRG2 SS 2016

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

SQL. Automatisierung: Trigger

Garten -Daten Bank. Was ist das? Dr. Karsten Tolle PRG2 SS 2015

Garten -Daten Bank. Was ist das? Dr. Karsten Tolle PRG2 SS 2014

Datenmanagement I SoSe 2006 Aufgabenblatt 4

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Schnellübersichten. SQL Grundlagen und Datenbankdesign

4.14 Integrität und Trigger

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

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

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

Datenintegrität. Kapitel 5 1

Triggern. Change Data Capture

Entwicklungsumgebung für die Laborübung

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

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum: Datenbanken Woche 7: Noch mehr SQL

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

Datenintegrität. Kapitel 5 1

Übung PL/SQL Trigger Lösungen

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

Übungsblatt 8- Lösungsvorschlag

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

SQL: Weitere Funktionen

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

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

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 8: Datenintegrität

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

Beispiel zur referentiellen Integrität

Universität Augsburg, Institut für Informatik WS 2011/2012 Prof. Dr. W. Kießling 09. Dez Dr. M. Endres, Dr. S. Mandl, F. Wenzel Lösungsblatt 6

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

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

Datenbanken 1. Sommersemester Übung 1

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

Views in SQL. 2 Anlegen und Verwenden von Views 2

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

SQL als Zugriffssprache

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Hochschule Karlsruhe Technik und Wirtschaft Fakultät für Informatik und Wirtschaftsinformatik

Terminierungs-Analyse von SQL-Triggern. Sommersemester 05 T. Jahn Seminar Intelligente Datenbanken SQL-Trigger: Terminierungs-Analyse 1

Gruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

Datenbanksysteme. Dominic Pacher. Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck. dbis-informatik.uibk.ac.

5.8 Bibliotheken für PostgreSQL

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Datenbank und Tabelle mit SQL erstellen

Create-Table-Befehl. CREATE TABLE Tabellenname ( { Spalte { Datentyp Gebietsname } [ Spaltenbedingung [ ] ] Tabellenbedingung }

Datenbanksysteme I Integrität und Trigger Felix Naumann

Referentielle Integrität

Referentielle Integrität

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

Wiederholung VU Datenmodellierung

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Trigger. Andreas Schmidt Trigger 1/25

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

Wiederholung VU Datenmodellierung

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

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

Introduction to Data and Knowledge Engineering. 6. Übung SQL

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Klausur Datenbanksysteme, Lösungen

Transaktionen in Praxis. Dr. Karsten Tolle Vorl

NoSQL mit Postgres 15. Juni 2015

Oracle 10g Einführung

Eine Einführung in MySQL

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

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

Tag 2 Inhaltsverzeichnis

6. Datendefinition in SQL

Visualisierung in Informatik und Naturwissenschaften

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

Aufgabe 1: Integrität

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

dbis Praktikum DBS I SQL Teil 2

Datenschutz: Zugriffsrechte in SQL

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Induktionsschluss: Sei Q RA eine Anfrage der Relationenalgebra mit n > 0 Operatoren.

Integrität in Datenbanken. Prof. Dr. T. Kudraß 1

6. Datenintegrität. Integritätsbedingungen

Grundlagen der Informatik

Transkript:

Praktische SQL-Befehle 2 Datenbanksysteme I WiSe 2018/2019 Todor Ivanov DB1 WS2018 1

Praktische SQL-Befehle Functions Views Triggers Voraussetzung: Laptop + MySQL/ MariaDB + Workbench! DB1 WS2018 2

Airport Database: 7 Tables (MySQL Workbench View) DB1 WS2018 3

Aggregatfunktionen in SQL Eine Besonderheit von SQL sind die Operatoren, die Berechnungen über Gruppen von Tupeln anstellen. Die sog. Aggregatfunktionen können in der select-klausel anstelle von einzelnen Attributen angegeben werden. Beispiele für Funktionen: min( A ) zur Berechnung des Minimalwerts aller Tupel unter dem Attribut A. max( A ) zur Berechnung des Maximalwerts aller Tupel unter dem Attribut A. avg( [ distinct ] A ) zur Berechnung des Durch-schnittswerts aller Tupel unter dem Attribut A, wobei unter Angabe von distinct mehrfach gleiche Werte nur einmal in die Berechnung eingehen. DB1 WS2018 4

Function Syntax (https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html) Beispiel: Hello funktion Funktion ausführen: SELECT hello('tomas'); DB1 WS2018 5

ArrivalTime Funktion Schreiben Sie eine Funktion "ArrivalTime" welche als Input eine Flugnummer (bestehend aus minimal 3 und maximal 8 Zeichen) erwartet und die Ankunftszeit (Abflugzeit + Flugdauer) des Fluges berechnet (zur Vereinfachung ohne Berücksichtigung der verschiedenen Zeitzonen). SELECT f.flightno, f.departuredateandtimeutc as DepartureTime, ArrivalTime(f.FlightNo) as ArrivalTime FROM flightexecution f; DB1 WS2018 6

ArrivalTime Funktion - Vorschlag DELIMITER $$ CREATE FUNCTION `ArrivalTime`(fln varchar(8)) RETURNS datetime BEGIN DECLARE arrivaldate DATETIME; DECLARE departuretime DATETIME; DECLARE duration int; IF CHAR_LENGTH(fln) >= 3 AND CHAR_LENGTH(fln) <= 8 THEN select f.flightdurationinminutes into duration from flightexecution f where FlightNo = fln; select f.departuredateandtimeutc into departuretime from flightexecution f where FlightNo = fln; select DATE_ADD(departureTime, INTERVAL duration MINUTE) into arrivaldate; ELSE SET arrivaldate = Null; END IF; RETURN arrivaldate; END DB1 WS2018 7

Sichten (Views) Eine View ist eine Relation, die nicht Teil des konzeptuellen Schemas der Datenbank ist, sondern dem Benutzer als virtuelle Relation zur Verfügung gestellt wird. Views können nicht gespeichert werden sondern müssen für jede Anfrage, die sie referenziert neu berechnet werden. create view View-Name as <Anfrage-Ausdruck> DB1 WS2018 8

View (Sicht) Syntax (https://dev.mysql.com/doc/refman/8.0/en/create-view.html) 1) Erstellen von View (Sicht): CREATE VIEW flightview AS SELECT f.flightno, f.departuredateandtimeutc FROM flightexecution f; 2) Verwenden von View (Sicht): SELECT * FROM flightview; DB1 WS2018 9

Flughafen Informationsanzeige: Frankfurt Departure View View mit dem Namen: frankfurt_departure Die View soll angeben, welche Flüge starten von Frankfurt am Main mit folgende Attribute: Flight, DepartureTime, Duration, Destination und ArrivalTime. DB1 WS2018 10

Frankfurt Departure View Vorschlag 1 select * from frankfurt_departure; DB1 WS2018 11

Frankfurt Departure View Vorschlag 2 CREATE VIEW frankfurt_departure AS SELECT flightexecution.flightno AS Flight, flightexecution.departuredateandtimeutc AS DepartureTime, flightexecution.flightdurationinminutes AS Duration, airport.airportname AS Destination, flightexecution.departuredateandtimeutc + INTERVAL flightexecution.flightdurationinminutes MINUTE AS ArrivalTime FROM flightexecution, airport.airport WHERE flightexecution.icao_code_origin = (select airport.icao_code from airport where airport.airportname = 'Frankfurt am Main') and flightexecution.icao_code_destination = airport.icao_code; select * from frankfurt_departure; DB1 WS2018 12

Frankfurt Departure View Vorschlag 2 DB1 WS2018 13

Trigger Syntax (https://dev.mysql.com/doc/refman/8.0/en/create-trigger.html) Trigger ist eine Funktion oder Sammlung von SQL-Anweisungen, die man auf eine Tabelle anwendet. Dieser Trigger wird dann automatisch bei einem bestimmten Event/ Ereignisse ausgelöst. Dabei kann es um INSERT-, UPDATE- oder DELETE-Anweisungen handeln. Trigger-time: BEFORE - wird vor der Datenmanipulation ausgelöst und ersetzt die eigentliche Aktion. AFTER - wird nach der Datenmanipulation ausgelöst. DB1 WS2018 14

Protokoll-Trigger Beispiel Protokolliere für jede Update-Aktion auf der Tabelle Flightexecution Action, User, FlightNo, Time einer Protokolltabelle Flight_Audit. (1) Erstelle Protokolltabelle: CREATE TABLE airport.flight_audit ( Action VARCHAR(50) DEFAULT NULL, User VARCHAR(30) NOT NULL, FlightNo VARCHAR(7) NOT NULL, Time TIMESTAMP NOT NULL); (3) Beispiel Update-Befehl: (2) Erstelle Before_Flight_Update Trigger: CREATE TRIGGER airport.before_flight_update BEFORE UPDATE ON flightexecution FOR EACH ROW BEGIN INSERT INTO airport.flight_audit SET Action = 'update', User = USER(), FlightNo = OLD.FlightNo, Time = NOW(); END UPDATE flightexecution SET flightexecution.flightdurationinminutes = 140 WHERE flightexecution.flightno = 'IBE1684'; DB1 WS2018 15

Create Frankfurt Arrival View View mit dem Namen: frankfurt_arrival Die View soll angeben, welche Flüge noch in Frankfurt am Main landen werden (Sie können rein auf der UTC-Zeit arbeiten und müssen keine Zeitzonen berücksichtigen, bereits gelandete Flüge sollen nicht angezeigt werden). Relevant für Frankfurt am Main ist wieder das Town Attribut für die Adresse des Flughafens. DB1 WS2018 16

Online-ressourcen Tabellenfunktionen von Prof. Dr. Jens Dittrich Trigger Grundlagen Video von Prof. Dr. Jens Dittrich Folien (Aufbau von Triggern) von Prof. Dr. T. Kudraß DB1 WS2018 17