Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Einstieg in relationale Datenbanken mit MySQL (Folien)
1. Einstieg in relationale Datenbanken
mit MySQL
Dr. Kerstin Puschke
Workshop, Uni Salzburg
September 2009
K. Puschke MySQL
2. 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
3. Teil I: Einführung
1 Grundbegriffe
2 Architektur
3 MySQL
K. Puschke MySQL
4. Teil II: Datenbankabfragen
4 Überblick verschaffen
5 Einfache Abfragen
6 Ergebnisse einschränken
K. Puschke MySQL
5. Teil III: Datenbankdesign
7 Einführung in die theoretischen Grundlagen
8 Datenbankdesign in der Praxis
9 Qualitätssicherung
10 Datenbank definieren
K. Puschke MySQL
11. Grundbegriffe
Architektur
MySQL
Einführung
1 Grundbegriffe
2 Architektur
3 MySQL
K. Puschke MySQL
12. 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
13. Grundbegriffe
Architektur
MySQL
Einführung
1 Grundbegriffe
2 Architektur
3 MySQL
K. Puschke MySQL
14. 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
15. 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
16. Grundbegriffe
Architektur
MySQL
Einführung
1 Grundbegriffe
2 Architektur
3 MySQL
K. Puschke MySQL
17. 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
18. 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
19. Überblick verschaffen
Einfache Abfragen
Ergebnisse einschränken
Teil II
Datenbankabfragen
K. Puschke MySQL
20. Überblick verschaffen
Einfache Abfragen
Ergebnisse einschränken
Datenbankabfragen
4 Überblick verschaffen
5 Einfache Abfragen
6 Ergebnisse einschränken
K. Puschke MySQL
21. Überblick verschaffen
Einfache Abfragen
Ergebnisse einschränken
Aufgaben
Überblick verschaffen
SHOW DATABASES, USE datenbank, SHOW TABLES,
DESCRIBE tabelle
K. Puschke MySQL
22. Ü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
23. Überblick verschaffen
Einfache Abfragen
Ergebnisse einschränken
Datenbankabfragen
4 Überblick verschaffen
5 Einfache Abfragen
6 Ergebnisse einschränken
K. Puschke MySQL
24. Überblick verschaffen
Einfache Abfragen
Ergebnisse einschränken
Aufgaben
Einfache Abfragen
SELECT, ORDER BY, LIMIT, NULL
K. Puschke MySQL
25. Ü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
26. Ü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
27. Überblick verschaffen
Einfache Abfragen
Ergebnisse einschränken
Datenbankabfragen
4 Überblick verschaffen
5 Einfache Abfragen
6 Ergebnisse einschränken
K. Puschke MySQL
28. Überblick verschaffen
Einfache Abfragen
Ergebnisse einschränken
Aufgaben
Ergebnisse einschränken
WHERE, AND, OR, UNION,DISTINCT
K. Puschke MySQL
29. Ü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
30. Ü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
31. Ü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
32. Ü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
33. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis
Qualitätssicherung
Datenbank definieren
Teil III
Datenbankdesign
K. Puschke MySQL
34. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
Datenbankdesign
7 Einführung in die theoretischen Grundlagen
Datenbankmodell
Datenbankschema
8 Datenbankdesign in der Praxis
9 Qualitätssicherung
10 Datenbank definieren
K. Puschke MySQL
35. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
Datenbankmodell
Konzept zur Beschreibung der Struktur einer Datenbank
konzeptionelles Modell: formale Beschreibung eines Teils
der Realität
K. Puschke MySQL
36. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
Konzeptionelles Modell
formale Beschreibung eines Ausschnittes der Realität
verbreitet: Entity-Relationship-Model
(Gegenstand-Beziehungs-Modell)
K. Puschke MySQL
37. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
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
38. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
Logisches Modell
Beschreibung der Implementierung
verbreitete Modelle:
netzwerkartig
hierarchisch
relational
objektorientiert
objektrelational
...
K. Puschke MySQL
39. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
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
40. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
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
41. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
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
42. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
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
43. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Datenbankmodell
Qualitätssicherung Datenbankschema
Datenbank definieren
Datenbankzustand
Datenbankzustand
Daten zu einem bestimmten Zeitpunkt
K. Puschke MySQL
44. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren 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
45. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren 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
46. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren 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
47. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren 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
48. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren Physisches Design: Storage Engine
ER-Diagramm
ER-Diagramm: grafische Darstellung eines
ER-modellierten Schemas
verschiedene Notationen vorhanden
K. Puschke MySQL
49. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren Physisches Design: Storage Engine
Erstellen von ER-Diagrammen
Softwaretools
Dia
Microsoft Visio
MySQL Workbench
...
K. Puschke MySQL
50. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren 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
51. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren Physisches Design: Storage Engine
ER-Diagramm
K. Puschke MySQL
52. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren Physisches Design: Storage Engine
Aufgaben
Datenbankentwurf
Anforderungsanalyse, ER-Diagramm
K. Puschke MySQL
53. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren 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
54. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren Physisches Design: Storage Engine
Aufgaben
Datenbankentwurf
Relationales Schema, ER-Diagramm in Tabellen überführen
K. Puschke MySQL
55. Einführung in die theoretischen Grundlagen Ablauf
Datenbankdesign in der Praxis Konzeptionelles Design: Entity-Relationship-Model
Qualitätssicherung Logisches Design: Relationales Schema
Datenbank definieren 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
56. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis
Normalform
Qualitätssicherung
Datenbank definieren
Datenbankdesign
7 Einführung in die theoretischen Grundlagen
8 Datenbankdesign in der Praxis
9 Qualitätssicherung
Normalform
10 Datenbank definieren
K. Puschke MySQL
57. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis
Normalform
Qualitätssicherung
Datenbank definieren
Aufgabe
Normalform
Negativbeispiel diskutieren
K. Puschke MySQL
58. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis
Normalform
Qualitätssicherung
Datenbank definieren
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
59. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis
Normalform
Qualitätssicherung
Datenbank definieren
Daten in Normalform
keine Anomalien
Konsistenz der Daten
keine Redundanzen
einfache Wartung
effizientes Suchen und Bearbeiten
K. Puschke MySQL
60. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis
Normalform
Qualitätssicherung
Datenbank definieren
Normalisierung
Normalisierung = in Normalform bringen
verschiedene Algorithmen
ER-Diagramme und daraus abgeleitete relationale
Schemata:
häufig schon in Normalform
ggf. “nachbessern”
K. Puschke MySQL
61. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis
Normalform
Qualitätssicherung
Datenbank definieren
Normalform
Hinweis
Die Darstellung zum Thema Normalisierung/Normalform ist
sehr vereinfacht. Wer mehr wissen möchte, findet links im Wiki.
K. Puschke MySQL
62. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Exkurs: Die MySQL-Dokumentation
Qualitätssicherung Tabellen anlegen
Datenbank definieren
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
63. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Exkurs: Die MySQL-Dokumentation
Qualitätssicherung Tabellen anlegen
Datenbank definieren
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
64. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Exkurs: Die MySQL-Dokumentation
Qualitätssicherung Tabellen anlegen
Datenbank definieren
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
65. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Exkurs: Die MySQL-Dokumentation
Qualitätssicherung Tabellen anlegen
Datenbank definieren
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
66. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Exkurs: Die MySQL-Dokumentation
Qualitätssicherung Tabellen anlegen
Datenbank definieren
Tabellen verwalten II
Informationen über Tabellen
DESCRIBE und SHOW CREATE TABLE
DESCRIBE KundInnen
SHOW CREATE TABLE KundInnen
K. Puschke MySQL
67. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Exkurs: Die MySQL-Dokumentation
Qualitätssicherung Tabellen anlegen
Datenbank definieren
Tabellen verwalten III
Tabellenstruktur ändern
ALTER TABLE
ALTER TABLE KundInnen DROP COLUMN Vorname
...
ALTER TABLE
Vorsicht! Viele Stolperfallen!
K. Puschke MySQL
68. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Exkurs: Die MySQL-Dokumentation
Qualitätssicherung Tabellen anlegen
Datenbank definieren
Tabellen verwalten IV
Tabellen löschen
DROP TABLE
DROP TABLE KundInnen
K. Puschke MySQL
69. Einführung in die theoretischen Grundlagen
Datenbankdesign in der Praxis Exkurs: Die MySQL-Dokumentation
Qualitätssicherung Tabellen anlegen
Datenbank definieren
Aufgaben
Datenbank definieren
CREATE TABLE, DROP TABLE, SHOW CREATE TABLE
K. Puschke MySQL
70. Allgemein
SQL
Teil IV
Datenbanksprachen
K. Puschke MySQL
71. Allgemein
SQL
Datenbanksprachen
11 Allgemein
12 SQL
K. Puschke MySQL
72. 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
73. Allgemein
SQL
Datenbanksprachen
11 Allgemein
12 SQL
K. Puschke MySQL
74. 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
75. 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
76. Daten eintragen, ändern, löschen
Tabellen verknüpfen
Teil V
Datenbanken erzeugen und manipulieren
K. Puschke MySQL
77. 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
78. Daten eintragen, ändern, löschen
Tabellen verknüpfen
Aufgaben
Datenbank erzeugen und manipulieren
INSERT, UPDATE, DELETE
K. Puschke MySQL
79. 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
80. 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
81. Daten eintragen, ändern, löschen
Tabellen verknüpfen
Datenbank erzeugen und manipulieren
Daten entfernen
DELETE
DELETE FROM KundInnen WHERE Stadt=’Wien’
K. Puschke MySQL
82. 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
83. 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
84. 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
85. 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
86. 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
87. 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
88. 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
89. Daten eintragen, ändern, löschen
Tabellen verknüpfen
Aufgaben
Tabellen verknüpfen
JOIN
K. Puschke MySQL
90. 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
91. 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
92. Datenbanken vs. Dateien
Relationale Datenbanksysteme
Teil VI
Vor- und Nachteile von Datenbanken
K. Puschke MySQL
93. Datenbanken vs. Dateien Vorteile von Datenbanksystemen
Relationale Datenbanksysteme Nachteile von Datenbanksystemen
Vor- und Nachteile von Datenbanken
15 Datenbanken vs. Dateien
Vorteile von Datenbanksystemen
Nachteile von Datenbanksystemen
16 Relationale Datenbanksysteme
K. Puschke MySQL
94. Datenbanken vs. Dateien Vorteile von Datenbanksystemen
Relationale Datenbanksysteme 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
95. Datenbanken vs. Dateien Vorteile von Datenbanksystemen
Relationale Datenbanksysteme 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
96. Datenbanken vs. Dateien Vorteile von Datenbanksystemen
Relationale Datenbanksysteme 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
97. Datenbanken vs. Dateien
Relationale Datenbanksysteme
Vor- und Nachteile von Datenbanken
15 Datenbanken vs. Dateien
16 Relationale Datenbanksysteme
K. Puschke MySQL
98. 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
99. Aggregierte Daten
Teil VII
Datenbank manipulieren - Weitere
Möglichkeiten
K. Puschke MySQL
102. 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
103. 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
104. 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