SlideShare ist ein Scribd-Unternehmen logo
1 von 104
Downloaden Sie, um offline zu lesen
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 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 - Weitere
Möglichkeiten




  17   Aggregierte Daten




                           K. Puschke   MySQL
Grundbegriffe
  Architektur
     MySQL




          Teil I

   Einführung




  K. Puschke    MySQL
Grundbegriffe
                        Architektur
                           MySQL


Einführung



  1   Grundbegriffe

  2   Architektur

  3   MySQL




                        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


Einführung



  1   Grundbegriffe

  2   Architektur

  3   MySQL




                        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


Einführung



  1   Grundbegriffe

  2   Architektur

  3   MySQL




                        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




                     Teil II

    Datenbankabfragen




             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     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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Einführung in die theoretischen Grundlagen
                     Datenbankdesign in der Praxis
                                                       Normalform
                                  Qualitätssicherung
                              Datenbank definieren


Aufgabe




  Normalform
  Negativbeispiel diskutieren




                                        K. Puschke     MySQL
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
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
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
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
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
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
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
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
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
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
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
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
Allgemein
         SQL




         Teil IV

Datenbanksprachen




   K. Puschke   MySQL
Allgemein
                          SQL



Datenbanksprachen




 11   Allgemein

 12   SQL




                    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



Datenbanksprachen




 11   Allgemein

 12   SQL




                    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



Aufgaben




  Tabellen verknüpfen
  JOIN




                                 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   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
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
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
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
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




                   Teil VII

Datenbank manipulieren - Weitere
        Möglichkeiten




             K. Puschke    MySQL
Aggregierte Daten



Datenbank manipulieren - Weitere Möglichkeiten




  17   Aggregierte Daten




                            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

Weitere ähnliche Inhalte

Andere mochten auch

Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Stefan Frömken
 
Speicherung 20 min
Speicherung 20 minSpeicherung 20 min
Speicherung 20 minmiracee
 
PräSentation Zu Datenbanken
PräSentation Zu DatenbankenPräSentation Zu Datenbanken
PräSentation Zu DatenbankenGoetheschule
 
Big-Data-Analyse und NoSQL-Datenbanken
Big-Data-Analyse und NoSQL-DatenbankenBig-Data-Analyse und NoSQL-Datenbanken
Big-Data-Analyse und NoSQL-DatenbankenJohannes Schildgen
 
Microsoft Access Grundkurs
Microsoft Access GrundkursMicrosoft Access Grundkurs
Microsoft Access Grundkursguest48194a
 
MySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtMySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtKaj Arnö
 
Meilleures pratiques en gestion de projets agile [Webinaire]
Meilleures pratiques en gestion de projets agile [Webinaire]Meilleures pratiques en gestion de projets agile [Webinaire]
Meilleures pratiques en gestion de projets agile [Webinaire]Technologia Formation
 
G. Spuhler (Archiv für Zeitgeschichte) - Von Bau eines Archivportals: Möglich...
G. Spuhler (Archiv für Zeitgeschichte) - Von Bau eines Archivportals: Möglich...G. Spuhler (Archiv für Zeitgeschichte) - Von Bau eines Archivportals: Möglich...
G. Spuhler (Archiv für Zeitgeschichte) - Von Bau eines Archivportals: Möglich...infoclio.ch
 

Andere mochten auch (10)

Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12
 
Speicherung 20 min
Speicherung 20 minSpeicherung 20 min
Speicherung 20 min
 
Datenbanksystem
DatenbanksystemDatenbanksystem
Datenbanksystem
 
PräSentation Zu Datenbanken
PräSentation Zu DatenbankenPräSentation Zu Datenbanken
PräSentation Zu Datenbanken
 
Big-Data-Analyse und NoSQL-Datenbanken
Big-Data-Analyse und NoSQL-DatenbankenBig-Data-Analyse und NoSQL-Datenbanken
Big-Data-Analyse und NoSQL-Datenbanken
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
Microsoft Access Grundkurs
Microsoft Access GrundkursMicrosoft Access Grundkurs
Microsoft Access Grundkurs
 
MySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtMySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni Frankfurt
 
Meilleures pratiques en gestion de projets agile [Webinaire]
Meilleures pratiques en gestion de projets agile [Webinaire]Meilleures pratiques en gestion de projets agile [Webinaire]
Meilleures pratiques en gestion de projets agile [Webinaire]
 
G. Spuhler (Archiv für Zeitgeschichte) - Von Bau eines Archivportals: Möglich...
G. Spuhler (Archiv für Zeitgeschichte) - Von Bau eines Archivportals: Möglich...G. Spuhler (Archiv für Zeitgeschichte) - Von Bau eines Archivportals: Möglich...
G. Spuhler (Archiv für Zeitgeschichte) - Von Bau eines Archivportals: Möglich...
 

Ähnlich wie Einstieg in relationale Datenbanken mit MySQL (Folien)

