Ganz einfache Anwendung, um SQL zu üben

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Ganz einfache Anwendung, um SQL zu üben
Hi zusammen,

ich wollte fragen, ob jemand eine Art Einsteigerprogramm kennt, mit dem ich einfach ein paar SQL-Anweisungen ausführen kann. Ich will ja keine rieisige Datenbank anlegen, sondern einfach nur 5 Tabellen erstellen und ein bisschen rumprobieren. Ich versteh auch nicht, warum das so ein Riesenaufwand zu sein scheint. Überall muss man erst noch eine Oracle-Datenbank anlegen und eine Verbindung dazu herstellen usw. und das sah für meine Zwecke zu aufwendig aus. Ich will ja für die Klausur lernen und nicht erst mal 3 Stunden ein System einrichten, damit ich dann nur überprüfen kann, ob meine Befehle funktionieren oder nicht.
Kann mir jemand helfen?

VG


Hi!

Das hier ist ein einfacher SQL-Trainer mit unterschiedlichen Schwierigkeitsgraden:

http://edb.gm.fh-koeln.de/sqltrainer/start.jsp?action=wl/

m.E. zum Rumprobieren völlig ausreichend.


Es gibt doch eine DB vom Lehrstuhl wo man üben kann. Schau mal auf Blatt 7 oder 8. Da müsste alles draufstehen. (Im studon einfach für den Kurs anmelden, falls du das noch nicht gemacht hast. Da sind alle Unterlagen)

1 Like

Dankeschön erstmal,

so Online-Tools habe ich auch schon ein paar probiert, die haben mir aber alle nicht so gefallen.
Ich hab jetzt mal das hier runtergeladen
http://amazing-sql.com/
das ist ganz nett für den Anfang.
Mit der Datenbank vom Lehrstuhl hab ich noch Probleme. Ich hab die Anweisungen auf den Übungsblättern
und auf der Zusatzfolie befolgt SQLDeveloper installiert und das hat auch alles funktioniert. Ich kann auch Tabellen erstellen und
Anweisungen ausführen usw. aber ich weiß nicht, wie ich das Skript in SQLDeveloper ausführen kann, das der Lehrstuhl bereitstellt.
Hat das jemand schon gemacht?


Hmm ich denke du meinst das Skript für sqlplus. Das brauchst du im SQLDeveloper nicht.


Ok,

ich hab’s jetzt hingekriegt. Trotzdem vielen Dank für die Tips!


So logge er sich im Informatik-CIP-Pool ein und führe folgenden Befehl aus:

$ sqlite3 meinedb.sqlite

Danach kannst du dich beliebig mit SQL austoben, z. B.:

sqlite> create table test (id int not null, name varchar(100) not null, primary key(id)); sqlite> insert into test (id, name) values (1, "name 1"), (2, "name 2"), (3, "name 3"); sqlite> select * from test;
(“$” und “sqlite>” werden natürlich nicht mit eingetippt)


Oder das ganze mit dem sqliteman machen, wenn man ein grafisches Tool haben will.


Ich persönlich rate von sqlite ab, wenn man mit SQL üben will. Anfragen wie

SELECT
    AVG(kreditkartennummer)
    ,plz
FROM
    kunde
;

gehen da nämlich durch und geben etwas aus, was man zwar erklären könnte, das aber trotzdem Mist ist.
Ich hoffe, es ist jedem bewusst, warum diese Query absoluter Müll ist…


Welche Datenbanksysteme fangen denn solche Anfragen ab? Natürlich macht es nicht besonders viel Sinn zu jeder PLZ einmal den Durchschnitt der Kreditkartennummern zu berechnen, aber es ist ja wohl schwerlich die Aufgabe des Datenbanksystems sicherzustellen, dass man keine idiotischen Anfragen stellt…


In Oracle passieren auch genug auf den ersten Blick komische Dinge.

Um im CIP (oder über ssh :wink: ) zu Üben müsst ihr auch einfach nur ein source /proj/i6konzmod/env/oracle.sh machen und könnt euch dann mit sqlplus einloggen und loslegen.


Das ist nicht das Problem mit der Query…


Das ist nicht nur nicht das Problem mit der Query, sondern nichtmal die Query, die ich geschrieben habe.


Willst du vielleicht einfach sagen was daran falsch ist und was die Datenbank abfangen hätte sollen?


So, wie ich es verstehe, gibt es in der Abfrage eine Aggregation AVG(kreditkartennummer) und ein nicht aggregiertes Attribut plz. Vermutlich soll also die fehlende Gruppierung verhindert werden.


Nachdem kein GROUP BY in der Query enthalten ist, dürfte die Berechnung des Durchschnitts nicht all zu viel Sinn machen.

Was die Sache mit Durchschnitt von Kreditkartennummern angeht - gab’s da nicht sogar etwas, was das Rechnen mit den Werten einer Spalte verboten hat?


Ganz genau. AVG(kreditkartennummer) gibt ein Tupel zurück, plz ziemlich viele. Wieviele Tupel soll denn die Ausgabe haben? Bei sowas fehlt ein GROUP BY über mindestens alle Attribute, die in der SELECT-Klausel stehen, die keine Aggregate sind.