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

Ähnliche Dokumente
Garten - Daten Bank. - survival pack -

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

Teil 2-6. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

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

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

Teil 2-6. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

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

Übersicht der wichtigsten MySQL-Befehle

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

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

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

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

Wiederholung VU Datenmodellierung

5.8 Bibliotheken für PostgreSQL

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

SQL structured query language

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

Datenbank und Tabelle mit SQL erstellen

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

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

Datenbanksysteme 2013

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

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

Die Anweisung create table

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

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

Datenbanken Entity-Relationship-Modell und Datenbankentwurf 1. Andreas Heß Hochschule Furtwangen

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

Visualisierung in Informatik und Naturwissenschaften

Vorlesung: Relationale Datenbanksysteme

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

Es geht also im die SQL Data Manipulation Language.

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

Relationales Datenbanksystem Oracle

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

ACCESS SQL ACCESS SQL

SQL-Befehlsliste. Vereinbarung über die Schreibweise

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

IV. Datenbankmanagement

Datenbanken. Zusammenfassung. Datenbanksysteme

Datenbankentwicklung

SQL als Zugriffssprache

Abfragen (Queries, Subqueries)

Tag 2 Inhaltsverzeichnis

Kapitel 2: Das Relationale Modell

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

Datenbanken. 5 Tabellen. Karl Meier karl.meier@kasec.ch Inhalt. Domänen verwenden Tabellen anzeigen, ändern, löschen Übung

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Labor 3 - Datenbank mit MySQL

Kapitel 8: Datenintegrität

4. Datenbanksprache SQL

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

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

Webbasierte Informationssysteme

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

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

Inhaltsverzeichnis. jetzt lerne ich

Kapitel DB:VI (Fortsetzung)

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

DB1. DB SQL-DQL 1 Mario Neugebauer

Finalklausur zur Vorlesung Datenbanksysteme I Wintersemester 2003/2004 Prüfer: Prof. R. Bayer, Ph.D. Datum: Zeit: 16.

SQL: Weitere Funktionen

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

Arbeit mit zusammengesetzten Datentypen

MySQL: Einfaches Rechnen.

Erzeugen von Constraints

SQL-Befehlsliste. Vereinbarung über die Schreibweise

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

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

Multimedia im Netz Wintersemester 2013/14. Übung 03 (Nebenfach)

7. XML-Datenbanksysteme und SQL/XML

Kapitel 3: Datenbanksysteme

Vorlesung Informatik II

MySQL Installation. AnPr

Datenbanken. Seminararbeit. Einführung in das wissenschaftliche Arbeiten

dbis Praktikum DBS I SQL Teil 2

Es geht also um die sogenannte SQL- Data Definition Language.

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Kapitel 2: Das Relationale Modell

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

Erstellen und Verwalten von Tabellen

Teil 2-5. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

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

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

Referenzielle Integrität SQL

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Einteilung von Datenbanken

Daten Bank. 4. Vorlesung

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

Übungsaufgaben mit Lösungen

Datenbanken für Online Untersuchungen

MySQL. MySQL ist ein Datenbanksystem. Es besteht aus einem zentralen Server und aus (mehreren) Clients. Es benutzt einen Dialekt der Sprache SQL.

Übung 01 Tabellen erstellen

Microsoft Access 2010 SQL nutzen

Transkript:

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

Garten - Daten Bank - survival pack - Dr. Karsten Tolle PRG2 SS 2018

Inhalt heute Kurz: Motivation und Begriffe SQL (survival pack) create table (Tabelle erzeugen) insert into (Einfügen) select (Anfragen) Struktur Aggregatfunktionen where-bedingungen Anfrage über mehrere Tabellen Dr. Karsten Tolle PRG2 SS 2018 3

Datenbank Definition (Duden): Elektronisches System, in dem große Mengen an Daten zentral gespeichert werden können. Datenbank Was ist der Unterschied einer Datenbank zu einer Festplatte? Dr. Karsten Tolle PRG2 SS 2018 4

Datenbankmanagementsystem (DBMS) Datenbank (DB) Datenbanksystem (DBS) Dr. Karsten Tolle PRG2 SS 2018 5

Vorteile DBS Redundanz und Inkonsistenz Können durch die zentrale Datenverwaltung und Datenhaltung vermieden werden. Sicherheit gegen Datenmissbrauch Durch die zentrale Benutzerverwaltung können Zugriffsrechte gut kontrolliert werden. Datenkonsistenz auch bei Ausfall Durch Recovery-Strategien kann sicher gestellt, dass auch nach einem unerwartetem Ausfall die Daten konsistent bleiben (Transaktionen). und weitere! Dr. Karsten Tolle PRG2 SS 2018 6