Einstieg in relationale Datenbanken mit MySQL (Handout)
Einstieg in relationale Datenbanken mit MySQL (Handout)Einstieg in relationale Datenbanken mit MySQL (Handout)
Einstieg in relationale Datenbanken mit MySQL (Handout)Kerstin Puschke
 
NoSQL-Datenbanken am Beispiel CouchDB
NoSQL-Datenbanken am Beispiel CouchDBNoSQL-Datenbanken am Beispiel CouchDB
NoSQL-Datenbanken am Beispiel CouchDBKerstin Puschke
 
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico Busch
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico BuschFMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico Busch
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico BuschVerein FM Konferenz
 
Not only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenNot only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenKerstin Puschke
 
MYSQL in large environments - CeBIT 2012
MYSQL in large environments - CeBIT 2012MYSQL in large environments - CeBIT 2012
MYSQL in large environments - CeBIT 2012NETWAYS
 
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteCodd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteMarkus Flechtner
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Dietmar Leher
 
Wide-column Stores für Architekten (HBase, Cassandra)
Wide-column Stores für Architekten (HBase, Cassandra)Wide-column Stores für Architekten (HBase, Cassandra)
Wide-column Stores für Architekten (HBase, Cassandra)Andreas Buckenhofer
 

Ähnlich wie Einstieg in relationale Datenbanken mit MySQL (Folien) (9)

Einstieg in relationale Datenbanken mit MySQL (Handout)
Einstieg in relationale Datenbanken mit MySQL (Handout)Einstieg in relationale Datenbanken mit MySQL (Handout)
Einstieg in relationale Datenbanken mit MySQL (Handout)
 
NoSQL-Datenbanken am Beispiel CouchDB
NoSQL-Datenbanken am Beispiel CouchDBNoSQL-Datenbanken am Beispiel CouchDB
NoSQL-Datenbanken am Beispiel CouchDB
 
NoSQL und CouchDB
NoSQL und CouchDBNoSQL und CouchDB
NoSQL und CouchDB
 
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico Busch
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico BuschFMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico Busch
FMK2012: Mit SQL-Kommandos FileMaker Daten lesen - und schreiben von Nico Busch
 
Not only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-DatenbankenNot only SQL - CouchDB und andere NoSQL-Datenbanken
Not only SQL - CouchDB und andere NoSQL-Datenbanken
 
MYSQL in large environments - CeBIT 2012
MYSQL in large environments - CeBIT 2012MYSQL in large environments - CeBIT 2012
MYSQL in large environments - CeBIT 2012
 
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und GeschichteCodd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
Codd & ACID - ein Ausflug in die Datenbank-Theorie und Geschichte
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)
 
Wide-column Stores für Architekten (HBase, Cassandra)
Wide-column Stores für Architekten (HBase, Cassandra)Wide-column Stores für Architekten (HBase, Cassandra)
Wide-column Stores für Architekten (HBase, Cassandra)
 

Mehr von Kerstin Puschke

Behind the scenes of a grown-up web application
Behind the scenes of a grown-up web applicationBehind the scenes of a grown-up web application
Behind the scenes of a grown-up web applicationKerstin Puschke
 
Webentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLWebentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLKerstin Puschke
 
Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Kerstin Puschke
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Kerstin Puschke
 

Mehr von Kerstin Puschke (6)

Behind the scenes of a grown-up web application
Behind the scenes of a grown-up web applicationBehind the scenes of a grown-up web application
Behind the scenes of a grown-up web application
 
oEmbed (on rails)
oEmbed (on rails)oEmbed (on rails)
oEmbed (on rails)
 
Webentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQLWebentwicklung mit PHP und MySQL
Webentwicklung mit PHP und MySQL
 
CouchDB
CouchDBCouchDB
CouchDB
 
Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)Grundlagen der Kommandozeile unter Unix/Linux (Folien)
Grundlagen der Kommandozeile unter Unix/Linux (Folien)
 
Grundlagen der Kommandozeile unter Unix/Linux (Handout)
Grundlagen der Kommandozeile unter Unix/Linux (Handout)Grundlagen der Kommandozeile unter Unix/Linux (Handout)
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
  • 6. Teil IV: Datenbanksprachen 11 Allgemein 12 SQL K. Puschke MySQL
  • 7. Teil V: Datenbanken erzeugen und manipulieren 13 Daten eintragen, ändern, löschen 14 Tabellen verknüpfen K. Puschke MySQL
  • 8. Teil VI: Vor- und Nachteile von Datenbanken 15 Datenbanken vs. Dateien 16 Relationale Datenbanksysteme K. Puschke MySQL
  • 9. Teil VII: Datenbanken manipulieren - Weitere Möglichkeiten 17 Aggregierte Daten K. Puschke MySQL
  • 10. Grundbegriffe Architektur MySQL Teil I Einführung 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
  • 100. Aggregierte Daten Datenbank manipulieren - Weitere Möglichkeiten 17 Aggregierte Daten K. Puschke MySQL
  • 101. Aggregierte Daten Aufgaben Aggregierte Daten COUNT, SUM, MAX,... GROUP BY, HAVING 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