Einstieg in relationale Datenbanken mit MySQL (Folien)

Preview:

DESCRIPTION

Folien zum Workshop "Einstieg in relationale Datenbanken mit MySQL", September 2009

Citation preview

Einstieg in relationale Datenbankenmit MySQL

Dr. Kerstin Puschke

Workshop, Uni Salzburg

September 2009

K. Puschke MySQL

Lizenz

LizenzDieser Text steht unter einer Creative CommonsAttribution-Share Alike 3.0 Germany Lizenz, siehehttp://creativecommons.org/licenses/by-sa/3.0/de/

K. Puschke MySQL

Teil I: Einführung

1 Grundbegriffe

2 Architektur

3 MySQL

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 IV: Datenbanksprachen

11 Allgemein

12 SQL

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

Teil VII: Datenbanken manipulieren - WeitereMöglichkeiten

17 Aggregierte Daten

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

Teil I

Einführung

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

Einführung

1 Grundbegriffe

2 Architektur

3 MySQL

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

DatenbanksystemDatenbank und Datenbankmanagementsystem

Datenbanksystem dient der Speicherung und Verwaltungvon Daten

besteht aus Datenbanken undDatenbankmanagementsystem (DBMS)

Datenbank: strukturiert abgelegte Datenzu verwaltende Daten, z.B. AdressenDatenbankschema: Metadaten zur Datenbankdefinition

Datenbankmanagementsystem: Software zur Verwaltungder Daten

Datenbank definieren, erzeugen, manipulieren

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

Einführung

1 Grundbegriffe

2 Architektur

3 MySQL

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

Client und Server

Datenbankserver : Software, die Datenbankdienste (einDatenbanksystem) anbietet

auch der Rechner, auf dem dieser Dienst läuft

Anwendung oder Client greift auf den Datenbankserver zu

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

Architektur

MainframeGroßrechner (Zugriff über Terminals)

Zwei-Schichten-ArchitekturDatenbankserverAnwendung, ClientAnwendungslogik und Darstellung/Benutzeroberfläche

Drei-Schichten-ArchitekturDatenbankserverAnwendung (Anwendungslogik)Webserver oder Anwendungsserver (Darstellung)Browser oder Client des Anwendugnsservers

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

Einführung

1 Grundbegriffe

2 Architektur

3 MySQL

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

MySQL

DBMSsehr verbreitet in Webanwendungenauch eingebettet in anderen Anwendungenschwedische Firma MySQL AB, jetzt Sun Microsystems,Übernahme durch Oraclekostenlose Community-Version, freie Software (GPL)kostenpflichtige Enterprise-Version

K. Puschke MySQL

GrundbegriffeArchitektur

MySQL

MySQLClients und Anwendungen

Kommandozeilenclient mysqlWebinterface phpmyadmin

MySQL GUI Tools

. . .Webanwendungen

MediaWikiWordPress. . .

Anwendungen mit eingebetteter DatenbankZimbra. . .

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Teil II

Datenbankabfragen

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Datenbankabfragen

4 Überblick verschaffen

5 Einfache Abfragen

6 Ergebnisse einschränken

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Aufgaben

Überblick verschaffenSHOW DATABASES, USE datenbank, SHOW TABLES,DESCRIBE tabelle

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Erste Befehle

SHOW DATABASES zeigt alle DatenbankenUSE datenbank wählt Datenbank datenbank ausSHOW TABLES zeigt Tabellen der gewählten DatenbankDESCRIBE tabelle zeigt Spalten der Tabelle an

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Datenbankabfragen

4 Überblick verschaffen

5 Einfache Abfragen

6 Ergebnisse einschränken

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Aufgaben

Einfache AbfragenSELECT, ORDER BY, LIMIT, NULL

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Abfragen I

SELECT

verlangt Angabe von Spalte(n) und Tabellen, dieauszugeben sind

* bedeutet alle Spalten der TabelleSELECT Name,Vorname FROM KundInnen

SELECT * FROM KundInnen

ORDER BY

sortiert AusgabeSELECT Name,Vorname FROM KundInnen ORDER BYName

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Abfragen II

