OrangeVirus
https://www.orangevirus.eu/community/

SQL Tutorial (1)
https://www.orangevirus.eu/community/viewtopic.php?f=14&t=15029
Seite 1 von 1

Autor:  Carsten [ Do 14. Okt 2010, 01:47 ]
Betreff des Beitrags:  SQL Tutorial (1)

Tach Leute,

Vorab: Die Farben benutze ich, um euch die Zusammenhänge klar zu machen. Wenn euch die Farbe stört, kopiert den Text in einen Texteditor und lest es euch da durch!




Ich hab jetzt mal den Entschluss gefasst, ein SQL Tutorial für die OV-Community zu schreiben. Es gibt zwar genug Tutorials im Internet, jedoch sind diese manchmal nicht ganz einfach geschrieben. Ich versuche hier eins zu schreiben, was für jeden verständlich sein sollte! (Wenn nicht, dann haut mich :/ ).
Ich werde hier bewusst keine Beispiele nennen. Versucht erstmal, SQL zu verstehen. Wenn ihr meint, ihr könnt es einigermaßen, dann schreibt mir eine PN und ihr bekommt Übungsaufgaben

Erstmal ein Paar Grundbegriffe:
Was ist eigentlich SQL?
  • SQL bedeutet Structured Query Language, was auf deutsch ungefähr Strukturierte Abfragen Sprache heißt. In SQL arbeitet man mit Datenbanken.

Wie ist eine solche Datenbank aufgebaut?
  • Eine Datenbank ist folgendermaßen aufgebaut:
  • Datenbank -> Tabelle -> Spalten
    Die Datenbank ist der Oberbegriff. Ein Datenbankname sollte nur einmal existieren und mit einem eindeutigem Namen gekennzeichnet werden, damit man zwei Datenbanken nicht verwechselt. In der Datenbank sind beliebig viele Tabellen. Wie man diese erstellt, erfahren wir später. Die Tabellen enthalten Spalten, welche Informationen enthalten. Mehr dazu später.

Was kann ich also mit SQL machen?
  • Mit SQL kann man Datenbanken erstellen, bearbeiten, löschen oder diese Datenbank "befragen", genauer: Daten auslesen. Hier auf OV werden hauptsächlich folgende Funktionen von SQL genutzt:
    => Auslesen bereits existierender Daten
    => Einfügen / Löschen von Daten in bereits existierende Tabellen
    => Bearbeiten bereits existierender Einträge in Tabellen

Zusatz:
Folgende Funktionen von SQL benutzen wir hier in der Regel nicht, können aber vorkommen:
* Ordnen von existierenden Daten
* Zählen von Einträgen in einer Tabelle
* Abkürzungen von Tabellennamen (Auch: Alias)
* Eine neue Tabelle erstellen
* Struktur einer Tabelle ändern
* Eine Tabelle löschen
* Alle Daten einer Tabelle löschen


So, das wäre alles, was man wissen muss! Im folgendem Abschnitt erkläre ich, wie die Befehle funktionieren:
Erstmal:
Die Befehle von SQL werden immer groß geschrieben bei uns, auch wenn Groß-/Kleinschreibung keinen Unterschied machen. Jedoch ist es so übersichtlicher und für andere leichter zu verstehen, was derjenige geschrieben hat. Ebenfalls wird hinter jeder Abfrage ein Simikolon (;) verwendet. So wird die Abfrage beendet.

Der wohl einfachste Befehl ist der SELECT Befehl, was so in diesem Zusammenhang auslesen bedeutet. Mit dem SELECT Befehl liest man Daten aus einer bereits existierender Datenbank aus. Man kann aber nicht nur einfach SELECT eingeben, darauf würde einen Syntaxfehler folgen. Man muss noch auswählen, aus welcher Tabelle der Datenbank man etwas auslesen möchte. Das geht folgendermaßen:

SELECT * FROM `Tabellenname`;
SELECT bedeutet, wie oben bereits geschrieben, auslesen
* bedeutet, dass ich alle Spalten aus der Tabelle haben will
FROM `Tabellenname` bedeutet, dass ich die Daten aus der Tabelle `Tabellenname` haben will.
Kurz:
Ich möchte alles aus der Tabelle `Tabellenname` haben.

Jetzt kann man die "Auslese" noch spezifizieren. Die wohl häufigste Variante ist die, dass man eine Bedingung einbaut. Diese Bedingung wird mit WHERE eingeleitet. Oft brauch man die nun folgende Formel:

