planung:datenbanken

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
planung:datenbanken [2023/05/22 21:21] marrocplanung:datenbanken [2023/06/05 22:16] (aktuell) marroc
Zeile 114: Zeile 114:
  
 <WRAP nicebox green> <WRAP nicebox green>
-Betrachte die unten abgebildeten drei zusätzlichen Zeilen in der Tabelle ** Kommentare **. Was kannst du aus diesen drei Zeilen ablesen? Wer hat das Foto gepostet, wer hat kommentiert und um welches Foto handelte es sich?+**Aufgabe** 
 +Betrachten Sie die unten abgebildeten drei zusätzlichen Zeilen in der Tabelle ** Kommentare **. Was kannst du aus diesen drei Zeilen ablesen? Wer hat das Foto gepostet, wer hat kommentiert und um welches Foto handelte es sich?
  
 {{:planung:aufgabe.png?700|}}  {{:planung:aufgabe.png?700|}} 
-<color #ed1c24>Hier noch Bild in gf2 laden!</color>+
  
  
Zeile 163: Zeile 164:
  
 Die Assoziationen (teilweise auch Kardinalität genannt) gibt es verschiedene Typen. Die Assoziationen (teilweise auch Kardinalität genannt) gibt es verschiedene Typen.
-  * **Einfache Assoziation:** jeder Entität wird wieder "genau eine" Entität zugeordnen, gewissermassen eine **1:1 Beziehung**. \\ Beispiel 1:Ein Land hat genau eine Hauptstadt. Eine Hauptstadt kann genau einem Land zugeordent werden. \\ Beispiel 2: Jeder Schüler hat einen Wiki-Login-Name. Ein Wiki-Login-Name kann einem Schüler zugeornet werden.+  * **Einfache Assoziation:** jeder Entität wird wieder "genau eine" Entität zugeordnen, gewissermassen eine **1:1 Beziehung**. \\ Beispiel 1:Ein Land hat genau eine Hauptstadt. Eine Hauptstadt kann genau einem Land zugeordent werden. \\ Beispiel 2: Jeder Schüler hat einen Instahub. Ein Instahub kann einem Schüler zugeornet werden.
   * **Konditionelle Assoziation**: jeder Entität wird höchstens eine Entität zugeordnet, eine keins-oder-eins Beziehung. \\ Beispiel 1: Ein (schweizer) Staatsangehöriger hat genau einen oder keinen (schweizer) Reisepass. Jeder Reisepass gehört einem Staatsangehörigen \\ Beispiel 2: Jedes Englischbuch im Klassenzimmer gehört einem Lernenden bzw. einer Lernenden. Nicht unbedingt jeder Lernende muss sein Englischbuch im Klassenzimmer dabei haben.   * **Konditionelle Assoziation**: jeder Entität wird höchstens eine Entität zugeordnet, eine keins-oder-eins Beziehung. \\ Beispiel 1: Ein (schweizer) Staatsangehöriger hat genau einen oder keinen (schweizer) Reisepass. Jeder Reisepass gehört einem Staatsangehörigen \\ Beispiel 2: Jedes Englischbuch im Klassenzimmer gehört einem Lernenden bzw. einer Lernenden. Nicht unbedingt jeder Lernende muss sein Englischbuch im Klassenzimmer dabei haben.
   * **Mehrfache Assoziation**: jeder Entität werden "mehrere" Entitäten zugeordnet. Diese Beziehung ist eine mehr-zu-mehr-Beziehung und wird oft als komplex bezeichnet. Oft spricht man hier auch von einer m:n Beziehung. \\ Beispiel 1 einer n:m Beziehung: Im Sozalen Netzwerk können mehrer User mehrere Bilder kommentieren. \\ Beispiel 2 einer 1:n Bezieung: Ein bestimmtes Kunstwerk (Bild) kann nur in einem Museum gleichzeitig ausgestellt werden, jedoch hat ein Museum mehrere Kunstwerke ausgestellt.   * **Mehrfache Assoziation**: jeder Entität werden "mehrere" Entitäten zugeordnet. Diese Beziehung ist eine mehr-zu-mehr-Beziehung und wird oft als komplex bezeichnet. Oft spricht man hier auch von einer m:n Beziehung. \\ Beispiel 1 einer n:m Beziehung: Im Sozalen Netzwerk können mehrer User mehrere Bilder kommentieren. \\ Beispiel 2 einer 1:n Bezieung: Ein bestimmtes Kunstwerk (Bild) kann nur in einem Museum gleichzeitig ausgestellt werden, jedoch hat ein Museum mehrere Kunstwerke ausgestellt.
