Beispieldaten gesucht
tom as
- datenbank
Hallo zusammen,
ich lerne gerade aufs Examen. Unter anderem Datenbanken. Dabei besteht eine Aufgabe in SQL-Abfragen. Da hier ja recht viele DB-Fragen auftauchen, wollte ich folgendes mal fragen:
Hat einer durch sein Studium oä eine solche Datenbankaufgabe. Ich suche vor allem Daten, also 3 bis 5 Tabellen mit gefüllten Daten, die ich in meine MySQL-DB importieren kann. Dann könnte ich nämlich durch ausprobieren etc. mir nochmals die Wirkung von HAVING, GROUP BY und JOINS verdeutlichen. Im Prinzip ist mir die Bedeutung zwar klar, ich möchte halt einfach noch mehr Sicherheit erlangen.
Ach ja, wenn es interessiert: ich studiere an der TUM.
yo,
Ich suche vor allem Daten, also 3 bis 5 Tabellen mit gefüllten Daten, die ich in meine MySQL-DB importieren kann. Dann könnte ich nämlich durch ausprobieren etc. mir nochmals die Wirkung von HAVING, GROUP BY und JOINS verdeutlichen.
dazu brauchst du nur phpmyadmin, die tabellen kannst du dort sehr schnell erstellen oder aber an der mysql konsole, übt mehr. die tabellen mit daten füllen ist auch einfacher als gedacht. du nimmst dir einen editor, erstellst dort ein INSERT statement für eine tabelle, kopierst die zeile, ändert leicht die daten bis du ungefähr 10 bis 20 datensätze hast. dann speichern und alles in den phpmyadmin webfenster als befehl ausführen. danach machst du ein insert, indem du den inhalt der bestehenden tabelle nimmst, die daten werden also durch eine einzige insert anweisung verdoppelt. das wiederholst du bis du auf eine gewünschte größe gekommen bist. das ganze noch für alle anderen tabellen, ein wenig aufpassen, bei den fremdschlüssel und fertig ist alles.
Im Prinzip ist mir die Bedeutung zwar klar, ich möchte halt einfach noch mehr Sicherheit erlangen.
beschreibe es hier doch einfach mal mit deinen worten und dann kann man dir eventuell es noch ein wenig näher bringen. wenn man es erst einmal verstanden hat, ist es recht einfach.
Ilja
Hallo Illja,
ich benutze CocoaMySQL unter Mac OSX. Dort kann man ähnlich Tabellen erstellen und verwalten. Es ist halt mühsam sich so viele Daten auszudenken. Des wegen frage ich.
beschreibe es hier doch einfach mal mit deinen worten und dann kann man dir eventuell es noch ein wenig näher bringen. wenn man es erst einmal verstanden hat, ist es recht einfach.
Na ja, da ich es halt theortisch verstanden habe, möchte ich es einfach mal praktisch erleben. Aber wenn ich noch Fragen habe, schreibe ich nochmals. Danke fürs Angebot.
Jetzt hätte ich dann doch noch eine Frage.
Wenn ich zB folgende Abfrage hätte:
select autor.name, buch.name
from autor, buch
where autor.id = buch.autor
Dann bekomme ich jetzt zu jedem Buch den Autor.
Ich erweitere die Abfrage auf:
select autor.name, buch.name
from autor, buch
where autor.id = buch.autor
group by autor.name
Dann bekomme ich ja nur noch einen Eintrag zurückgeliefert. Ist es der erste oder der letzte Eintrag?
Warum geht eingentlich folgende Abfrage nicht:
select autor.Vorname, autor.Nachname, buch.Titel
from buch, autor
where autoren.id = buch.autor
order by autoren.Nachname
group by autoren.Nachname
Stören tut hier die "order by"-Zeile. Ich dachte ich könnte dadurch die Ausgabe sortieren.
Moin!
select autor.name, buch.name
from autor, buch
where autor.id = buch.autor
group by autor.nameDann bekomme ich ja nur noch einen Eintrag zurückgeliefert. Ist es der erste oder der letzte Eintrag?
Das ist nicht definiert - jedes andere Datenbanksystem außer MySQL hätte dir auch eine Fehlermeldung geliefert.
Grundsätzlich: Wenn du gruppierst, darfst du nach SELECT nur folgende Spalten aufführen:
1. Alle die, die nach GROUP BY explizit genannt sind
2. Alle anderen, auf die du eine Aggregatfunktion anwendest (SUM, COUNT, MAX, MIN,...)
Warum geht eingentlich folgende Abfrage nicht:
select autor.Vorname, autor.Nachname, buch.Titel
from buch, autor
where autoren.id = buch.autor
order by autoren.Nachname
group by autoren.NachnameStören tut hier die "order by"-Zeile. Ich dachte ich könnte dadurch die Ausgabe sortieren.
Die Reihenfolge der SQL-Kommandos ist festgelegt und nicht frei wählbar. ORDER BY gehört immer hinter GROUP BY.
Abgesehen davon hast du hier beim Gruppieren das gleiche Problem, wie weiter oben: Du fragst Vorname, Nachname und Buchtitel ab, gruppierst aber nur nach Nachname. Dadurch kriegst du als Ergebnis für Vorname und Buchtitel beliebige Werte.
Blöd, wenn du "Mann, Thomas, Die Buddenbrooks" und "Mann, Heinrich, Der Untertan" in deiner Datenbank hast. Die Gruppierung würde auf "Mann" wirken, und sich einen beliebigen Vornamen und einen beliebigen Buchtitel raussuchen.
Du könntest also auch erhalten: "Mann, Heinrich, Die Buddenbrooks", oder umgekehrt "Mann, Thomas, Der Untertan".
Und da Familie Mann recht schriftstellerisch war, gäbe es noch tausende beliebige weitere Zuordnungsfehler, die deine Datenbank machen würde, weil du falsch gruppierst.
- Sven Rautenberg
Hallo..
als ich mich mit der Datenbank MySQL befasst habe, kaufte ich mir ein sehr gutes Lehrbuch von Prof.Dr-.Ing.Pollakowski (Datenbank für für Studierende der Studienrichtung "Systemintegration").
Unter dem Link
< http://www.fh-gelsenkirchen.de/fb01/homepages/pollakowski/db/skripte.html>
findest du du Textdatein mir Daten die du ohne weiteres in deine DB laden kannst.
Schönes Wochenende
Dennis b.
Danke Dennis,
die Daten konnte ich in meine Datenbank übernehmen und auch ein bisschen damit herumspielen.
Ein Problem hatte ich jedoch mit den Buchdaten. Bei einigen Attributen war mir die Bedeutung nicht ganz klar. Könntest du sie mir sagen?
Kann es zB sein, dass nach Angabe einer eindeutigen ID (die man wegen der isbn-nr gar nicht bräuchte) drei Fremdschlüssel auf die Autoren kommen? Dann kommt der Titel und dann?
Es wäre schön, wenn du mir das noch mitteilen könntest.