LIMIT

beschränkt die Zahl der ausgegeben Einträgehäufig mit ORDER BY kombiniertSELECT Name,Vorname FROM KundInnen LIMIT 5

NULL

Kein Eintrag (z.B. für Kundin Müller keine Telefonnummervermerkt): NULL

NULL

NULL ist etwas anderes als die Zahl Null oder ein leererString!

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Datenbankabfragen

4 Überblick verschaffen

5 Einfache Abfragen

6 Ergebnisse einschränken

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Aufgaben

Ergebnisse einschränkenWHERE, AND, OR, UNION,DISTINCT

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Ergebnisse einschränken I

WHERE

schränkt Ergebnisse einSELECT Name FROM KundInnen WHERE Stadt =’Salzburg’

SELECT Name FROM KundInnen WHERE Vorname ISNULL

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Ergebnisse einschränken II

AND und OR

verknüpfen mehrere BedingungenSELECT Name FROM KundInnen WHERE Stadt =’Salzburg’ AND Vorname=’Clara’

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Abfragen einschränken III

UNION

vereinigt Ergebnisse(SELECT Name FROM KundInnen WHERE Stadt=’Salzburg’) UNION (SELECT Name FROMKundInnen WHERE Stadt = ’Wien’)

K. Puschke MySQL

Überblick verschaffenEinfache Abfragen

Ergebnisse einschränken

Ergebnisse einschränken IV

SELECT DISTINCT

gibt nur unterschiedliche Ergebnisse ausSELECT DISTINCT Stadt FROM KundInnen

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Teil III

Datenbankdesign

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Datenbankdesign

7 Einführung in die theoretischen GrundlagenDatenbankmodellDatenbankschema

8 Datenbankdesign in der Praxis

9 Qualitätssicherung

10 Datenbank definieren

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Datenbankmodell

Konzept zur Beschreibung der Struktur einer Datenbankkonzeptionelles Modell: formale Beschreibung eines Teilsder Realität

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Konzeptionelles Modell

formale Beschreibung eines Ausschnittes der Realitätverbreitet: Entity-Relationship-Model(Gegenstand-Beziehungs-Modell)

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Datenbankmodell

Konzept zur Beschreibung der Struktur einer Datenbankkonzeptionelles Modell: formale Beschreibung eines Teilsder Realitätlogisches Modell: Beschreibung der Implementierung

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Logisches Modell

Beschreibung der Implementierungverbreitete Modelle:

netzwerkartighierarchischrelationalobjektorientiertobjektrelational...

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Relationales Modell

E.F. Codd (1970)hohe Verbreitung seit den 80er Jahren, z.B.

MySQLPostgreSQLOracle. . .

Datenbank als Sammlung von Relationen (Tabellen)Relation: Menge von Tupeln (Datensätzen, Zeilen)

unsortiertkeine Duplikate

Schema einer Relation (Tabellenstruktur) besteht ausAttributen (Spalten)

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Datenbankmodell

Konzept zur Beschreibung der Struktur einer Datenbankkonzeptionelles Modell: formale Beschreibung eines Teilsder Realitätlogisches Modell: Beschreibung der Implementierungphysisches Modell: Datenspeicherung, Zugriffspfade

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

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 GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Datenbankschema

DatenbankschemaBeschreibung der Datenbankstrukturgespeichert als Metadaten in der Datenbankfolgt gewählten Datenmodellen

konzeptionelles SchemaER-Modell: ER-Diagrammlogisches Schemarelationales Modell: Tabellen, Spalten, . . .physische Schema:Storage Engine und Indizierung

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

DatenbankmodellDatenbankschema

Datenbankzustand

DatenbankzustandDaten zu einem bestimmten Zeitpunkt

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Datenbankdesign

7 Einführung in die theoretischen Grundlagen

8 Datenbankdesign in der PraxisAblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

9 Qualitätssicherung

10 Datenbank definieren

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

DatenbankdesignRelationale Datenbanken entwerfen

AnforderungsanalyseGeschäftsprozesse analysieren,. . .