Fragen um herauszufinden, ob man ein DBMS benötigt: 1. Liegt eine große Datenmenge vor, die schwer zu managen ist? Braucht es lange das Dokument zu öffnen? Ist das Betrachten der Daten schwierig, muss man viel scrollen und ist es schwer die gesuchten Daten zu finden? 2. Arbeiten verschiedene Personen/Anwendungen mit den Daten? 3. Gibt es weitere Daten, die mit den gegebenen Daten in Relation stehen und ebenfalls gespeichert werden? Ziehen Änderungen an einer Stellen Änderungen an anderen Stellen nach sich? 4. Werden die gleichen Daten an unterschiedlichen Orten verwendet? Dr. Karsten Tolle PRG2 SS 2018 7

Erstellung einer Datenbank: Erster Schritt Was sind die Anforderungen? Was sind die Ziele? Ist bekannt was gespeichert werden soll? Design des Datenmodels Dr. Karsten Tolle PRG2 SS 2018 8

Erstellung einer Datenbank: Zweiter Schritt Welches DBMS wird genutzt? Wer soll wie auf die Daten zugreifen? Umsetzung des Datenmodels im DBMS Wir verwenden in PRG2: relationales DBMS insb. MariaDB/MySQL Zugriff über die Anfragesprache SQL Dr. Karsten Tolle PRG2 SS 2018 9

Relationales Datenbankmodell E.F. Codd, 1970 (Grundbegriffe) Tabellen mit Zeilen und Spalten um die Daten darzustellen. Employee Attribute EMPNO FIRSTNME LASTNME PHONENO SALARY Tupel 001 Jon Lucas 2983 2000 003 Jon Smith 2980 3588 103 Lucas Jon 4444 3980 999 Jon Smith 3987 1500 Schema bzw. Relationenschema: Employee (EMPNO, FIRSTNME, LASTNME, PHONENO, SALARY) Dr. Karsten Tolle PRG2 SS 2018 10

Downloads MariaDB: https://mariadb.org/ (enthält: HeidiSQL) MySQL: https://dev.mysql.com/downloads/mysql/ Community Server Workbench extra (oder als Packet) Dr. Karsten Tolle PRG2 SS 2018 11

beim RBI https://www.rbi.informatik.uni-frankfurt.de/rbi/de/nachrichten/datenbankserver-fuer-datenbank-vorlesungen-und-praktika Dr. Karsten Tolle PRG2 SS 2018 12

Command Line Client Wichtige Befehle: show databases; -- zeigt die Datenbanken an create database <database_name>; -- erzeugt eine leere DB drop database <database_name>; -- löscht eine DB use <database_name>; -- erzeugt eine Verbindung zur Datenbank show tables; -- zeigt die Tabellen der Datenbank an explain <table_name>; -- gibt Informationen über die Tabelle show variables; -- zeigt die aktuellen Einstellungen an Dr. Karsten Tolle PRG2 SS 2018 13

HeidiSQL (geht auch mit MySQL) Dr. Karsten Tolle PRG2 SS 2018 14

MySQL Workbench (geht auch mit MariaDB) Dr. Karsten Tolle PRG2 SS 2018 15

Structured Query Language SQL ist für Relationale Datenbanksysteme! Standards: SQL-1 von 1986 bzw. 1989 (ca. 120 Seiten) SQL-2 (SQL92) von 1992 (ca. 580 Seiten) http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt SQL-3 (SQL99) von 2000 (ca. 1200 Seiten) SQL 2003 - ISO/IEC 9075:2003 SQL:2006 - ISO/IEC 9075-14:2006 (SQL/XML) Dr. Karsten Tolle PRG2 SS 2018 16

Heute Erstellen - create Einfügen - insert Anfragen - select später update, delete, alter, drop Dr. Karsten Tolle PRG2 SS 2018 17

Tabellen erstellen Eine Tabelle wird im Minimalfall mit ihrem eindeutigen Namen sowie der Liste der zugehörigen Attribute samt Domänen nach folgendem Schema definiert: create table Relations-Name ( Attribut-Name Domäne {, Attribut-Name Domäne} ) ; z.b.: create table test (id int); Dr. Karsten Tolle PRG2 SS 2018 18

create table kunde ( Name varchar(30), Vorname varchar(20), Strasse varchar(50), Stadt varchar(25), ) ; Kinder int, GebDatum date Dr. Karsten Tolle PRG2 SS 2018 19

