Benutzer-Werkzeuge

Webseiten-Werkzeuge


datenbank:sql-einfuehrung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
datenbank:sql-einfuehrung [2016-04-19 21:23]
Robert Wiedermann [Beispiele]
datenbank:sql-einfuehrung [2018-06-05 10:41]
Robert Wiedermann [SQL in 15 Minuten]
Zeile 1: Zeile 1:
 ====== SQL in 15 Minuten ====== ====== SQL in 15 Minuten ======
 +SQL ist eine Datenbanksprache zur Definition von Datenstrukturen in relationalen Datenbanken sowie zum Bearbeiten (Einfügen, Verändern, Löschen) und Abfragen von Datensätzen. 
  
 Falls Sie irgendwann einmal Web-Applikationen entwickeln möchten, die Daten aus einer Datenbank auslesen oder in eine Datenbank schreiben, werden Sie SQL-Grundkenntnisse benötigen. Folgende Seite bietet Ihnen einen ersten kurzen Einblick. Falls Sie irgendwann einmal Web-Applikationen entwickeln möchten, die Daten aus einer Datenbank auslesen oder in eine Datenbank schreiben, werden Sie SQL-Grundkenntnisse benötigen. Folgende Seite bietet Ihnen einen ersten kurzen Einblick.
Zeile 7: Zeile 8:
   * Laden Sie folgende Datei herunter: \\ <WRAP download>{{:datenbank:sql-uebungen_mit_sqlite.zip|}}</WRAP>   * Laden Sie folgende Datei herunter: \\ <WRAP download>{{:datenbank:sql-uebungen_mit_sqlite.zip|}}</WRAP>
   * Entpacken Sie die heruntergeladenen ZIP-Datei,,\\ und führen Sie das Batch-Programm ''__Tiere-Datenbank_aufrufen.bat'' mittels Doppelklick aus:\\ {{:datenbank:sqlite_tiere-datenbank_aufrufen.png?nolink|}}   * Entpacken Sie die heruntergeladenen ZIP-Datei,,\\ und führen Sie das Batch-Programm ''__Tiere-Datenbank_aufrufen.bat'' mittels Doppelklick aus:\\ {{:datenbank:sqlite_tiere-datenbank_aufrufen.png?nolink|}}
-  * Sie können nun SQL-Befehle eingeben. Da die Datenbank-Datei eine Tabelle namens ''TIERE'' enthält, ist folgendes SQL-Statement ein guter Start:\\ <file>select * from TIERE;</file>Beachten Sie, dass jedes SQL-Statement mit einem Strichpunkt '';'' abgeschlossen werden muss.\\ \\ {{:datenbank:sqlite_tiere-datenbank_aufrufen_2.png?nolink|}}+  * Sie können nun SQL-Befehle eingeben. Da die Datenbank-Datei eine Tabelle namens ''TIERE'' enthält, ist folgendes SQL-Statement ein guter Start:\\ <file>select * from TIERE;</file>
  
-===== Einstieg mit Mac OS X, Linux ===== +<wrap important>Beachten Sie, dass jedes SQL-Statement mit einem Strichpunkt '';'' abgeschlossen werden muss!</wrap> 
-  * Laden Sie folgende Datei herunter:\\ <wrap download>{{:datenbank:sql-uebungen_mit_sqlite.zip|}}</wrap>,\\  entpacken Sie sie, und löschen Sie die ''.bat'' und die ''.exe'' (die brauchen Sie am Mac nicht).+ 
 + 
 +{{:datenbank:sqlite_tiere-datenbank_aufrufen_2.png?nolink|}} 
 + 
 +===== Einstieg mit macOS, Linux ===== 
 +  * Laden Sie folgende Datei herunter:\\ <wrap download>{{:datenbank:sql-uebungen_mit_sqlite.zip|}}</wrap>,\\  entpacken Sie sie, und löschen Sie die ''.bat'' und die ''.exe'' (die brauchen Sie unter macOS nicht).
   * Öffnen Sie ein Terminal-Fenster, und wechseln Sie zum Ordner, in dem sich die ''.sqlite''-Datei befindet.   * Öffnen Sie ein Terminal-Fenster, und wechseln Sie zum Ordner, in dem sich die ''.sqlite''-Datei befindet.
   * Rufen Sie SQLite folgendermaßen auf: ''sqlite3 -header -column Tiere.sqlite''   * Rufen Sie SQLite folgendermaßen auf: ''sqlite3 -header -column Tiere.sqlite''
Zeile 16: Zeile 22:
 ---- ----
 ===== Beispiele ===== ===== Beispiele =====
-  * In folgender Datei finden Sie die Übungsaufgaben dazu:\\ http://statedv.boku.ac.at/roberts_it-kurs-unterlagen/Skriptum/EinfDV_Uebungsskriptum_DB-SQL.pdf+Arbeiten Sie alle folgenden Beispiele durch, experimentieren Sie.
  