Konzeptionelles Design: konzeptionelles Schemaentwerfen

Anforderungen in formale Struktur überführenEntitiy-Relationship-Diagramm entwickeln

Logisches Design: logisches Schema entwerfenRelationales Datenbankschema entwerfenER-Diagramm in Tabellen, Spalten usw. übersetzenmanuell oder softwaregestützt

Physisches Design: Physische Schema entwerfenStorage Engine wählenIndizierung festlegen

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Entity-Relationship-Model

Entitiy-Relationship-Model, ER-Modell, ERM,Gegenstand-Beziehungs-Modell:konzeptionelles Datenmodell zur formalen Beschreibungeines Ausschnitts der realen WeltP.P. Chen (1976)

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Entity-Relationship-ModelElemente eines Schemas

Entitäten: Gegenstände, Personen,. . .Beziehungen: Verknüpfungen von EntitätenAttribute: Eigenschaften von Entitäten oder BeziehungenAttribute haben Werte (nicht modelliert)Primärschlüssel : Attribut (oder Kombination mehrererAttribute), welches eine Entität oder Beziehung eindeutigkennzeichnetKardinalität von Beziehungen: (mögliche) Anzahlbeteiligter Entitäten

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

ER-Diagramm

ER-Diagramm: grafische Darstellung einesER-modellierten Schemasverschiedene Notationen vorhanden

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Erstellen von ER-DiagrammenSoftwaretools

DiaMicrosoft VisioMySQL Workbench. . .

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Elemente eines ER-Diagramms

Entität: RechteckAttribut: KreisBeziehung: RautePrimärschlüssel: unterstrichenKardinaliäten:

Chen-Notation: 1 oder NMin-Max-Notation: Paare mit Einträgen 0,1 oder N, z.B.(1,N)

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

ER-Diagramm

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Aufgaben

DatenbankentwurfAnforderungsanalyse, ER-Diagramm

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Vom ER-Diagramm zum Relationalen Schema

ein Primärschlüssel für jede Tabelleeine Tabelle für jede Entitäteine Tabelle für jede n-m-BeziehungAttribute sind Spalten der jeweiligen Tabellen-eins-Beziehung als Fremdschlüssel (in der Tabelle derEntität auf der n-Seite)

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Aufgaben

DatenbankentwurfRelationales Schema, ER-Diagramm in Tabellen überführen

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

AblaufKonzeptionelles Design: Entity-Relationship-ModelLogisches Design: Relationales SchemaPhysisches Design: Storage Engine

Storage EnginePhysisches Schema

zuständig für Datenspeicherungsetzt physisches Modell umMySQL bringt mehrere Storage Engines mitweitere Engines können eingebunden werdenStandard Engine in MySQL: MyISAMIndex Sequential Access Methodzunehmend verbreitet: InnoDBwir verwenden die Standardeinstellungen

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Normalform

Datenbankdesign

7 Einführung in die theoretischen Grundlagen

8 Datenbankdesign in der Praxis

9 QualitätssicherungNormalform

10 Datenbank definieren

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Normalform

Aufgabe

NormalformNegativbeispiel diskutieren

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Normalform

Normalform

NormalformJedes Attribut, das kein Schlüssel ist, hängt direkt vomSchlüssel ab, vom gesamten Schlüssel, und zwar nur vomSchlüssel

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Normalform

Daten in Normalform

keine AnomalienKonsistenz der Datenkeine Redundanzeneinfache Wartungeffizientes Suchen und Bearbeiten

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Normalform

Normalisierung

Normalisierung = in Normalform bringenverschiedene AlgorithmenER-Diagramme und daraus abgeleitete relationaleSchemata:

häufig schon in Normalformggf. “nachbessern”

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Normalform

Normalform

HinweisDie Darstellung zum Thema Normalisierung/Normalform istsehr vereinfacht. Wer mehr wissen möchte, findet links im Wiki.

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Exkurs: Die MySQL-DokumentationTabellen anlegen

Datenbankdesign

7 Einführung in die theoretischen Grundlagen

8 Datenbankdesign in der Praxis