die wichtigsten-sql-datentypen integer/int double(m,d) float(m,d) decimal(m,d) (Domänen) date time datetime timestamp char(n) varchar(n) text clob(n) blob(n) Siehe auch: https://dev.mysql.com/doc/refman/5.8/en/data-types.html Dr. Karsten Tolle PRG2 SS 2018 20

Einfügen von Tupeln I Um Daten einzufügen, spezifiziert man das Tupel, welches eingefügt werden soll Die Werte für die Attribute der Tupel müssen aus der Domäne (Definitionsbereich) der Attribute sein. insert into kunde values ('Otto', 'Hans', 'Bäckerweg 12', 'Frankfurt', 3, '1970-12-01') ; Der Kunde "Hans Otto" wird eingefügt. Dr. Karsten Tolle PRG2 SS 2018 21

Einfügen von Tupeln II... unbekannte Werte können mit NULL-Values befüllt werden: insert into kunde values ('Otto', 'Hans', null, 'Frankfurt', 3, '1970-12-01') ; Der Kunde "Hans Otto" wird eingefügt. Dr. Karsten Tolle PRG2 SS 2018 22

Einfügen von Tupeln III... alternativ kann man die Attribute angeben, die gesetzt werden sollen: insert into kunde (Vorname, Name, GebDatum) values ('Hans', 'Otto', '1970-12-01') ; Der Kunde "Hans Otto" wird eingefügt. Dr. Karsten Tolle PRG2 SS 2018 23

welche Version ist besser? 1. insert into kunde values ('Otto', 'Hans', null, null, null, '1970-12-01') ; 2. insert into kunde (Vorname, Name, GebDatum) values ('Hans', 'Otto', '1970-12-01') ; Dr. Karsten Tolle PRG2 SS 2018 24

Einfügen von Tupeln IV... es können auch mehrere Datensätze mit einem SQL-Statement eingefügt werden: insert into kunde (Vorname, Name, GebDatum) values ('Hans', 'Otto', '1970-12-01'), ('Hans', 'Otto', '1925-11-24'), ('Hans', 'Otto', '2012-12-24') ; Der Kunde "Hans Otto" wird 3-mal eingefügt. Dr. Karsten Tolle PRG2 SS 2018 25

CSV (Comma Separated Values) CSV-Dateien dienen zum Speichern/Austausch einer Tabelle id,vorname,nachname,telefon 1,Max,Mustermann,93847928347 2,Peter,Mustermann,9237840923847 3,Miss,Mustermann,9832488 Dr. Karsten Tolle PRG2 SS 2018 26

Einfügen von Tupeln V... es können auch mehrere Datensätze aus einer Datei eingelesen werden: LOAD DATA Aufgabe 2 Blatt 8 selbst herausfinden! Tipps: 1) Codierung beachten (empfehlenswert: Notepad++) 2) Was ist das Trennzeichen? 3) Wie ist der Zeilenumbruch '\r\n' oder '\n' 4) MySQL Doku: https://dev.mysql.com/doc/refman/8.0/en/load-data.html 5) Foren sind hilfreich: z.b. https://stackoverflow.com/questions/2675323/mysql-load-null-values-from-csv-data Dr. Karsten Tolle PRG2 SS 2018 27

Primärschlüssel Mittels der Klausel primary key kann ein Attribut einer Relation als Schlüssel ausgezeichnet werden. Hierdurch kann ein Datensatz identifiziert werden und das DBS sorgt dafür, dass keine Duplikate eingetragen werden. create table kunde ( Name varchar(30) primary key not null, Vorname varchar(20), Strasse varchar(50), Stadt varchar(25), Kinder int not null default 0, GebDatum date ) ; abhängig vom DBMS, ob not null nötig ist MySQL nicht nötig. Dr. Karsten Tolle PRG2 SS 2018 28

Primärschlüssel Wenn mehr als ein Attribut als Primärschlüssel definiert werden sollen, wird die Klausel in der Form primary key (Attributnamen-Liste) verwendet. create table kunde ( Name varchar(30) not null, Vorname varchar(20) not null, Strasse varchar(50), Stadt varchar(25), Kinder int not null default 0, GebDatum date primary key (Name, Vorname) ) ; Dr. Karsten Tolle PRG2 SS 2018 29

Primärschlüssel Es kann für eine Tabelle nur maximal einen Primärschlüssel (PK) geben. Eine Tabelle kann neben dem PK weitere Schlüssel (Schlüsselkandidaten) besitzen. Diese können über Unique Index im DBS modelliert werden. Dr. Karsten Tolle PRG2 SS 2018 30