-  * Arbeiten Sie alle folgenden Beispiele durch, experimentieren Sie. +<WRAP tip> 
-  * Vergessen Sie nicht, jeden SQL-Befehl mit einem Strich¬punkt abzuschließen! Solange kein Strichpunkt kommtwartet SQL auf weitere Eingaben! +  * Jede SQL-Anweisung wird **mit einem Strichpunkt** (Semikolon'';'')** abgeschlossen**. Das vergisst man leicht, ist aber kein Problem: Da sich ein SQL-Statement über mehrere Zeilen erstrecken kann, tragen Sie den fehlenden Strichpunkt einfach nach. 
-  * Sie können wie gewohnt mit der 'Pfeil hinauf'-Taste zu den letzten Befehlen zurückblättern+  * Sie können wie gewohnt mit der 'Pfeil hinauf'-Taste **zu den letzten Befehlen zurückblättern**. 
-  Beenden mit:   ''.quit''  oder  ''.exit'' +</WRAP>
  
 +==== Datensätze abfragen - SELECT ====
 +Es gibt eine Tabelle namens ''TIERE''. Sie möchten alle Spalten (Felder) und alle Zeilen (Datensätze) dieser Tabelle anzeigen lassen. Die SQL-Syntax dazu lautet ungefähr: "Selektiere alle Spalten von der Tabelle TIERE":
 +
 +|<code>select * from TIERE;</code>|<code>NAME        KONTINENT
 +----------  ----------
 +Giraffe     Afrika
 +Nashorn     Afrika
 +Tiger       Asien
 +Wildschwei  Europa
 +Panda       Asien
 +Bison       Amerika
 +Elefant     Afrika
 +Koala       Australien
 +Wolf        Europa
 +Murmeltier  Europa
 +Loewe       Afrika
 +Baer        Europa
 +Baer        Amerika
 +</code>|
 +Nochmals etwas im Detail:
 +  * Der Befehl SELECT dient dazu, bestimmte Datensätze abzufragen, zu selektieren.
 +  * Nach dem SELECT stehen Feldnamen. Stern * bedeutet: alle Spalten (und nicht: alle Zeilen!)
 +  * Da eine Datenbank üblicherweise viele Tabellen beinhalten, müssen Sie immer dazusagen, von welcher Tabelle (from ...) Sie Daten selektieren möchten.
 +
 +Probieren Sie statt dem Stern nach SELECT folgende Möglichkeiten:
 +<code>
 +select NAME from TIERE;
 +select KONTINENT from TIERE;
 +select KONTINENT, NAME from TIERE;
 +</code>
 +
 +=== Sortieren - SELECT ... ORDER BY ... ===
 +
 +Sie können die Ausgabe auch durch den Zusatz von ''order by'' sortieren lassen:
 +
 +|<code>select * from TIERE order by NAME;</code>|<code>NAME        KONTINENT
 +----------  ----------
 +Baer        Europa
 +Baer        Amerika
 +Bison       Amerika
 +Elefant     Afrika
 +Giraffe     Afrika
 +Koala       Australien
 +Loewe       Afrika
 +Murmeltier  Europa
 +Nashorn     Afrika
 +Panda       Asien
 +Tiger       Asien
 +Wildschwei  Europa
 +Wolf        Europa</code>|
 +|<code>select KONTINENT, NAME from TIERE 
 +             order by KONTINENT;</code>|<code>KONTINENT   NAME
 +----------  ----------
 +Afrika      Giraffe
 +Afrika      Nashorn
 +Afrika      Elefant
 +Afrika      Loewe
 +Amerika     Bison
 +Amerika     Baer
 +Asien       Tiger
 +Asien       Panda
 +Australien  Koala
 +Europa      Wildschwei
 +Europa      Wolf
 +Europa      Murmeltier
 +Europa      Baer</code>|
 +
 +=== Datensätze nach bestimmten Kriterien selektieren - SELECT ... WHERE ... ===
 +Sie möchten zum Beispiel nur afrikanische Tiere anzeigen lassen. Das funktioniert mit dem Zusatz ''where //<Bedingung>//''. Man könnte das auch in etwa so formulieren: "Selektiere alle Spalten der Tabelle TIERE für die gilt: der Inhalt der Feldes KONTINENT ist gleich 'Afrika' ".
 +
 +|<code>select * from TIERE where KONTINENT='Afrika';</code>|<code>NAME        KONTINENT
 +----------  ----------
 +Giraffe     Afrika
 +Nashorn     Afrika
 +Elefant     Afrika
 +Loewe       Afrika</code>|
 +
 +Die Zusätze ''where'' und ''order by'' lassen sich auch kombinieren.
 +
 +<WRAP todo >
 +**Aufgabe:**\\
 +Selektieren Sie alle Tiere, die in Europa vorkommen, und lassen Sie das Ergebnis sortiert ausgeben.
 +<code>NAME        KONTINENT
 +----------  ----------
 +Baer        Europa
 +Murmeltier  Europa
 +Wildschwei  Europa
 +Wolf        Europa</code>
 +</WRAP>
 +
 +Das Prozentzeichen ''%'' steht für beliebige Zeichen (wie * in in der Kommandozeile), ''... where ... like 'A%' '' selektiert alle, die mit ''A'' beginnen. Probieren Sie es aus:
 +
 +<code>select * from TIERE where KONTINENT like 'A%';</code>
 +sollte alle Tiere aus Afrika und Asien auflisten.
 +
 +
 +==== Datensätze einfügen - INSERT ====
 +Neue Datensätze können mit ''INSERT'' eingefügt werden. Die Syntax ist etwas umständlich: "Füge ein in Tabelle TIERE für die Felder NAME, KONTINENT und zwar die Werte 'Krokodil' und 'Afrika'.
 +
 +Das INSERT-Statement verrichtet seine Arbeit kommentarlos (solange keine Fehler auftreten). Sie brauchen daher wieder ein ''select * from tiere;'', um sich den neu eingefügten Datensatz anzeigen zu lassen.
 +
 +|<code>insert into TIERE ( NAME, KONTINENT )
 +      values ( 'Krokodil', 'Afrika' );
 +
 +select * from TIERE;</code>|<code>NAME        KONTINENT
 +----------  ----------
 +Giraffe     Afrika
 +Nashorn     Afrika
 +Tiger       Asien
 +Wildschwei  Europa
 +Panda       Asien
 +Bison       Amerika
 +Elefant     Afrika
 +Koala       Australien
 +Wolf        Europa
 +Murmeltier  Europa
 +Loewe       Afrika
 +Baer        Europa
 +Baer        Amerika
 +Krokodil    Afrika</code>|
 +
 +Für jeden Datensatz, der eingefügt werden soll, brauchen Sie ein eigenes INSERT-Statement, Sie können nicht mehrere Datensätze mit einem einzigen INSERT einfügen.
 +
 +<WRAP todo >
 +**Aufgabe:**\\
 +Fügen Sie drei Tiere hinzu.
 +</WRAP>
 +
 +==== Datensätze löschen - DELETE ====
 +
 +Folgendes Statement würde den Datensatz Wolf löschen:
 +<code>delete from TIERE where NAME='Wolf';</code>
 +
 +Seien Sie vorsichtig, folgendes Statement würde nicht nur einen, sondern alle Bären löschen:
 +<code>delete from TIERE where NAME='Baer';</code>
 +
 +==== Datensätze ändern - UPDATE ====
 +
 +<code>update TIERE set NAME='Kroko' where NAME='Krokodil';</code> ändert das Feld ''NAME'' für alle Datensätze für die ''where''-Bedingung zutrifft.
 +
 +<WRAP todo >
 +**Aufgaben:**\\
 +  * Ändern Sie den Namen eines Ihrer Tiere.
 +
 +  * Übersiedeln Sie den Panda von Asien nach Europa.
 +</WRAP>
 +==== Datensätze zählen ====
 +
 +Wie viele Datensätze sind in der gesamten Tabelle?\\ 
 +Wie viele Tiere in Afrika?\\ 
 +Probieren Sie bitte:
 +
 +<code>
 +select count(*) from TIERE;
 +select count(*) from TIERE where kontinent='Afrika';
 +</code>
 +
 +----
 +
 +SQLite beenden mit:  ''.quit''  oder  ''.exit'' (die Punkt-Befehle sind SQLite-spezifisch, die gibt es so in anderen Datenbankprogrammen nicht)
 +
 +----
  
-===== Zusammenfassung =====+===== Zusammenfassung SQL =====
  
 <WRAP box> <WRAP box>
-SELECT, INSERT, UPDATE, DELETE+SELECT, INSERT, DELETE, UPDATE
  
 Jedes Statement muss mit einem Strichpunkt '';'' abgeschlossen werden! Jedes Statement muss mit einem Strichpunkt '';'' abgeschlossen werden!
Zeile 40: Zeile 208:
 ---- ----
 ===== Weiterführende Informationen ===== ===== Weiterführende Informationen =====
 +  * https://de.wikipedia.org/wiki/SQL
   * http://www.w3schools.com/sql/   * http://www.w3schools.com/sql/
  
datenbank/sql-einfuehrung.txt · Zuletzt geändert: 2018-06-05 10:41 von Robert Wiedermann

Robert Wiedermann, Institut für Statistik (STAT), Universität für Bodenkultur Wien