SELECT * FROM `Tabellenname` WHERE `Spaltenname` = `wert`;
SELECT bedeutet, wie oben bereits geschrieben, auslesen
* bedeutet, dass ich alle Spalten aus der Tabelle haben will
FROM `Tabellenname` bedeutet, dass ich die Daten aus der Tabelle `Tabellenname` haben will.
WHERE `Spaltenname` = `wert` bedeutet, dass die Bedingung der Spalte `Spaltenname` gleich dem `wert` sein sollte. Sonst kommt ein leeres Resultat.
Kurz:
Ich möchte alle Einträge aus der Tabelle `Tabellenname` haben, wo der Wert `wert` in der Spalte `spaltenname` ist.

Jetzt kann man mehrere Sachen ausgeben lassen, indem man ein Stichwort hinzufügt. Nämlich IN( ). Mit IN( ) kann man viele Einträge gleichzeitig ausgeben lassen. Was hat man davon? Vieles, denn man brauch nicht für jeden Eintrag eine neue SQL-Abfrage ;).

Statt:
SELECT * FROM `tabellenname` WHERE `spaltenname` = `wert1`;
SELECT * FROM `tabellenname` WHERE `spaltenname` = `wert2`;
schreibt man also:
SELECT * FROM `tabellenname` WHERE `Spaltenname` IN(`wert1`, `wert2`, ....);

Wie euch sicher beim aufmerksamen durchlesen aufgefallen ist, wird das " = " weggelassen. Das kommt daher, dass das " = " nur bei genau einem Wert verwendet wird!

/***************************************************************************************************************
Das war's mit mit Teil 1, Teil 2 wird nächste Woche Mittwoch erscheinen. Falls ihr Fragen habt, schreibt mir einfach. Entweder hier oder per PN ;)
***************************************************************************************************************/

Autor:  Dreknor [ Fr 15. Okt 2010, 07:29 ]
Betreff des Beitrags:  Re: SQL Tutorial (1)

Gibt der Befehl den dann alle Ergebnisse zurück, die den Wert1 und Wert2 haben oder ist dies eine OR Verknüpfung, wo alle Werte ausgegeben werden, die Wert1 oder Wert2 enthalten?

Autor:  Carsten [ Fr 15. Okt 2010, 08:26 ]
Betreff des Beitrags:  Re: SQL Tutorial (1)

ES wird geprüft, ob wert1 und wert2 in der jeweiligen Spalte vorhanden sind.
Wenn jedoch nur wert1 vorhanden ist, werden auch nur alle Daten ausgegeben, die zum wert1 gehören ;)

Autor:  Schlauer Gerd [ Fr 15. Okt 2010, 08:32 ]
Betreff des Beitrags:  Re: SQL Tutorial (1)

Oder andersrum:

SELECT * FROM `tabellenname` WHERE `Spaltenname` IN ('wert1', 'wert2', ....);
ist das gleiche wie
SELECT * FROM `tabellenname` WHERE `Spaltenname`='wert1' OR `Spaltenname`='wert2` OR `Spaltenname`=....;

Autor:  Agahnim [ Fr 15. Okt 2010, 10:30 ]
Betreff des Beitrags:  Re: SQL Tutorial (1)

Zitat:
Carsten hat geschrieben
* bedeutet, dass ich alle Einträge aus der Tabelle haben will

Das stimmt nicht ganz. Das * bedeutet, alle SPALTEN und nicht Einträge :)

Autor:  Carsten [ Fr 15. Okt 2010, 11:31 ]
Betreff des Beitrags:  Re: SQL Tutorial (1)

Zitat:
Agahnim hat geschrieben
Zitat:
Carsten hat geschrieben
* bedeutet, dass ich alle Einträge aus der Tabelle haben will

Das stimmt nicht ganz. Das * bedeutet, alle SPALTEN und nicht Einträge :)


Hm, stimmt.

Danke Agahnim <3

€dit: geändert!

Autor:  Xath [ Fr 15. Okt 2010, 12:05 ]
Betreff des Beitrags:  Re: SQL Tutorial (1)

Recht schnell lernt man das auch auf http://sqlzoo.net/ -> einfach oben mysql auswählen und die tutorials durcharbeiten ; )
Kann man nichts kaputt machen und muss sich nicht selbst Beispiele basteln um zu testen;

Seite 1 von 1 Zeitzone: Europa/Berlin
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/