SQL-Syntax von Workbench: Dr. Karsten Tolle PRG2 SS 2018 31

Anfragen ohne Bedingungen kunde ( Name Vorname Strasse Stadt) select Name, Vorname from kunde; select Vorname, Name from kunde; select Stadt from kunde; select * from kunde; Nicht in Programmen! Dr. Karsten Tolle PRG2 SS 2018 32

SQL verwirklicht das Prinzip der Vielfachmenge (engl. multiset). In den Ergebnismengen können demnach Duplikate auftreten. Sind keine Duplikate erwünscht, müssen sie explizit durch den Zusatz distinct entfernt werden. select distinct Stadt from kunde; Dr. Karsten Tolle PRG2 SS 2018 33

Aggregatfunktionen Die sog. Aggregatfunktionen können in der select-klausel anstelle von einzelnen Attributen angegeben werden. Ergebnis einer Aggregatfunktion ist ein Wert, kein Tupel. select count( ) as AnzahlKunden from kunden; Dr. Karsten Tolle PRG2 SS 2018 34

Aggregatfunktionen 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 Durchschnittswerts aller Tupel unter dem Attribut A, wobei unter Angabe von distinct mehrfach gleiche Werte nur einmal in die Berechnung eingehen. sum( [ distinct ] A ) zur Berechnung der Summe aller Tupel unter dem Attribut A, wobei unter Angabe von distinct mehrfach gleiche Werte nur einmal in die Berechnung eingehen. count( ) zum Zählen der Tupel der betrachteten Relation. count( [ distinct ] A) zum Zählen der Tupel der betrachteten Relation, wobei zunächst eine Duplikateneliminierung bezogen auf Werte unter dem Attribut A stattfindet. Behandlung von NULL-Values beachten! Dr. Karsten Tolle PRG2 SS 2018 35

where-klausel Bezüglich der Bedingung sind Vergleiche mit den üblichen Operatoren, den logischen Verknüpfungen and und or sowie Klammerungen gestattet. kunde ( Name Vorname Strasse Stadt Kinder) select * from kunde where Kinder > 0 or Stadt = 'Frankfurt' and Name = 'Otto' ; Üblich: erst AND dann OR aber besser lesbar mit Klammern! Dr. Karsten Tolle PRG2 SS 2018 36

kunde ( Name Vorname Strasse Stadt Kinder) select * from kunde where Kinder > 0 or Stadt = 'Frankfurt' and Name = 'Otto' ; kunde ( Name Vorname Strasse Stadt Kinder) select * from kunde where Kinder > 0 or (Stadt = 'Frankfurt' and Name = 'Otto'); Dr. Karsten Tolle PRG2 SS 2018 37

Anfrage über mehrere Relationen Werden in der from-klausel mehrere Relationen spezifiziert, so erfolgt die Berechnung des kartesischen Produktes. konto ( KontoNr KundenNr FilialName Saldo ) filiale ( Name Leiter Stadt Einlagen ) select * from filiale, konto; im Ergebnis wird jeder DS auf Filiale mit jedem DS aus Konto verbunden! Dr. Karsten Tolle PRG2 SS 2018 38

Anfrage über mehrere Relationen konto ( KontoNr KundenNr Name Saldo ) filiale ( Name Leiter Stadt Einlagen ) select * from filiale, konto; select * from filiale, konto where Name = ' test'; Fehlermeldung: Name nicht eindeutig! select * from filiale f, konto k where f.name = ' test'; Dr. Karsten Tolle PRG2 SS 2018 39

Anfrage über mehrere Relationen konto ( KontoNr KundenNr Saldo ) kunde ( KundenNr Name Vorname Strasse Stadt ) select * from kunde, konto; vs select * from kunde k, konto t where k. KundenNr = t.kundennr; Dr. Karsten Tolle PRG2 SS 2018 40

SQL-Online-Tutorial http://sqlzoo.net/ Dr. Karsten Tolle PRG2 SS 2018 41

SQL Online Tutorial Anfragen können interaktiv ausgeführt werden. Dr. Karsten Tolle PRG2 SS 2018 42

SQL Web Links SQL Online ausprobieren: http://www.w3schools.com/sql/ und http://sqlzoo.net/ Literatur ebooks allgemein: http://www.ub.unifrankfurt.de/datenbanken/ebooks_gesamt.html Dr. Karsten Tolle PRG2 SS 2018 43