einstieg in relationale datenbanken mit mysql (folien)
Post on 17-May-2015
4.043 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
top related