9 Qualitätssicherung

10 Datenbank definierenExkurs: Die MySQL-DokumentationTabellen anlegen

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Exkurs: Die MySQL-DokumentationTabellen anlegen

Umgang mit der MySQL-Doku

eckige Klammern umschliessen optionale Klauseln| bedeutet odernur eine der genannten Alternativen kann/muss benutztwerdengeschweifte Klammern: eine der Alternativen muss benutztwerdeneckige Klammern: eine oder keine der Alternativen kannbenutzt werdenBeispiel 1: DROP TABLE [IF EXISTS] tbl_name

Beispiel 2: {DESCRIBE | DESC} tbl_name[col_name | wild]}

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Exkurs: Die MySQL-DokumentationTabellen anlegen

Datenbank definierenTabellen anlegen

Name der TabelleStorage EngineBeschreibung der Spalten

Name der SpalteDatentyp (INT Integer, VARCHAR(20) String mit max. 20Zeichen)Eintrag obligatorisch? (NULL/NOT NULL)Eintrag eindeutig? (UNIQUE)Schlüssel? (PRIMARY KEY, impliziert NOT NULL undUNIQUE)Default-Wert? (DEFAULT)Extras? (z.B. AUTO_INCREMENT;AUTO_INCREMENT ist kein Standard-SQL!)

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Exkurs: Die MySQL-DokumentationTabellen anlegen

Tabellen verwalten ITabelle anlegen

CREATE TABLE

CREATE TABLE KundInnen (KundNr INT PRIMARY KEYAUTO_INCREMENT, Name VARCHAR(50) NOT NULL,Vorname VARCHAR(25))

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Exkurs: Die MySQL-DokumentationTabellen anlegen

Tabellen verwalten IIInformationen über Tabellen

DESCRIBE und SHOW CREATE TABLE

DESCRIBE KundInnenSHOW CREATE TABLE KundInnen

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Exkurs: Die MySQL-DokumentationTabellen anlegen

Tabellen verwalten IIITabellenstruktur ändern

ALTER TABLE

ALTER TABLE KundInnen DROP COLUMN Vorname. . .

ALTER TABLE

Vorsicht! Viele Stolperfallen!

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Exkurs: Die MySQL-DokumentationTabellen anlegen

Tabellen verwalten IVTabellen löschen

DROP TABLE

DROP TABLE KundInnen

K. Puschke MySQL

Einführung in die theoretischen GrundlagenDatenbankdesign in der Praxis

QualitätssicherungDatenbank definieren

Exkurs: Die MySQL-DokumentationTabellen anlegen

Aufgaben

Datenbank definierenCREATE TABLE, DROP TABLE, SHOW CREATE TABLE

K. Puschke MySQL

AllgemeinSQL

Teil IV

Datenbanksprachen

K. Puschke MySQL

AllgemeinSQL

Datenbanksprachen

11 Allgemein

12 SQL

K. Puschke MySQL

AllgemeinSQL

Datenbanksprachen

Data Definition Language (DDL)Definition des DatenbankschemasData Manipulation Language (DML)Daten abfragen und verändernData Control Language (DCL)ZugriffsrechteData Administration Language (DAL)finetuning, Zugriffspfad

K. Puschke MySQL

AllgemeinSQL

Datenbanksprachen

11 Allgemein

12 SQL

K. Puschke MySQL

AllgemeinSQL

SQL

Structured Query LanguageVorgänger: SEQUELSprache relationaler DBMSbeinhaltet DDL, DML, DCL, DALdeklarative Sprachebeschreibt, was zu tun ist, nicht wieerweitert um prozedurale Funktionalitäten(Ablaufsteuerung)Konvention: Befehle und Co. in Großbuchstaben schreibenSELECT * FROM kurse

K. Puschke MySQL

AllgemeinSQL

SQLImplementierungen

sehr verbreitet, z.B. MySQL, PostgreSQL, Oracle u.v.a.fast alle Systeme

implementieren nicht den kompletten Standardimplementieren eigene Erweiterungen

daher: Kompatibilität der Systeme eingeschränkt

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Teil V