Zeile 187: Zeile 188:
  
  
-<WRAP nicebox blue+<WRAP nicebox green
-** ERM - Aufgabe **\\  +** ERM - Aufgabe ** \\ 
-Erstellen Sie ein ERM zum folgenden Szenario. Dies wird sicher am einfachsten auf Papier erstellt. Achtung, vermutlich braucht dies auch etwas Platz!+Erstellen Sie ein ERM zum folgenden Szenario. Dies wird sicher am einfachsten auf Papier erstellt. Indentifizieren Sie die Primär- und Fremdschlüssel, bestimmen Sie die jeweiligen Entitätsbeziehungen und erstellen Sie ein Diagramm. Achtung, vermutlich braucht dies auch etwas Platz!
  
 **Szenario:**\\ **Szenario:**\\
Zeile 198: Zeile 199:
 | |Jedes Tier gehört wie schon erwähnt zu genau einem Gehege. In einem Gehege können aber mehrere Tiere gleichzeitig leben! Für jedes Gehege trägt genau ein Tierpfleger oder -pflegerin die Hauptverantwortung. Über jedes Gehege wollen wir die folgenden Attribute abspeichern:Gehegename,   Grösse, Gehegetyp (Wüste, Wald, Tropisch, Wasser oder Aquarium)| | |Jedes Tier gehört wie schon erwähnt zu genau einem Gehege. In einem Gehege können aber mehrere Tiere gleichzeitig leben! Für jedes Gehege trägt genau ein Tierpfleger oder -pflegerin die Hauptverantwortung. Über jedes Gehege wollen wir die folgenden Attribute abspeichern:Gehegename,   Grösse, Gehegetyp (Wüste, Wald, Tropisch, Wasser oder Aquarium)|
 ^Tierpfleger oder -pflegerin ^ ^ ^Tierpfleger oder -pflegerin ^ ^
-| |Ein Pfleger oder Pflegerin pflegt mehrere verschiedene Tiere. Die / der PflegerIn kann für mehrere Gehege hauptverantwortlich sein. Über jede Pflegerin und jeden Pfleger sollen die folgenden Attribute abgespeichert werden: Personal_ID, Vornamen, Nachnamen, Geburtsdatum, Telefonnummer+| |Ein Pfleger oder Pflegerin pflegt mehrere verschiedene Tiere. Die / der PflegerIn kann für mehrere Gehege hauptverantwortlich sein. Über jede Pflegerin und jeden Pfleger sollen die folgenden Attribute abgespeichert werden: Personal_ID, Vornamen, Nachnamen, Geburtsdatum, Telefonnummer |
  
 </WRAP> </WRAP>
  
