Datenbanken - Info 12

Einführung Datenbanken

Einführung in die Datenbanksprache SQL

Lerne SQL mittels des SQL Island Adventure Game kennen.

  1. Was ist SQL?    1
  2. Syntax der Select-Anweisung - Stufe 1

    in Textform

    SELECT
      [DISTINCT]
      select_expr [AS aliasname], ...
      [FROM table_references
        [WHERE where_condition]
        [ORDER BY {col_name | expr | position} [ASC | DESC], ...]    
        [LIMIT [offset,] row_count]
      ]
                            

    als Syntaxdiagramm


  3. SQL-Trainingsbereich auf unserem Schulserver
    1. cia mit Aufgaben
    2. literatur mit Aufgaben
      select titel, name from buch, verlag where buch.verlagsid=verlag.verlagsid

      select nachname, titel from buch, buch_aut, autor
         where nachname like "Schmi%d%"
           and buch.buchid=buch_aut.buchid and buch_aut.autorid=autor.autorid
    3. nordwind mit Aufgaben  ER-Diagramm: einfach / komplett
    4. wmtitel ohne Aufgaben
  4. SQL-Tutorial - Lichtenbergschule Darmstadt
    1. Lektion: Einfache SELECT-Anweisungen mit der Datenbank WMTitel und die Übungen zur Lektion 1 mit der Datenbank cia
      • select distinct region from cia order by 1 desc limit 0,3
      • select bip/einwohner*1000 as "spez. BIP" from cia
               where BIP not between 100000000 and 10E9 and bip<>0
      • select * from cia where name like "_r%"
      • select name, einwohner from cia
               where name in ("Deutschland","Frankreich","USA") order by einwohner,name
      • select name, einwohner/flaeche as "a" from cia
               where region ="Südamerika" or region ="Nordamerika" order by "a"
    2. Lektion: Die Aggregatfunktionen erläutert an der Datenbank WMTitel und die Übungen mit der Datenbank cia
      • select count(*),max(bip),min(bip),sum(bip), avg(bip) from cia
      • select name, max(bip), min(bip) from cia
      • select name, bip, max(bip) from cia
    3. Lektion: Verbinden von Tabellen einer Datenbank (JOIN)
      • SELECT Kategoriename, Artikelname FROM Artikel
               INNER JOIN Kategorien ON Artikel.KategorieNr = Kategorien.KategorieNr
      • SELECT Kategoriename, Artikelname FROM Artikel, Kategorien
               WHERE Artikel.KategorieNr = Kategorien.KategorieNr
      • SELECT Artikelname FROM Kategorien, Artikel
               WHERE Kategorien.KategorieNr = Artikel.KategorieNr AND Kategorien.Kategoriename = "Getränke" ORDER BY 1
      • SELECT DISTINCT Artikelname, Nachname, Vorname
              FROM Kategorien, Artikel, Bestelldetails, Bestellungen, Personal
              WHERE Kategorien.KategorieNr = Artikel.KategorieNr
                    AND Artikel.ArtikelNr = Bestelldetails.ArtikelNr
                    AND Bestelldetails.BestellNr = Bestellungen.BestellNr
                    AND Bestellungen.PersonalNr = Personal.PersonalNr
                    AND Kategorien.Kategoriename = "Getränke"
                    AND Nachname="King"
    4. Lektion: Gruppierung von Daten
      • SELECT distinct region FROM cia
      • SELECT distinct region, count(*) FROM cia
      • SELECT region, count(*) FROM cia GROUP BY region
      • SELECT name, count(*) AS x FROM verlag, buch WHERE verlag.verlagsid = buch.verlagsid GROUP BY name ORDER BY x desc
      • select region, avg(BIP) from cia
            where einwohner >100000000
            group by region having region in ("Südamerika","Mittelamerika","Nordamerika") ORDER BY avg(BIP) DESC
    5. Lektion: geschachtelte SELECTs
      • # SELECT name FROM cia WHERE bip=max(bip)
      • # SELECT name, max(bip) as MAX  FROM cia WHERE bip=MAX
      • # SELECT name, bip FROM cia WHERE bip = SELECT max(bip)from cia
      • SELECT name,bip FROM cia WHERE bip = (SELECT max(bip) FROM cia)
      • SELECT name, bip FROM cia WHERE bip = (SELECT min(bip) FROM cia)
      • SELECT name, bip FROM cia WHERE name IN (SELECT name FROM cia WHERE name LIKE "%as%")
      • SELECT name, BIP FROM cia WHERE BIP < (select 0.9*max(bip) from cia)
      • SELECT name, BIP FROM cia WHERE BIP BETWEEN (SELECT 0.2*max(bip) FROM cia) AND (SELECT 0.9*max(bip) FROM cia)
    6. Lektion: Datensätze und Tabellen bearbeiten
  5. interaktive Übungen:
  6. Übungen:
    Kopiere die folgenden SQL-Anweisungen jeweils in ein Worddokument.
    Markiere die von dir erkannten Fehler und beseitige diese in einer Kopie der SQL-Anweisung.
    Teste die Richtigkeit im SQL Trainingsbereich mit Datenbank < sql-island.sql.
    Welche Aufgabe(n) sollte diese SQL-Anweisung ausführen.
     1. select dorf.name, count(*) from dorf, bewohner 
    		where dorf.bewohnernr=bewohner.dorfnr order by dorf.name
    
     2. select dorfname, nachname, dorfnummer from dorf, bewohner 
    		where dorfname="Affendorf"
    
     3. select gegenstand, name form bewohner, gegenstand where bewohner.bewohnernr = gegenstand.bewohnernr
     
     4. select name from bewohner where dorfname=Affendorf ordet by name descend
     
     5. select gegenstand from gegenstand where dorfname=Affendorf
     
     6. select bewohnernr form bewohner where "freidlich"
     
     7. select name, dorf from bewohner where bewohner="böse"
     
     8.  select bewohner.name, dorfname from bewohner,dorf
       		where bewohner.dorfnr = dorf.dorfnr 
    			and bewohner.nr in (select bewohner.nr from bewohner, gegenstand
       									where bewohner.nr=besitzer)
     
    
  7. Weiteres
    • PHPmyAdmin
      phpmyadmin - inaktiv - webbasiertes Datenbank-Interface - Anmeldung mit userxx:userxx - Tabellen in der Datenbank userxx löschen
      - öffne D:\xampplite, starte xampp_start.bat, danach xampp_control.bat, rufe im Browser http://localhost
      - literatur.sql.zip zum Importieren der Tabellen der Literatur-Datenbank in die Datenbank userxx
      - mögliche Aufgaben

  8.