Datenbanken erzeugen und manipulieren

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Datenbanken erzeugen und manipulieren

13 Daten eintragen, ändern, löschen

14 Tabellen verknüpfen

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Aufgaben

Datenbank erzeugen und manipulierenINSERT, UPDATE, DELETE

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Datenbank erzeugen und manipulierenDaten eintragen

INSERT

INSERT INTO KundInnen (Name,Vorname) VALUES(’Example’,’Erna’)

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Datenbank erzeugen und manipulierenDaten ändern

UPDATE

UPDATE KundInnen SET TelefonNr=’1234567’ WHEREKundNr=’666’

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Datenbank erzeugen und manipulierenDaten entfernen

DELETE

DELETE FROM KundInnen WHERE Stadt=’Wien’

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Datenbanken erzeugen und manipulieren

13 Daten eintragen, ändern, löschen

14 Tabellen verknüpfen

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen 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öschenTabellen verknüpfen

Deskriptoren für Objekte in MySQL

VollständigTabelle: Datenbank.TabelleSpalte: Datenbank.Tabelle.Spalte

Abkürzung

Angabe der Datenbank kann entfallen, wenn die mit USEvoreingestellte benutzt werden sollAngabe der Tabelle kann zusätzlich entfallen, wennSpaltenname innerhalb der verwendeten Tabelleneindeutig

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Tabellen verknüpfenJOIN

Abfragen über mehrere TabellenTabellen verknüpfen (JOIN)verknüpfe Zeilen, ggf. gemäß einer Bedingung (angemeinsame Attribute)über verknüpften Tabellen SELECT durchführen

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Tabellen verknüpfenBeispiel

KundInnenKundNr Name Vorname1 Example Erna2 Kundin Karla

BestellungenKundNr ArtikelNr2 51 42 6

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Tabellen verknüpfenCross Join, Cartesisches Produkt

KundNr Name Vorname KundNr ArtikelNr1 Example Erna 1 41 Example Erna 2 51 Example Erna 2 62 Kundin Karla 2 62 Kundin Karla 2 52 Kundin Karla 2 6

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Tabellen verknüpfenTheta Join

Verknüpfungsbedingung:KundInnen.KundNr = Bestellungen.KundNr

KundNr Name Vorname KundNr ArtikelNr1 Example Erna 1 42 Kundin Karla 2 52 Kundin Karla 2 6

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

Aufgaben

Tabellen verknüpfenJOIN

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

JOIN-SyntaxINNER JOIN

Zeilen ohne Entsprechung in der anderen Tabelle entfallenSELECT Name, Vorname, ArtikelNr FROMKundInnen INNER JOIN Bestellungen ONKundInnen.KundNr = Bestellungen.KundNr

K. Puschke MySQL

Daten eintragen, ändern, löschenTabellen verknüpfen

JOIN-SyntaxOUTER JOIN

Zeilen ohne Entsprechung in der anderen Tabelle werdenmit NULL-Einträgen ergänztLEFT JOIN: alle Zeilen der linken Tabelle, dazu nur Zeilender rechten Tabelle, die eine Entsprechung in der linkenTabelle habenSELECT Name, Vorname, ArtikelNr FROMKundInnen INNER JOIN Bestellungen ONKundInnen.KundNr = Bestellungen.KundNr zeigtauch KundInnen, die nichts bestellt haben

K. Puschke MySQL

Datenbanken vs. DateienRelationale Datenbanksysteme

Teil VI

Vor- und Nachteile von Datenbanken

K. Puschke MySQL

Datenbanken vs. DateienRelationale Datenbanksysteme

Vorteile von DatenbanksystemenNachteile von Datenbanksystemen

Vor- und Nachteile von Datenbanken

15 Datenbanken vs. DateienVorteile von DatenbanksystemenNachteile von Datenbanksystemen

16 Relationale Datenbanksysteme

K. Puschke MySQL

Datenbanken vs. DateienRelationale Datenbanksysteme

Vorteile von DatenbanksystemenNachteile von Datenbanksystemen

