SQL-Abfragen: Unterschied zwischen den Versionen

Aus IV1
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Eine SQL-Datenbank kann mit der '''SELECT'''-Anweisung abgefragt werden, wenn die entsprechenden Zugriffsrechte vorliegen. Nachfolgende Beispiele beziehen sich auf die Implementierung des bei den [[Normalformen]] dargestellten Modells in einem SQL-Trainingsserver, welche als interpretierende Maschine unter [http://sql.idv.edu/ http://sql.idv.edu] erreichbar ist. Die Zugriffsrechte auf die Lehr- und Übungsdatenbank erlauben lediglich die Anwendungen von Abfragen mit der SELECT-Anweisung. Um das Antwortzeitverhalten besonders in Prüfungszeiten zu verbessern, wurde die Ausgabe der Treffer auf 500 Datensätze begrenzt.
Eine SQL-Datenbank kann mit der '''SELECT'''-Anweisung abgefragt werden, wenn die entsprechenden Zugriffsrechte vorliegen. Nachfolgende Beispiele beziehen sich auf die Implementierung des bei den [[Normalformen]] dargestellten Modells in einem SQL-Trainingsserver, welche als interpretierende Maschine unter [http://sql.idv.edu/ http://sql.idv.edu] erreichbar ist. Die Zugriffsrechte auf die Lehr- und Übungsdatenbank erlauben lediglich die Anwendungen von Abfragen mit der SELECT-Anweisung. Um das Antwortzeitverhalten besonders in Prüfungszeiten zu verbessern, wurde die Ausgabe der Treffer auf 500 Datensätze begrenzt.


== SELECT ==
== Ausgeben von Datensätzen ==


Mit dem SELECT-Schlüsselwort lassen sich bestimmte Datensätze aus einer Datenbank auslesen, die dann später anderwärtig (z.B. durch eine Script- oder Programiersprache) weiterverarbeitet werden. Als Beispieltabelle kommt hier die Tabelle ''Kunde'' (und später auch die Tabelle ''PLZ'') aus der Buchhandlungs-Datenbank zum Einsatz.
Mit dem SELECT-Schlüsselwort lassen sich bestimmte Datensätze aus einer Datenbank auslesen, die dann später anderwärtig (z.B. durch eine Script- oder Programiersprache) weiterverarbeitet werden. Als Beispieltabelle kommt hier die Tabelle ''Kunde'' (und später auch die Tabelle ''PLZ'') aus der Buchhandlungs-Datenbank zum Einsatz.
Zeile 28: Zeile 28:
<input type="submit" name="select3b" value="Ausführen"></form>
<input type="submit" name="select3b" value="Ausführen"></form>


== DISTINCT ==
== Ausschließen von Wiederholungen ==


Öfters kommt es nun vor, dass Inhalte gewisser Spalten mehrfach in den Datensätzen vorkommen. Soll z.B. eine Liste aller Nachnamen erstellt werden, so könnte es durchaus passieren, dass mehrere Personen in der Tabelle den selben Nachnamen haben. Damit jeder Nachname aber wirklich nur einmal vorkommt wird der Term '''DISTINCT''' hinter SELECT gestellt.
Öfters kommt es nun vor, dass Inhalte gewisser Spalten mehrfach in den Datensätzen vorkommen. Soll z.B. eine Liste aller Nachnamen erstellt werden, so könnte es durchaus passieren, dass mehrere Personen in der Tabelle den selben Nachnamen haben. Damit jeder Nachname aber wirklich nur einmal vorkommt wird der Term '''DISTINCT''' hinter SELECT gestellt.
Zeile 37: Zeile 37:
<input type="hidden" name="select4a" value="SELECT DISTINCT Nachname FROM Kunde"><br />
<input type="hidden" name="select4a" value="SELECT DISTINCT Nachname FROM Kunde"><br />
<input type="submit" name="select4b" value="Ausführen"></form>
<input type="submit" name="select4b" value="Ausführen"></form>
== Auswählen von Datensätzen ==
Um bestimmte Zeilen (Datensätze) einer Tabelle auszuwählen, muss angegeben werden, welche Bedingung für diese Zeilen gelten soll. Die Bedingungen werden in der '''WHERE'''-Komponente definiert. Sie enthalten Operatoren, für die nachfolgende Reihenfolge anzuwenden ist.
# ( )
# * /
# + -
# = <> > <
# NOT AND OR
<pre>SELECT Vorname, Nachname
FROM Kunde
WHERE Vorname='Michael'</pre>
(gibt die Spalten ''Vorname'' und ''Nachname'' all jener Datensätze aus, die den Vornamen "Michael" enthalten)
<form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank">
<input type="hidden" name="select5a" value="SELECT Vorname, Nachname FROM Kunde WHERE Vorname='Michael'"><br />
<input type="submit" name="select5b" value="Ausführen"></form>

Version vom 21. Februar 2009, 23:19 Uhr

Eine SQL-Datenbank kann mit der SELECT-Anweisung abgefragt werden, wenn die entsprechenden Zugriffsrechte vorliegen. Nachfolgende Beispiele beziehen sich auf die Implementierung des bei den Normalformen dargestellten Modells in einem SQL-Trainingsserver, welche als interpretierende Maschine unter http://sql.idv.edu erreichbar ist. Die Zugriffsrechte auf die Lehr- und Übungsdatenbank erlauben lediglich die Anwendungen von Abfragen mit der SELECT-Anweisung. Um das Antwortzeitverhalten besonders in Prüfungszeiten zu verbessern, wurde die Ausgabe der Treffer auf 500 Datensätze begrenzt.

Ausgeben von Datensätzen

Mit dem SELECT-Schlüsselwort lassen sich bestimmte Datensätze aus einer Datenbank auslesen, die dann später anderwärtig (z.B. durch eine Script- oder Programiersprache) weiterverarbeitet werden. Als Beispieltabelle kommt hier die Tabelle Kunde (und später auch die Tabelle PLZ) aus der Buchhandlungs-Datenbank zum Einsatz.

SELECT Vorname
FROM Kunde

(gibt jeweils das Feld Vorname eines jeden Datensatzes der Tabelle Kunde aus) <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> <input type="hidden" name="select1a" value="SELECT Vorname FROM Kunde">
<input type="submit" name="select1b" value="Ausführen"></form>

Um mehrere Spalten auflisten zu lassen, müssen diese (mit Komma getrennt) in der Abfrage angegeben werden.

SELECT Vorname, Nachname, Plz
FROM Kunde

(gibt die Spalten Vorname, Nachname und Plz aller Datensätze der Tabelle Kunde aus) <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> <input type="hidden" name="select2a" value="SELECT Vorname, Nachname, Plz FROM Kunde">
<input type="submit" name="select2b" value="Ausführen"></form>

Oft ist aber unbekannt, wie alle Felder in einer Tabelle heißen. In so einem Fall, oder um einfach alle Felder in die Abfrage einzubeziehen, kann man anstatt der Spalten einfach einen * einsetzen.

SELECT *
FROM Kunde

(gibt alle Spalten jedes Datensatzes in der Tabelle Kunde aus) <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> <input type="hidden" name="select3a" value="SELECT * FROM Kunde">
<input type="submit" name="select3b" value="Ausführen"></form>

Ausschließen von Wiederholungen

Öfters kommt es nun vor, dass Inhalte gewisser Spalten mehrfach in den Datensätzen vorkommen. Soll z.B. eine Liste aller Nachnamen erstellt werden, so könnte es durchaus passieren, dass mehrere Personen in der Tabelle den selben Nachnamen haben. Damit jeder Nachname aber wirklich nur einmal vorkommt wird der Term DISTINCT hinter SELECT gestellt.

SELECT DISTINCT Nachname
FROM Kunde

(gibt das Feld Nachname aus, wobei aber keine Duplikate angezeigt werden) <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> <input type="hidden" name="select4a" value="SELECT DISTINCT Nachname FROM Kunde">
<input type="submit" name="select4b" value="Ausführen"></form>

Auswählen von Datensätzen

Um bestimmte Zeilen (Datensätze) einer Tabelle auszuwählen, muss angegeben werden, welche Bedingung für diese Zeilen gelten soll. Die Bedingungen werden in der WHERE-Komponente definiert. Sie enthalten Operatoren, für die nachfolgende Reihenfolge anzuwenden ist.

  1. ( )
  2. * /
  3. + -
  4. = <> > <
  5. NOT AND OR
SELECT Vorname, Nachname
FROM Kunde
WHERE Vorname='Michael'

(gibt die Spalten Vorname und Nachname all jener Datensätze aus, die den Vornamen "Michael" enthalten) <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> <input type="hidden" name="select5a" value="SELECT Vorname, Nachname FROM Kunde WHERE Vorname='Michael'">
<input type="submit" name="select5b" value="Ausführen"></form>