-===== Abbildungsregeln für die drei Beziehungstypen ===== +==== Abbildungsregeln für die drei Beziehungstypen ==== 
-==== Abbildungsregel für 1:1 Beziehungen - KANN-Regel ==== +Eine relationale Datenbank besteht somit aus mehreren untereinander in Beziehung stehenden Tabellen. Beim Entwerfen solcher gut funktionierender Datenbanken sind Regeln zu beachtenmit denen innerhalb von Tabellen Abhängigkeiten freigelegt werden könne und so redundante Information (Anomalienvermieden werden können
-<WRAP center round info 100%> +
-Die **KANN-Regel** bedeutet, dass man bei einer einfach-zu-einfach Beziehung Tabellen erstellen kann, aber nicht missMan kann also 2 Tabellen erstellen, wobei es keine Rolle spielt, ob man (in diesem Beispiel Land bei Hauptstadt als Fremdschlüssel definiert oder umgekehrt Hauptstadt bei Land als Fremdschlüssel definiert).  +
- +
-Alternativ ist es hier aber auch möglich, nur 1 Tabelle zu erstellendie alle Länder und Hauptstädte enthält. In diesem Fall braucht man keinen Fremdschlüssel für diese Beziehung! +
-</WRAP> +
-Entsprechend ergeben sich beim Beispiel er 1:1 Beziehung (von oben, Land-Hauptstadtdrei mögliche Lösungen: +
-=== Lösung 1 === +
-{{:wiki:einfach_einfach_l1.png?nolink&700|}} +
-=== Lösung 2 === +
-{{:wiki:einfach_einfach_l2.png?nolink&600|}} +
-=== Lösung 3 === +
-{{:wiki:einfach_einfach_l3.png?nolink&800|}}+
  
 +=== Abbildungsregel für 1:1 Beziehungen - KANN-Regel ===
 +Die **KANN-Regel** bedeutet, dass man bei einer einfach-zu-einfach Beziehung zwei Tabellen erstellen kann, aber nicht miss. Es spielt keine Rolle, ob man (im Beispiel Land-Hauptstadt bei der Land-Tabelle die Hauptstadt als Fremdschlüssel definiert oder umgekehrt bei der Hauptstadt-Tabelle das Land als Fremdschlüssel definiert). \\ 
  
 +Alternativ ist es hier aber auch möglich, nur 1 Tabelle zu erstellen, die alle Länder und Hauptstädte enthält. Natürlich braucht es in diesem Fall keinen Fremdschlüssel mehr, jedoch nach wie vor einen Primärschlüssel.
 +----
  
 === Abbildungsregel - MUSS-Regel für einfach-mehrfache Beziehungen === === Abbildungsregel - MUSS-Regel für einfach-mehrfache Beziehungen ===
-<WRAP center round info 100%> 
-Die **MUSS-Regel für einfach-mehrfache Beziehungen** bedeutet, dass man bei einer einfach-mehrfachen Beziehung immer zwei Tabellen benötigt und auch die Position des Fremdschlüssels klar definiert ist. Im obigen Beispiel muss Der/die RegisseurIn in der Tabelle Filme definiert werden (und nicht umgekehrt), weil jeder Film genau einen oder eine RegisseurIn hat und umgekehrt jeder/jede RegisseurIn in mehreren Filmen Regie führen kann. Würde man also Film bei der Tabelle RegisseurIn als Fremdschlüssel hinzufügen, müsste man jeden/jede RegisseurIn unter Umständen mehrmals in die Tabelle eintragen (je 1 mal pro Film, bei dem er/sie Regie geführt hat). Das wäre jedoch nicht erlaubt, weil wir dadurch Redundanzen hätten und schlussendlich auch mehrere Primärschlüssel derselbigen / demselbigen RegisseurIn zuordnen müssten. 
-</WRAP> 
-Entsprechend ergibt sich bei beim Beispiel der Beziehung Film-Regisseur(in) die folgende Lösung für die Tabellen: 
-=== Lösung === 
-{{:wiki:einfach_mehrfach.png?nolink&600|}} 
-=== Weiteres Beispiel einer einfach-zu-mehrfachen-Beziehung === 
-  * Jeder Auftrag (zum Beispiel Bestellung) gehört zu genau 1 Kunden, während jeder Kunde mehrere Aufträge tätigen kann 
-{{:wiki:kunde_auftrag.png?nolink&500|}} 
  
-=== Abbildungsregeln - MUSS-Regel für komplexe Beziehungen ===+Die **MUSS-Regel für einfach-mehrfache Beziehungen** bedeutet, dass man bei einer einfach-mehrfachen Beziehung immer zwei Tabellen benötigt und auch die Position des Fremdschlüssels klar definiert ist. \\
  
-<WRAP center round info 100%> +**Beispiel einer einfach-zu-mehrfachen-Beziehung**\\  
-Die **MUSS-Regel für komplexe Beziehungen** bedeutet, dass man bei komplexen (mehrfach-zu-mehrfach, also n:m) Beziehungen für jede der beiden Entitäten eine Tabelle braucht und __zusätzlich__ für die Beziehung selber eine eigene / weitere / dritte Tabelle erstellen muss. In der dritten Tabelle müssen beide Fremdschlüssel (für beide Entitäten) enthalten sein. Der Primärschlüssel der dritten Tabelle wird aus den beiden Fremdschlüsseln der anderen Tabellen zusammengesetzt.  +Jeder Auftrag (zum Beispiel Bestellung-Kunden-Firma im Videogehört zu genau 1 Kunden, während jeder Kunde mehrere Bestellungen tätigen kann
-</WRAP> +----
-Entsprechend ergibt sich zum Beispiel (Regie-Film-Schauspielerdie folgende Lösung +
-=== Lösung === +
-{{:wiki:komplexe_beziehunh.png?nolink&600|}}\\ +
-Beachten Sie die letzte Tabelle, die einen aus 2 Fremdschlüsseln (F_ID & S_ID) zusammengesetzten Primärschlüssel hat. Hier wird lediglich eingetragen, welcher Schauspieler / welche Schauspielerin bei welchem Film mitspielt.+
  
-<WRAP center round todo 100%> +=== Abbildungsregeln - MUSS-Regel für komplexe Beziehungen ===
-**Aufgabe 3) Tabellen Abbilden**\\ +
-  * Sie sollen nun zu zu Ihrem in Aufgabe 2 ertsellten ERM: +
-    - Die entsprechenden Tabellen mit Hilfe der Abbildungsregeln ableiten und aufzeichnen / skizzieren +
-    Tragen Sie am Ende __einige__ der folgenden Daten als Beispiele in Ihren Tabellen ein! +
-    Die Tabellen können Sie in Word oder Excel erstellen+
  
-**Hier finden Sie die Musterlösung des ERM aus Aufgabe 2:**\\ +Die **MUSS-Regel für komplexe Beziehungen** bedeutet, dass man bei komplexen (mehrfach-zu-mehrfach, also n:m) Beziehungen für jede der beiden Entitäten eine Tabelle braucht und __zusätzlich__ für die Beziehung selber eine eigene / weitere / dritte Tabelle erstellen muss. In der dritten Tabelle müssen beide Fremdschlüssel (für beide Entitäten) enthalten sein. Der Primärschlüssel der dritten Tabelle wird aus den beiden Fremdschlüsseln der anderen Tabellen zusammengesetzt. \\  
-<accordion collapsed="true"> +Hier kann unser Beispiel vom Anfang mit den Instahub User - Photos - Kommentaren genannt werden.
-<panel type="default" title="ERM für Zoo einblenden"> +
-{{:wiki:erm_loesung_aufgabe_2_zoo.png?nolink&900|}}+
  
-</panel> +---- 
-</accordion> +<WRAP nicebox green
- +**Auftrag ERM und die Regeln :** \\ 
-**Szenario:**\\ +  - Besprechen Sie kurz zu zweit diese genannten Regeln für unser Instahub-Beispiel und auch für die Zoo AufgabeEntwerfen Sie so die Datenbank in groben Zügen (Wie viele Tabelle, welche Attribute, ...
-Sie entwickeln für einen Zoo eine kleine DatenbankEs geht darum, Tiere, Gehege und Pflegerinnen und Pfleger in die Datenbank aufzunehmen. dabei gelten die folgenden Beziehungen. +  - Füllen Sie die folgenden Begriffe in das leere ERM und bestimmen Sie die KardinalitätenErgänzen Sie das ERM durch einige wenige AttributeERklären Sie in groben Zügen die Struktur der Datenbankunter Beachtung der oben formulierten Regeln.
-  * **Tiere:**\\ +
-Jedes Tier lebt in einem bestimmten Gehege und kann von mehreren Pflegerinnen oder Pflegern gepflegt werden. +
-Über jedes Tier sollen die verschiedenen Attribute abgespeichert werden: +
-  * Tier-Art +
-  * Name des Tiers +
-  * Ernährung (entweder Fleischpflanzlich oder gemischt) +
-  * Geburtsdatum +
-  * Grösse +
-  * Gewicht +
-  * Geschlecht +
- +
-  * **Gehege:**\\ +
-Jedes Tier gehört wie schon erwähnt zu genau einem GehegeIn einem Gehege können aber mehrere Tiere gleichzeitig leben! Für jedes Gehege ist genau 1 Pfleger oder Pflegerin Hauptverantwortlich +
-Über jedes Gehege wollen wir die folgenden Attribute abspeichern: +
-  * Gehegename (Primärschlüssel+
-  * Grösse +
-  * Gehegetyp (Wüste, Wald, Tropisch, Wasser oder Aquarium) +
- +
-  * **PflegerIn:**\\ +
-Ein Pfleger oder Pflegerin pflegt mehrere verschiedene Tiere. Die / der PflegerIn kann für mehrere Gehege hauptverantwortlich sein. +
-Über jede Pflegerin und jeden Pfleger sollen die folgenden Attribute abgespeichert werden: +
-  * P_ID (Primärschlüssel) +
-  * Vornamen +
-  * Nachnamen +
-  * Geburtsdatum +
-  * Telefonnummer +
- +
-**Daten:**\\ +
-Pflegerinnen und Pfleger: +
-  * Mathilda Schnell, 12.1.2001 pflegt alle Tiger und Löwen und ist für das Gehege Savanna hauptverantwortlich +
-  * Kurt Dotale, 13.9.1997 pflegt alle Pandabären und ist für das Gehege Exotik 1 und Exotik 2 hauptverantwortlich +
-  * Micheline Maire, 1.7.1989 pflegt alle Fische und ist für das Gehege Aquarium und Aussengehege verantwortlich +
-  * Claire Nussbaumer, 1.7.1999, pflegt auch alle Tiger und Löwen und ist für kein Gehege hauptverantwortlich +
-  * Donald Braun, 1.9.1982 pflegt alle Vögel und ist für für die Tropen und den Nordwald hauptverantwortlich +
- +
-Tiere: +
-  * Panda Xiang, hat ein Gewicht von 130 kg und eine Grösse von 125 cm, ist weiblich und lebt im Gehege Tropen. Xiang wurde am 13.1.2009 geboren. +
-  * Panda Meng, hat ein Gewicht von 145 kg, eine Grösse von 130 cm, ist männlich und lebt im Gehege der Tropen. Meng wurde am 23.2.2011 geboren. +
-  * Löwe Samahat ein Gewicht von 190 kg und eine Grösse von 190 cm, ist männlich und lebt im Gehege der SavannaSama ist am 1.1.2001 zur Welt gekommen +
-  * Löwin Bela, hat ein Gewicht von 155 kg und eine Grösse von 182 cm, ist weiblichund lebt im Gehege der Savanna. Bela ist am 14.4.2007 zur Welt gekommen +
-  * Ara Kurt, hat ein Gewicht von 1.3 kg und eine Grösse von 35 cm. Der Papagei lebt im Gehege Exotik 1 +
-  * ... +
- +
-Gehege: +
-  * Exotik 1 hat eine Grösse von 400 m^2 und hat den Gehegetypen tropisch +
-  * Exotik 2 hat eine Grösse von 350 m^2 und hat den Gehegetypen tropisch +
-  * Tropen hat eine Grösse von 750m^2 und hat den Gehegetypen tropisch +
-  * Savanna hat eine Grösse von 700 m^2 und ist vom Gehegetypen Savanna +
-  * Aquarium hat eine Grösse von 30 m^3 und ist vom Gehegetypen Aquarium +
-  * Nordwald hat eine Grösse von 750 m^2 und ist vom Gehegetypen Wald +
- +
-**Musterlösung:**\\ +
-<accordion collapsed="true"> +
-<panel type="default" title="Tabellen für Zoo-Datenbank einblenden"> +
-{{:wiki:erm_tabellen_loesung_3_zoodb.png?nolink&900|}} +
- +
-</panel> +
-</accordion>+
 </WRAP> </WRAP>
- +====== Einführung in SQL ======
-====== Lab Datenbanken: Einführung in SQL ======+
 Stuctured Quere Language (SQL) ist eine standardisierte Abfrage-Sprache um Daten in Datenbanken zu speichern, zu manipulieren und herauszufiltern (zu erhalten). \\ Stuctured Quere Language (SQL) ist eine standardisierte Abfrage-Sprache um Daten in Datenbanken zu speichern, zu manipulieren und herauszufiltern (zu erhalten). \\
-In diesem Kapitel lernen Sie ein paar Grundzüge dieser Abfragesprache kennen, die sie für verschiedenste Datenbanksysteme (wie MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres, u.v.m.) verwenden können.\\ +Im folgenden lernen Sie ein paar Grundzüge dieser Abfragesprache kennen, die sie für verschiedenste Datenbanksysteme (wie MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres, u.v.m.) verwenden können.\\ 
 +Einige wichtige Befehle sind im Folgenden erklärt:
 ^SQL-Klausel ^Zweck ^Erklärung ^ ^SQL-Klausel ^Zweck ^Erklärung ^
 |SELECT |Gibt die Felder mit den gewünschten Daten an |Hiermit  lässt sich entscheiden, welche Felder (Spalten) wir anzeigen wollen | |SELECT |Gibt die Felder mit den gewünschten Daten an |Hiermit  lässt sich entscheiden, welche Felder (Spalten) wir anzeigen wollen |
 |FROM |Enthält die Tabellen mit den Feldern, die in der SELECT-Klausel angegeben sind |In welchen Tabellen liegen die Felder (Spalten), die wir erhalten wollen? | |FROM |Enthält die Tabellen mit den Feldern, die in der SELECT-Klausel angegeben sind |In welchen Tabellen liegen die Felder (Spalten), die wir erhalten wollen? |
 |WHERE |Gibt Feldkriterien an, die jeder Datensatz erfüllen muss, um in die Ergebnisse einbezogen zu werden|Hier lassen sich Datensätze herausfiltern (z.B. wenn wir nur gewisse Daten einer Tabelle anzeigen wollen). | |WHERE |Gibt Feldkriterien an, die jeder Datensatz erfüllen muss, um in die Ergebnisse einbezogen zu werden|Hier lassen sich Datensätze herausfiltern (z.B. wenn wir nur gewisse Daten einer Tabelle anzeigen wollen). |
- 
- 
- 
-<WRAP center round todo 100%> 
-**Übung 1: Tutorial durcharbeiten**\\ 
-Öffnen Sie [[https://info.we-tea.ch/SQL/Infolab_SQL_Playground.html|diesen SQL-Playground]] in einem neuen Browserfenster und gehen Sie Schritt für Schritt durch das folgende SQL Tutorial. Es geht um eine ganz einfache Datenbank über Studentinnen und Studenten. \\ 
-Probieren Sie bitte alle Abfragen selber aus und studieren Sie die Erklärungen dazu! 
-</WRAP> 
- 
-====== Tutorial ====== 
-===== Beispiel: Datenbank über Studentinnen und Studenten ===== 
-Nehmen wir einmal an, wir hätten eine Datenbank mit einer Tabelle namens **Students**, in der wir verschiedene Informationen über Studentinnen und Studenten abgespeichert haben. Studieren Sie hierzu die folgende Tabelle:\\ 
-{{:wiki:students.png?600|}} 
- 
-==== SHOW TABLES ==== 
-Zunächst mal würden wir gerne herausfinden, welche Tabellen in unserer Datenbank "STUDENTS" überhaupt enthalten sind und wie diese heissen.\\ 
-Tippen Sie hierfür den folgenden Befehl ein und klicken Sie auf "RUN"! 
-<file SQL> 
-SHOW TABLES; 
-</file>\\ 
-=== Resultat === 
-Wir sehen nun, dass diese Datenbank aus nur 1 Tabelle besteht, die sich "Students" nennt. 
-{{:wiki:db_wiki_show_tables.png?nolink&1200|}} 
- 
- 
-==== SELECT & FROM ==== 
-Wir würden nun gerne eine Tabelle erhalten, bei der wir nur die Nachnamen und Vornamen aller Studentinnen und Studenten haben, also ohne die anderen Felder (wie S_ID, Geburtsdatum, Nationalität, ...). 
-Wenn wir das Deutsch ansprechen würde, dann würden wir sagen "NIMM die Vornamen und Nachnamen VON der Tabelle Students!\\ 
-Im folgenden Beispiel machen wir genau das, aber mit der Sprache SQL ausgedrückt. Also SELECT Nachname, Vorname FROM Students. \\ 
-Beachten Sie, dass jedes SQL-Statement mit einem Semikolon ; abgeschlossen werden muss! 
-=== Abfrage === 
-<file SQL> 
-SELECT Nachname, Vorname  
-FROM Students; 
-</file>\\ 
-=== Resultat === 
-{{:wiki:BSP_1.png?280|}} 
- 
-Beim obigen Beispiel sehen wir schön, wie wir mit Hilfe der SELECT-Klausel die anzuzeigenden Felder anwählen können. Wir können also die Tabelle sozusagen vertikal (von oben nach unten) filtern.\\ 
-Wenn wir nun jedoch die Tabelle stattdessen horizontal (von links nach rechts) filtern wollen, also nur gewisse Datensätze erhalten wollen, macht man dies mit Hilfe der WHERE-Klausel. Studieren Sie hierzu das folgende Beispiel! 
- 
-==== SELECT DISTINCT==== 
-Probieren Sie die folgenden beiden Abfragen. Inwiefern unterscheiden sich diese? 
-<file SQL> 
-SELECT Nationalität 
-FROM Students; 
-</file>\\ 
- 
-<file SQL> 
-SELECT distinct Nationalität 
-FROM Students; 
-</file>\\ 
-==== WHERE ==== 
-Probieren Sie das folgende Beispiel aus:\\ 
-<file SQL> 
-SELECT Nachname, Vorname, Nationalität 
-FROM Students 
-WHERE Nationalität="Schweiz"; 
-</file> 
-{{:wiki:BSP_2.png?400|}} 
- 
 === Vergleichsoperatoren === === Vergleichsoperatoren ===
 ^Zeichen ^Bedeutung ^ ^Zeichen ^Bedeutung ^
Zeile 396: Zeile 249:
 |BETWEEN a AND b |Zwischen a und b | |BETWEEN a AND b |Zwischen a und b |
  
-Wenn wir nun zum Beispiel wissen wollen, wer alles vor dem Jahr 2000 geboren ist, könnten wir das in der WHERE-Klausel mit dem folgenden Query realisieren:\\ +Beispiel mit Instahub: 
-<file SQL> +//Suchen Sie alle Usernamen der Benutzerinnen aus Ihrer Datenbank.// 
-SELECT NachnameVornameNationalitätGeburtsdatum +Hier kann über die Suche auch die SQL-Abfrage angezeigt werden.{{ :planung:datenbanken_sql2.png?direct&600|}} 
-FROM Students +Die SQL-Abfrage ist somit
-WHERE Geburtsdatum<"2000-01-01"; +<code SQL> 
-</file>+SELECT username 
 +FROM users 
 +WHERE gender = "female" 
 +</code> 
 + 
 +<WRAP nicebox green> 
 +Bearbeiten Sie die folgenden kurzen Aufträge mit Hilfe Ihres Insthubs. Dabei nutzen Sie wieder die Datenbank-Suche oben rechts in Instahub. Notieren Sie anschliessend die SQL-Abfragen. Ziel ist esin einem zweiten Schritt nicht mehr über die Suche sondern direkt SQL-Abfragen formulieren zu können. 
 +  - Alle Benutzer:innen,deren Usernamen mit dem Buchstaben "S" beginnt. 
 +  - Alle Usernamen der männlichen Benutzer. 
 +  - Die Benutzer:innenwelche das Wort „Johan“ im Benutzernamen haben. 
 +  - Die Benutzer, die noch nicht 18 Jahre alt sind. 
 +  - Die Benutzerinnen, die älter als 30 sind. 
 +  - Die Benutzer, die kleiner als 1.65m und die Benutzerinnen, die grösser als 175 sind. 
 +  - Formulieren Sie weitere Abfragen, die Sie sich gegenseitig als Aufgaben stellen.  
 +</WRAP> 
 + 
 + 
 +<accordion> 
 +<panel title = 'Lösungen'> 
 +1. Aufgabe 
 +<code SLQ> 
 +SELECT username 
 +FROM users 
 +WHERE username LIKE "S%" 
 +</code> 
 + 
 +2. Aufgabe 
 +<code SLQ> 
 +SELECT username 
 +FROM users 
 +WHERE gender = "male
 +</code> 
 + 
 +3. Aufgabe 
 +<code SLQ> 
 + 
 +</code> 
 +</panel> 
 +</accordion> 
 ==== AND und OR ==== ==== AND und OR ====
 Die WHERE-Klausel lässt sich beliebig mit den Ausrücken AND und OR erweitern. Falls wir zum Beispiel alle Studentinnen und Studenten finden wolle, die entweder aus der Schweiz oder (**OR**) aus Deutschland stammen, würden wir das folgende Query eingeben:\\ Die WHERE-Klausel lässt sich beliebig mit den Ausrücken AND und OR erweitern. Falls wir zum Beispiel alle Studentinnen und Studenten finden wolle, die entweder aus der Schweiz oder (**OR**) aus Deutschland stammen, würden wir das folgende Query eingeben:\\
  • planung/datenbanken.1684783297.txt.gz
  • Zuletzt geändert: 2023/05/22 21:21
  • von marroc