• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
SQL
 

SQL

on

  • 2,281 views

 

Statistics

Views

Total Views
2,281
Views on SlideShare
2,128
Embed Views
153

Actions

Likes
0
Downloads
18
Comments
0

2 Embeds 153

http://www.informatik-ema.de 118
http://www.vdboom.de 35

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    SQL SQL Presentation Transcript

    • Structured Query Language
      SQL
    • Ablauf / Übersicht
      Was ist SQL?
      SQL-Befehle
      INSERT, UPDATE, DELETE
      SELECT, JOIN
      … weitere
      Weitere Aspekte zum Thema SQL
      Anmerkungen zum SQL-Syntax
      Sicherheitsaspekte
      Nützliches
      Aufgabe
      Vorbereitung
      Aufgabe
      Lösung
    • SQL
      Datenbanksprache für relationale Datenbanken
      Definition von Daten
      Abfrage von Daten
      Manipulation von Daten
      Besteht aus drei Teilen:
      Data Manipulation Language, Data Definition Language, Data Control Language
      Vorteil: Unabhängigkeit von benutzer Datenbanksoftware (MySQL, MSSQL, etc)
    • INSERT, SELECT, UPDATE, DELETE, JOIN
      SQL-Befehle
    • INSERT INTO
      Fügt neue Daten in die Datenbank ein
      Syntax:
      INSERT INTO tabelle
      (spalte1, spalte2, spalte3)
      VALUES
      (‘#1 Wert Spalte 1‘, ‘#1 Wert Spalte 2‘, ‘#1 Wert Spalte 3‘),
      (‘#2 Wert Spalte 1‘, ‘#2 Wert Spalte 2‘, ‘#2 Wert Spalte 3‘)
    • INSERT INTO: Beispiel
      INSERT INTO firma
      (titel, standort)
      VALUES
      (‘Reissdorf‘, ‘Köln‘),
      (‘Sion‘, ‘Köln‘)
    • UPDATE
      Befehl, um Datensätze zu ändern
      Syntax:
      UPDATE tabelle
      SET
      spalte1 = ‘Wert 1‘,
      spalte2 = ‘Wert 2‘
      WHERE
      id = 99;
      ACHTUNG!: Wird WHERE weggelassen, werden ALLE Datensätze in der Tabelle geändert!
    • UPDATE: Beispiel
      UPDATE firma
      SET
      standort= ‘München‘
      WHERE
      id= 6;
      WHERE-Anweisungen können auf alle Spalten angewendet werden:
       WHERE titel = ‘Sion‘
    • DELETE
      Löscht Datensätze aus der Datenbank
      Syntax:
      DELETE FROM tabelle
      WHERE
      id = 5
      ACHTUNG!: Wird die WHERE-Anweisung weggelassen, werden ALLE Daten der Tabelle gelöscht!
    • DELETE: Beispiel
      DELETE FROM firma
      WHERE
      id = 7
      Auch hier kann sie WHERE Anweisung andere Spalten abfragen:
       WHERE titel LIKE ‘Franzisk%‘
    • SELECT
    • SELECT: Beispiel
      SELECT *
      FROM firma
      WHERE standort= ‘Köln‘
      ORDER BY titel ASC;
      Tipp:
      WHERE standort LIKE ‘Kö%‘
    • JOINs
      4 wichtige JOIN-Arten
      Inner/Equivalent/Natural JOIN
      Left (Outer) JOIN
      Right (Outer) JOIN
      Full (Outer) JOIN
      Dienen dazu, Tabellen bei Operationen zu verknüpfen
      Ergebnis wird wie normale Tabelle verwendet
      Verdeutlichung: Es entsteht eine neue, virtuelle Tabelle, die sich aus den beiden (oder mehreren) „gejointen“ Tabellen zusammensetzt.
    • JOINs: Syntax
      Syntax:
      (INNER|LEFT|RIGHT|FULL) (OUTER) JOIN tabelle2 ON(tabelle1.attribut = tabelle2.attribut)
      (INNER|LEFT|RIGHT|FULL) (OUTER) JOIN tabelle2 USING(attribut)
      (INNER|LEFT|RIGHT|FULL) (OUTER) JOIN tabelle2 ON(tabelle1.ein_attribut = tabelle2.ein_anderes_attribut)
      Auch Möglich: ON(tabelle1.spaltex = tabelle2.spaltey AND tabelle1.spaltey = tabelle2.spaltez)
      Muss in der 2. Zeile einer Abfrage stehen:
      Nach SELECT …, UPDATE …, DELETE …
    • INNER JOIN
      Die Datensätze werden in eine neue Tabelle übernommen sofern das Attribut auf das sich der Join bezieht (hier SNr) in beiden Tabellen vorhanden ist
    • LEFT/RIGHT JOIN
      Variante des InnerJoins
      Elemente aus der linken (ersten) oder rechten (zweiten) Tabelle werden auch einbezogen, wenn das Attribut nicht überall vorhanden ist
      Es können Datensätze entstehen, die nicht vollständig sind
    • FULL JOIN
      Kombination aus Right + LeftJoin
      Alle Elemente aus beiden Tabellen werden übernommen
      Elemente mit übereinstimmendem Attribut werden verknüpft
       Es können unvollständige Datensätze entstehen
    • Weitere, weniger verbreitete JOINs
      UNION JOIN
      Ähnlich FULL JOIN, ohne Verknüpfung bei gleichem Attribut
      SEMI JOIN
      Vergleichbar mit INNER JOIN, allerdings werden nur Elemente aus der ersten Tabelle übernommen
      SELF JOIN
      Verknüpfung der selben Tabelle
      CROSS JOIN
      Erzeugt alle Möglichen Zeilenkombinationen aus beiden Tabellen
      Kreuztabellenprodukt
    • JOINs: Beispiel
      SELECT bierart.titel AS ba, firma.titel AS f, bier.alkoholgehalt AS alk
      FROM bier AS bier
      INNER JOIN bierart AS bierart USING(bierartid)
      LEFT JOIN firma AS firma USING(firmaid)
      ORDER BY firma.titel ASC
      Liefert Ergebnis, wenn die verknüpfte Firma, nicht aber, wenn die verknüpfte Bierart fehlt
    • Syntax, Nützliches, Sicherheit
      Weitere Aspekte zum Thema SQL
    • Weitere SQL-Befehle
      TRUNCATE tabelle
      Löscht alle Daten der angegebenen Tabelle und setzt AUTO_INCREMENT der Tabelle zurück
      CREATE TABLE tabelle (‘Spalte1‘, ‘Spalte 1 Typ‘, ‘Spalte2‘, ‘Spalte2 Typ‘)
      Erzeugt tabelle mit den Spalten Spalte1 und Spalte2
      CREATE DATABASE, DROP TABLE, ALTER TABLE
    • Anmerkungen zum Syntax / Schlüsselwörter
      Strings müssen in Abfragen immer in ‘ oder “ stehen
      Müssen escaped werden
      Bei WHERE-Anweisungen darf nur ein = verwendet werden, nicht wie bei Java == (Also WHERE x = 3
      LIKE: WHERE spaltex LIKE ‘%Köl%‘
      Gibt alle Datensätze aus, in deren Spalte spaltexKöl vorkommt
      % = Platzhalter für beliebig viele Zeichen
      DISTINCT: SELECT DISTINC spaltex FROM tabelle
      Wenn es in der Tabelle mehrere Datensätze gibt, in denen spaltex übereinstimmt, wird nur einer dieser Datensätze ausgelesen.
    • Nützliches
      AS – Spalten-Namen können innerhalb von Abfragen mit anderem Namen benutzt werden. Z.B.:
      SELECT firma.titel AS firmenname, bierart.titel AS bierartname
      FROM firma AS firma
      Mehrere Werte in WHERE Anweisung abfragen:
      WHERE id IN(1,7,25,38) oder WHERE titel IN(‘test‘, ‘test2‘)
      AUTO_INCREMENT
      Für Spalten kann das AUTO_INCREMENT Attribut gesetzt werden:
      Für jeden neuen Datensatz wird der Integer-Wert der Spalte automatisch um 1 erhöht: -> als künstlicher Primärindex
    • Sicherheitsaspekte
      Bevor Daten in die Datenbank geschrieben werden, müssen diese unbedingt Validiert werden.
      Dies ist vor allem bei Strings nötig. Diese müssen „escaped“ werden: Anführungszeichen müssen ersetzt werden
      Angriffs-Szenario:
      SELECT * FROM tabelle WHERE spalte 1 = x AND spalte 2 = ‘{USER-EINGABE}‘
      {USER-EINGABE} = ‘ OR spalte 1 = 19 OR ‘‘ = ‘
      Damit würde der User die WHERE-Anweisung und kann Daten auslesen oder (im schlimmsten Falle) löschen
    • Anwenden von SQL am Beispiel eines Web-Frontends für eine Bierdatenbank
      Aufgabe
    • ER-Diagramm der Bierdatenbank
      Entitäten: Bierart, Firma
      Relationship: Bier
    • PHP-Grundlagen
      SQL-Queries immer in doppelten Anführungszeichen schreiben (“)
      Alle Variablen fangen mit $ an
      Variablen können innerhalb von “ genutzt werden
      Falls in der Query eine Variable genutzt wird, die einen String enthält, muss diese mit einfachen ‘ umschlossen werden
      Jede Anweisung endet mit einem ;
      Kommentare wie in Java
      Beispiel:
      $sql->query(“SELECT …. WHERE x = ‘$data‘ “);
    • Vorbereitung
      XAMPP suchen
      Entweder Desktop
      Oder C:Programmexampp
      XAMPP starten
      xampp_start.exe
    • Datenbank vorbereiten
      Im Browser 127.0.0.1/phpmyadmin aufrufen
      Bei „Neue Datenbank anlegen“:
      „bier“ eingeben -> „Anlegen“ klicken
      Auf der folgenden Seite den Reiter „Importieren“ wählen
      Date bierdatenbank.sql von moodle auswählen -> OK
      Fertig!
    • PHP-Datei vorbereiten
      Datei index.php aus moodle kopieren:
      /bier/index.php
      Angabe relativ zum Verzeichnis htdocs, welches sich im xampp-Verzeichnis befindet
      Datei kann zum testen über http://127.0.0.1/bier/ aufgerufen werden
      In die Datei müssen SQL-Queries eingetragen werden
      z.B. C.Programmexampphtdocsierindex.php
    • Aufgabe
      In der Datei index.php wurden einige Abfragen durch QUERY HIER ersetzt
      Die fehlenden Abfragen sollen nun eingefügt werden, so dass das Script funktioniert
      Vorgeschlagene Reihenfolge: (Nach Schwierigkeit)
      Bierart einfügen
      Firma einfügen
      Bier einfügen
      Liste aller Biere ausgeben
      Firmen suchen, die bestimmte Bierart brauen
    • ER-Diagramm der Bierdatenbank
      Entitäten: Bierart, Firma
      Relationship: Bier