Vorteile von Datenbanksystemen

Daten und Datenstruktur enthaltenDatenstruktur als Metadaten im DBS gespeichertkonkurrierende, gleichzeitige Zugriffe handhabenFehlertoleranzSicherheit (Zugriffsschutz) und Flexibilität durchTrennung von Anwendung und Datengroße Datenmengen beherrschbar

K. Puschke MySQL

Datenbanken vs. DateienRelationale Datenbanksysteme

Vorteile von DatenbanksystemenNachteile von Datenbanksystemen

Trennung von Anwendung und DatenExterne Sichten

Trennung von physischer Ebene, logischer Ebene undexterner Ebene (Sicht)Sicht : user-abhängige Zugriffsmöglichkeit undPräsentation der DatenBeispiel:

ZugriffsschutzBeispiel: Prüfungsbüro hat Zugriff auf andere Daten alsStudierendenverwaltungangepaßte Präsentation der Daten

kleinere Änderung auf einer Ebene beeinflußt andereEbenen nicht

K. Puschke MySQL

Datenbanken vs. DateienRelationale Datenbanksysteme

Vorteile von DatenbanksystemenNachteile von Datenbanksystemen

Nachteile von Datenbanksystemen

nicht alle Datenbanksysteme bieten die genannten VorteileAufwand nicht immer gerechtfertigtinsbesondere unterschiedliche Sichten aufwändigBeherrschbarkeit großer Datenmengen verleitet zuausufernder Datensammlung oder Verknüpfung von Daten

Mißachtung des Datenschutzes, insbesondere dergebotenen Datensparsamkeit drängt sich u.U. auf

K. Puschke MySQL

Datenbanken vs. DateienRelationale Datenbanksysteme

Vor- und Nachteile von Datenbanken

15 Datenbanken vs. Dateien

16 Relationale Datenbanksysteme

K. Puschke MySQL

Datenbanken vs. DateienRelationale Datenbanksysteme

Relationale Datenbanksysteme

Daten stark strukturiertnachträgliche Änderung des Schemas problematisch

gut geeignet für stark strukturierte Datenz.B. Adressdatenweniger geeignet für flexible Strukturenz.B. user generated content

nicht für verteilte Systeme optimierthohe Verbreitung auch in diesen Bereichenlange Zeit quasi alternativlos

K. Puschke MySQL

Aggregierte Daten

Teil VII

Datenbank manipulieren - WeitereMöglichkeiten

K. Puschke MySQL

Aggregierte Daten

Datenbank manipulieren - Weitere Möglichkeiten

17 Aggregierte Daten

K. Puschke MySQL

Aggregierte Daten

Aufgaben

Aggregierte DatenCOUNT, SUM, MAX,...GROUP BY, HAVING

K. Puschke MySQL

Aggregierte Daten

Aggregierte Daten

COUNT

gibt Anzahl der Datensätze ausSELECT COUNT(*) FROM KundInnen WHEREStadt=’WIEN’liefert Anzahl der KundInnen aus Wien

SUM,AVG,MAX,MIN

Summe, Durchschnitt, Maximum, MinimumSELECT SUM(Rechnungsbetrag) FROM Rechnungen

K. Puschke MySQL

Aggregierte Daten

GROUP BY und HAVING

GROUP BY

läßt Zeilen mit gemeinsamem Attributwert aggregierenSELECT Name, COUNT(*) FROM KundInnengibt aus, wieviele KundInnen jeweils den gleichenNachnamen haben

HAVING

schränkt Ergebnisse einSELECT Name, COUNT(*) FROM KundInnen HAVINGCOUNT(*) > 1zeigt nur Namen, die mehrfach vorkommen

K. Puschke MySQL

Aggregierte Daten

GROUP BY und HAVING

HAVING vs. WHEREWHERE stellt Bedingungen an die Spalten, die in dieBerechnung eingehenHAVING stellt Bedingungen an die Ergebnisse derBerechnung

SpaltenKeine Spalten in SELECT und HAVING eintragen, die nicht inGROUP BY stehen!

K. Puschke MySQL

Recommended