Share
Embed
Einstieg in relationale Datenbanken mit MySQL
Folien zum Workshop "Einstieg in relationale Datenbanken mit MySQL", September 2009
Kerstin Puschke
August 31, 2009
Transcript
104 slides
-
Einstieg in relationale Datenbanken mit MySQL Dr. Kerstin Puschke Workshop,
Uni Salzburg September 2009 K. Puschke MySQL -
Lizenz Lizenz Dieser Text steht unter einer Creative Commons Attribution-Share
Alike 3.0 Germany Lizenz, siehe http://creativecommons.org/licenses/by-sa/3.0/de/ K. Puschke MySQL -
Teil II: Datenbankabfragen 4 Überblick verschaffen 5 Einfache Abfragen 6
Ergebnisse einschränken K. Puschke MySQL -
Teil III: Datenbankdesign 7 Einführung in die theoretischen Grundlagen 8
Datenbankdesign in der Praxis 9 Qualitätssicherung 10 Datenbank definieren K. Puschke MySQL -
Teil V: Datenbanken erzeugen und manipulieren 13 Daten eintragen, ändern,
löschen 14 Tabellen verknüpfen K. Puschke MySQL -
Teil VI: Vor- und Nachteile von Datenbanken 15 Datenbanken vs.
Dateien 16 Relationale Datenbanksysteme K. Puschke MySQL -
Grundbegriffe Architektur MySQL Datenbanksystem Datenbank und Datenbankmanagementsystem Datenbanksystem dient der
Speicherung und Verwaltung von Daten besteht aus Datenbanken und Datenbankmanagementsystem (DBMS) Datenbank: strukturiert abgelegte Daten zu verwaltende Daten, z.B. Adressen Datenbankschema: Metadaten zur Datenbankdefinition Datenbankmanagementsystem: Software zur Verwaltung der Daten Datenbank definieren, erzeugen, manipulieren K. Puschke MySQL -
Grundbegriffe Architektur MySQL Client und Server Datenbankserver: Software, die Datenbankdienste
(ein Datenbanksystem) anbietet auch der Rechner, auf dem dieser Dienst läuft Anwendung oder Client greift auf den Datenbankserver zu K. Puschke MySQL -
Grundbegriffe Architektur MySQL Architektur Mainframe Großrechner (Zugriff über Terminals) Zwei-Schichten-Architektur
Datenbankserver Anwendung, Client Anwendungslogik und Darstellung/Benutzeroberfläche Drei-Schichten-Architektur Datenbankserver Anwendung (Anwendungslogik) Webserver oder Anwendungsserver (Darstellung) Browser oder Client des Anwendugnsservers K. Puschke MySQL -
Grundbegriffe Architektur MySQL MySQL DBMS sehr verbreitet in Webanwendungen auch
eingebettet in anderen Anwendungen schwedische Firma MySQL AB, jetzt Sun Microsystems, Übernahme durch Oracle kostenlose Community-Version, freie Software (GPL) kostenpflichtige Enterprise-Version K. Puschke MySQL -
Grundbegriffe Architektur MySQL MySQL Clients und Anwendungen Kommandozeilenclient mysql Webinterface
phpmyadmin MySQL GUI Tools . . . Webanwendungen MediaWiki WordPress . . . Anwendungen mit eingebetteter Datenbank Zimbra . . . K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Datenbankabfragen 4 Überblick verschaffen
5 Einfache Abfragen 6 Ergebnisse einschränken K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Aufgaben Überblick verschaffen SHOW
DATABASES, USE datenbank, SHOW TABLES, DESCRIBE tabelle K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Erste Befehle SHOW DATABASES
zeigt alle Datenbanken USE datenbank wählt Datenbank datenbank aus SHOW TABLES zeigt Tabellen der gewählten Datenbank DESCRIBE tabelle zeigt Spalten der Tabelle an K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Datenbankabfragen 4 Überblick verschaffen
5 Einfache Abfragen 6 Ergebnisse einschränken K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Aufgaben Einfache Abfragen SELECT,
ORDER BY, LIMIT, NULL K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Abfragen I SELECT verlangt
Angabe von Spalte(n) und Tabellen, die auszugeben sind * bedeutet alle Spalten der Tabelle SELECT Name,Vorname FROM KundInnen SELECT * FROM KundInnen ORDER BY sortiert Ausgabe SELECT Name,Vorname FROM KundInnen ORDER BY Name K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Abfragen II LIMIT beschränkt
die Zahl der ausgegeben Einträge häufig mit ORDER BY kombiniert SELECT Name,Vorname FROM KundInnen LIMIT 5 NULL Kein Eintrag (z.B. für Kundin Müller keine Telefonnummer vermerkt): NULL NULL NULL ist etwas anderes als die Zahl Null oder ein leerer String! K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Datenbankabfragen 4 Überblick verschaffen
5 Einfache Abfragen 6 Ergebnisse einschränken K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Aufgaben Ergebnisse einschränken WHERE,
AND, OR, UNION,DISTINCT K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Ergebnisse einschränken I WHERE
schränkt Ergebnisse ein SELECT Name FROM KundInnen WHERE Stadt = ’Salzburg’ SELECT Name FROM KundInnen WHERE Vorname IS NULL K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Ergebnisse einschränken II AND
und OR verknüpfen mehrere Bedingungen SELECT Name FROM KundInnen WHERE Stadt = ’Salzburg’ AND Vorname=’Clara’ K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Abfragen einschränken III UNION
vereinigt Ergebnisse (SELECT Name FROM KundInnen WHERE Stadt =’Salzburg’) UNION (SELECT Name FROM KundInnen WHERE Stadt = ’Wien’) K. Puschke MySQL -
Überblick verschaffen Einfache Abfragen Ergebnisse einschränken Ergebnisse einschränken IV SELECT
DISTINCT gibt nur unterschiedliche Ergebnisse aus SELECT DISTINCT Stadt FROM KundInnen K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Teil III Datenbankdesign K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Datenbankdesign 7 Einführung in die theoretischen Grundlagen Datenbankmodell Datenbankschema 8 Datenbankdesign in der Praxis 9 Qualitätssicherung 10 Datenbank definieren K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Datenbankmodell Konzept zur Beschreibung der Struktur einer Datenbank konzeptionelles Modell: formale Beschreibung eines Teils der Realität K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Konzeptionelles Modell formale Beschreibung eines Ausschnittes der Realität verbreitet: Entity-Relationship-Model (Gegenstand-Beziehungs-Modell) K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Datenbankmodell Konzept zur Beschreibung der Struktur einer Datenbank konzeptionelles Modell: formale Beschreibung eines Teils der Realität logisches Modell: Beschreibung der Implementierung K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Logisches Modell Beschreibung der Implementierung verbreitete Modelle: netzwerkartig hierarchisch relational objektorientiert objektrelational ... K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Relationales Modell E.F. Codd (1970) hohe Verbreitung seit den 80er Jahren, z.B. MySQL PostgreSQL Oracle . . . Datenbank als Sammlung von Relationen (Tabellen) Relation: Menge von Tupeln (Datensätzen, Zeilen) unsortiert keine Duplikate Schema einer Relation (Tabellenstruktur) besteht aus Attributen (Spalten) K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Datenbankmodell Konzept zur Beschreibung der Struktur einer Datenbank konzeptionelles Modell: formale Beschreibung eines Teils der Realität logisches Modell: Beschreibung der Implementierung physisches Modell: Datenspeicherung, Zugriffspfade K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Physisches Modell Wie werden die Daten gespeichert? Auf Platte geschrieben oder nur im Speicher gehalten? Wie auf Dateien aufgeteilt? Was für Dateien? Indizierung K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Datenbankschema Datenbankschema Beschreibung der Datenbankstruktur gespeichert als Metadaten in der Datenbank folgt gewählten Datenmodellen konzeptionelles Schema ER-Modell: ER-Diagramm logisches Schema relationales Modell: Tabellen, Spalten, . . . physische Schema: Storage Engine und Indizierung K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Datenbankmodell Datenbankschema Datenbankzustand Datenbankzustand Daten zu einem bestimmten Zeitpunkt K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Datenbankdesign 7 Einführung in die theoretischen Grundlagen 8 Datenbankdesign in der Praxis Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine 9 Qualitätssicherung 10 Datenbank definieren K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Datenbankdesign Relationale Datenbanken entwerfen Anforderungsanalyse Geschäftsprozesse analysieren,. . . Konzeptionelles Design: konzeptionelles Schema entwerfen Anforderungen in formale Struktur überführen Entitiy-Relationship-Diagramm entwickeln Logisches Design: logisches Schema entwerfen Relationales Datenbankschema entwerfen ER-Diagramm in Tabellen, Spalten usw. übersetzen manuell oder softwaregestützt Physisches Design: Physische Schema entwerfen Storage Engine wählen Indizierung festlegen K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Entity-Relationship-Model Entitiy-Relationship-Model, ER-Modell, ERM, Gegenstand-Beziehungs-Modell: konzeptionelles Datenmodell zur formalen Beschreibung eines Ausschnitts der realen Welt P.P. Chen (1976) K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Entity-Relationship-Model Elemente eines Schemas Entitäten: Gegenstände, Personen,. . . Beziehungen: Verknüpfungen von Entitäten Attribute: Eigenschaften von Entitäten oder Beziehungen Attribute haben Werte (nicht modelliert) Primärschlüssel: Attribut (oder Kombination mehrerer Attribute), welches eine Entität oder Beziehung eindeutig kennzeichnet Kardinalität von Beziehungen: (mögliche) Anzahl beteiligter Entitäten K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine ER-Diagramm ER-Diagramm: grafische Darstellung eines ER-modellierten Schemas verschiedene Notationen vorhanden K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Erstellen von ER-Diagrammen Softwaretools Dia Microsoft Visio MySQL Workbench . . . K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Elemente eines ER-Diagramms Entität: Rechteck Attribut: Kreis Beziehung: Raute Primärschlüssel: unterstrichen Kardinaliäten: Chen-Notation: 1 oder N Min-Max-Notation: Paare mit Einträgen 0,1 oder N, z.B. (1,N) K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine ER-Diagramm K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Aufgaben Datenbankentwurf Anforderungsanalyse, ER-Diagramm K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Vom ER-Diagramm zum Relationalen Schema ein Primärschlüssel für jede Tabelle eine Tabelle für jede Entität eine Tabelle für jede n-m-Beziehung Attribute sind Spalten der jeweiligen Tabelle n-eins-Beziehung als Fremdschlüssel (in der Tabelle der Entität auf der n-Seite) K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Aufgaben Datenbankentwurf Relationales Schema, ER-Diagramm in Tabellen überführen K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Ablauf Konzeptionelles Design: Entity-Relationship-Model Logisches Design: Relationales Schema Physisches Design: Storage Engine Storage Engine Physisches Schema zuständig für Datenspeicherung setzt physisches Modell um MySQL bringt mehrere Storage Engines mit weitere Engines können eingebunden werden Standard Engine in MySQL: MyISAM Index Sequential Access Method zunehmend verbreitet: InnoDB wir verwenden die Standardeinstellungen K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Normalform Datenbankdesign 7 Einführung in die theoretischen Grundlagen 8 Datenbankdesign in der Praxis 9 Qualitätssicherung Normalform 10 Datenbank definieren K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Normalform Aufgabe Normalform Negativbeispiel diskutieren K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Normalform Normalform Normalform Jedes Attribut, das kein Schlüssel ist, hängt direkt vom Schlüssel ab, vom gesamten Schlüssel, und zwar nur vom Schlüssel K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Normalform Daten in Normalform keine Anomalien Konsistenz der Daten keine Redundanzen einfache Wartung effizientes Suchen und Bearbeiten K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Normalform Normalisierung Normalisierung = in Normalform bringen verschiedene Algorithmen ER-Diagramme und daraus abgeleitete relationale Schemata: häufig schon in Normalform ggf. “nachbessern” K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Normalform Normalform Hinweis Die Darstellung zum Thema Normalisierung/Normalform ist sehr vereinfacht. Wer mehr wissen möchte, findet links im Wiki. K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen Datenbankdesign 7 Einführung in die theoretischen Grundlagen 8 Datenbankdesign in der Praxis 9 Qualitätssicherung 10 Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen Umgang mit der MySQL-Doku eckige Klammern umschliessen optionale Klauseln | bedeutet oder nur eine der genannten Alternativen kann/muss benutzt werden geschweifte Klammern: eine der Alternativen muss benutzt werden eckige Klammern: eine oder keine der Alternativen kann benutzt werden Beispiel 1: DROP TABLE [IF EXISTS] tbl_name Beispiel 2: {DESCRIBE | DESC} tbl_name [col_name | wild]} K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen Datenbank definieren Tabellen anlegen Name der Tabelle Storage Engine Beschreibung der Spalten Name der Spalte Datentyp (INT Integer, VARCHAR(20) String mit max. 20 Zeichen) Eintrag obligatorisch? (NULL/NOT NULL) Eintrag eindeutig? (UNIQUE) Schlüssel? (PRIMARY KEY, impliziert NOT NULL und UNIQUE) Default-Wert? (DEFAULT) Extras? (z.B. AUTO_INCREMENT; AUTO_INCREMENT ist kein Standard-SQL!) K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen Tabellen verwalten I Tabelle anlegen CREATE TABLE CREATE TABLE KundInnen (KundNr INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(50) NOT NULL, Vorname VARCHAR(25)) K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen Tabellen verwalten II Informationen über Tabellen DESCRIBE und SHOW CREATE TABLE DESCRIBE KundInnen SHOW CREATE TABLE KundInnen K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen Tabellen verwalten III Tabellenstruktur ändern ALTER TABLE ALTER TABLE KundInnen DROP COLUMN Vorname . . . ALTER TABLE Vorsicht! Viele Stolperfallen! K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen Tabellen verwalten IV Tabellen löschen DROP TABLE DROP TABLE KundInnen K. Puschke MySQL -
Einführung in die theoretischen Grundlagen Datenbankdesign in der Praxis Qualitätssicherung
Datenbank definieren Exkurs: Die MySQL-Dokumentation Tabellen anlegen Aufgaben Datenbank definieren CREATE TABLE, DROP TABLE, SHOW CREATE TABLE K. Puschke MySQL -
Allgemein SQL Datenbanksprachen Data Definition Language (DDL) Definition des Datenbankschemas
Data Manipulation Language (DML) Daten abfragen und verändern Data Control Language (DCL) Zugriffsrechte Data Administration Language (DAL) finetuning, Zugriffspfad K. Puschke MySQL -
Allgemein SQL SQL Structured Query Language Vorgänger: SEQUEL Sprache relationaler
DBMS beinhaltet DDL, DML, DCL, DAL deklarative Sprache beschreibt, was zu tun ist, nicht wie erweitert um prozedurale Funktionalitäten (Ablaufsteuerung) Konvention: Befehle und Co. in Großbuchstaben schreiben SELECT * FROM kurse K. Puschke MySQL -
Allgemein SQL SQL Implementierungen sehr verbreitet, z.B. MySQL, PostgreSQL, Oracle
u.v.a. fast alle Systeme implementieren nicht den kompletten Standard implementieren eigene Erweiterungen daher: Kompatibilität der Systeme eingeschränkt K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Teil V Datenbanken erzeugen
und manipulieren K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Datenbanken erzeugen und manipulieren
13 Daten eintragen, ändern, löschen 14 Tabellen verknüpfen K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Aufgaben Datenbank erzeugen und
manipulieren INSERT, UPDATE, DELETE K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Datenbank erzeugen und manipulieren
Daten eintragen INSERT INSERT INTO KundInnen (Name,Vorname) VALUES (’Example’,’Erna’) K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Datenbank erzeugen und manipulieren
Daten ändern UPDATE UPDATE KundInnen SET TelefonNr=’1234567’ WHERE KundNr=’666’ K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Datenbank erzeugen und manipulieren
Daten entfernen DELETE DELETE FROM KundInnen WHERE Stadt=’Wien’ K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Datenbanken erzeugen und manipulieren
13 Daten eintragen, ändern, löschen 14 Tabellen verknüpfen K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Deskriptoren für Objekte in
SQL Objekt: Tabelle, Spalte,. . . kein Objekt im Sinne von OO-Programmierung! Deskriptor: identifiziert das Objekt (z.B. Spaltenname) unterschiedlich für die verschiedenen Datenbanksystem K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Deskriptoren für Objekte in
MySQL Vollständig Tabelle: Datenbank.Tabelle Spalte: Datenbank.Tabelle.Spalte Abkürzung Angabe der Datenbank kann entfallen, wenn die mit USE voreingestellte benutzt werden soll Angabe der Tabelle kann zusätzlich entfallen, wenn Spaltenname innerhalb der verwendeten Tabellen eindeutig K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Tabellen verknüpfen JOIN Abfragen
über mehrere Tabellen Tabellen verknüpfen (JOIN) verknüpfe Zeilen, ggf. gemäß einer Bedingung (an gemeinsame Attribute) über verknüpften Tabellen SELECT durchführen K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Tabellen verknüpfen Beispiel KundInnen
KundNr Name Vorname 1 Example Erna 2 Kundin Karla Bestellungen KundNr ArtikelNr 2 5 1 4 2 6 K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Tabellen verknüpfen Cross Join,
Cartesisches Produkt KundNr Name Vorname KundNr ArtikelNr 1 Example Erna 1 4 1 Example Erna 2 5 1 Example Erna 2 6 2 Kundin Karla 2 6 2 Kundin Karla 2 5 2 Kundin Karla 2 6 K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen Tabellen verknüpfen Theta Join
Verknüpfungsbedingung: KundInnen.KundNr = Bestellungen.KundNr KundNr Name Vorname KundNr ArtikelNr 1 Example Erna 1 4 2 Kundin Karla 2 5 2 Kundin Karla 2 6 K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen JOIN-Syntax INNER JOIN Zeilen
ohne Entsprechung in der anderen Tabelle entfallen SELECT Name, Vorname, ArtikelNr FROM KundInnen INNER JOIN Bestellungen ON KundInnen.KundNr = Bestellungen.KundNr K. Puschke MySQL -
Daten eintragen, ändern, löschen Tabellen verknüpfen JOIN-Syntax OUTER JOIN Zeilen
ohne Entsprechung in der anderen Tabelle werden mit NULL-Einträgen ergänzt LEFT JOIN: alle Zeilen der linken Tabelle, dazu nur Zeilen der rechten Tabelle, die eine Entsprechung in der linken Tabelle haben SELECT Name, Vorname, ArtikelNr FROM KundInnen INNER JOIN Bestellungen ON KundInnen.KundNr = Bestellungen.KundNr zeigt auch KundInnen, die nichts bestellt haben K. Puschke MySQL -
Datenbanken vs. Dateien Relationale Datenbanksysteme Teil VI Vor- und Nachteile
von Datenbanken K. Puschke MySQL -
Datenbanken vs. Dateien Relationale Datenbanksysteme Vorteile von Datenbanksystemen Nachteile von
Datenbanksystemen Vor- und Nachteile von Datenbanken 15 Datenbanken vs. Dateien Vorteile von Datenbanksystemen Nachteile von Datenbanksystemen 16 Relationale Datenbanksysteme K. Puschke MySQL -
Datenbanken vs. Dateien Relationale Datenbanksysteme Vorteile von Datenbanksystemen Nachteile von
Datenbanksystemen Vorteile von Datenbanksystemen Daten und Datenstruktur enthalten Datenstruktur als Metadaten im DBS gespeichert konkurrierende, gleichzeitige Zugriffe handhaben Fehlertoleranz Sicherheit (Zugriffsschutz) und Flexibilität durch Trennung von Anwendung und Daten große Datenmengen beherrschbar K. Puschke MySQL -
Datenbanken vs. Dateien Relationale Datenbanksysteme Vorteile von Datenbanksystemen Nachteile von
Datenbanksystemen Trennung von Anwendung und Daten Externe Sichten Trennung von physischer Ebene, logischer Ebene und externer Ebene (Sicht) Sicht: user-abhängige Zugriffsmöglichkeit und Präsentation der Daten Beispiel: Zugriffsschutz Beispiel: Prüfungsbüro hat Zugriff auf andere Daten als Studierendenverwaltung angepaßte Präsentation der Daten kleinere Änderung auf einer Ebene beeinflußt andere Ebenen nicht K. Puschke MySQL -
Datenbanken vs. Dateien Relationale Datenbanksysteme Vorteile von Datenbanksystemen Nachteile von
Datenbanksystemen Nachteile von Datenbanksystemen nicht alle Datenbanksysteme bieten die genannten Vorteile Aufwand nicht immer gerechtfertigt insbesondere unterschiedliche Sichten aufwändig Beherrschbarkeit großer Datenmengen verleitet zu ausufernder Datensammlung oder Verknüpfung von Daten Mißachtung des Datenschutzes, insbesondere der gebotenen Datensparsamkeit drängt sich u.U. auf K. Puschke MySQL -
Datenbanken vs. Dateien Relationale Datenbanksysteme Vor- und Nachteile von Datenbanken
15 Datenbanken vs. Dateien 16 Relationale Datenbanksysteme K. Puschke MySQL -
Datenbanken vs. Dateien Relationale Datenbanksysteme Relationale Datenbanksysteme Daten stark strukturiert
nachträgliche Änderung des Schemas problematisch gut geeignet für stark strukturierte Daten z.B. Adressdaten weniger geeignet für flexible Strukturen z.B. user generated content nicht für verteilte Systeme optimiert hohe Verbreitung auch in diesen Bereichen lange Zeit quasi alternativlos K. Puschke MySQL -
Aggregierte Daten Aufgaben Aggregierte Daten COUNT, SUM, MAX,... GROUP BY,
HAVING K. Puschke MySQL -
Aggregierte Daten Aggregierte Daten COUNT gibt Anzahl der Datensätze aus
SELECT COUNT(*) FROM KundInnen WHERE Stadt=’WIEN’ liefert Anzahl der KundInnen aus Wien SUM,AVG,MAX,MIN Summe, Durchschnitt, Maximum, Minimum SELECT SUM(Rechnungsbetrag) FROM Rechnungen K. Puschke MySQL -
Aggregierte Daten GROUP BY und HAVING GROUP BY läßt Zeilen
mit gemeinsamem Attributwert aggregieren SELECT Name, COUNT(*) FROM KundInnen gibt aus, wieviele KundInnen jeweils den gleichen Nachnamen haben HAVING schränkt Ergebnisse ein SELECT Name, COUNT(*) FROM KundInnen HAVING COUNT(*) > 1 zeigt nur Namen, die mehrfach vorkommen K. Puschke MySQL -
Aggregierte Daten GROUP BY und HAVING HAVING vs. WHERE WHERE
stellt Bedingungen an die Spalten, die in die Berechnung eingehen HAVING stellt Bedingungen an die Ergebnisse der Berechnung Spalten Keine Spalten in SELECT und HAVING eintragen, die nicht in GROUP BY stehen! K. Puschke MySQL