Das SELECT-Statement ist das einfachste Statement und gleichzeitig die Basis jeden Statements beim SQL-Server.
Ausgabe aller Spalten einer Tabelle
SELECT * FROM <<Tabellen-Name>> GO
Ausgabe bestimmter Spalten einer Tabelle
SELECT <<Spalte1>> ,<<Spalte2>> ,<<Spalte3>> FROM <<Tabellen-Name>> GO
Ausgabe mit Sortierung
Hier wird das Ergebnis des SELECT-Statements nach Spalte1 sortiert.
SELECT <<Spalte1>> ,<<Spalte2>> ,<<Spalte3>> FROM <<Tabellen-Name>> ORDER BY <<Spalte1>> GO -- ORDER BY <<Spalte1>> ASC [Sortierung aufsteigend] -- ORDER BY <<Spalte1>> DESC [Sortierung absteigend]
Mit der Erweiterung ASC (ASCENDING / Aufsteigend) oder DESC (DESCENDING / Absteigend) wird das Ergebnis des SELECT-Statements sortiert.
Abfrage mit Einschränkungen
-
genaue Suche
-
SELECT <<Spalte1>> ,<<Spalte2>> ,<<Spalte3>> FROM <<Tabellen-Name>> WHERE <<Spalte1>> = 'String' GO
Hier wird in Spalte1 nach einem genauen Text (String) gesucht. Es werden nur die Datensätze angezeigt, die genau diesen Werten in Spalte1 haben.
WICHTIG: Es kann vorkommen, dass man innerhalb des Strings ein Hochkomme ( ‚ ) hat. Wenn dies der Fall ist, so muss das Hochkomme im String maskiert werden.
--String ohne Maskierung O'Neal --String mit Maskierung O''Neal
Die Problematik mit dem Maskieren kann man wunderbar im SQL-Statement durch ein REPLACE beheben.
--Ersetzen eines Hochkommas durch 2 Hochkommas (maskieren) SELECT <<Spalte1>> ,REPLACE(<<Spalte2>>, '''', '''''') ,<<Spalte3>> FROM <<Tabellen-Name>> GO
Die Anweisung sucht nun innerhalb eines Strings nach einem Hochkomme ( ““ ). Wird ein Hochkomme gefunden wird es durch zwei Hochkommas ( “““ ) ersetzt. Dies ist sehr nützlich wenn man dynamisch mit einer SELECT-Anweisung INSERT-Statements erstellt.
-
Suche mit BETWEEN
-
SELECT <<Spalte1>> ,<<Spalte2>> ,<<Spalte3>> FROM <<Tabellen-Name>> WHERE <<Spalte1>> BETWEEN X AND Y GO
Die Suche mit BETWEEN deckt einen Bereich (RANGE) an Daten für die Suche ab. BETWEEN ist z.B. für die Suche von Kundennummern (von Kundennummer 1 bis Kundennummer 250) besonders geeignet.
-
Suche mit IN
-
SELECT <<Spalte1>> ,<<Spalte2>> ,<<Spalte3>> FROM <<Tabellen-Name>> WHERE <<Spalte1>> IN ('String1', 'String2', 'String3') GO
Die Suche mit IN ist wie die genaue Suche mit dem Gleichheitszeichen. Der Unterschied liegt darin, dass man mehrere Suchbegriffe angeben kann. Die Suchbegriffe werden innerhalb einer Klammer und getrennt mit einem Komma aufgeführt.
-
Suche mit LIKE
-
SELECT <<Spalte1>> ,<<Spalte2>> ,<<Spalte3>> FROM <<Tabellen-Name>> WHERE <<Spalte1>> LIKE 'String%' GO
Ersetzen wir das Gleich-Zeichen (=) durch ein LIKE und erweitern den Suchtext durch ein Prozent-Zeichen (%) wird das Ergebnis der Abfrage ungenauer. Dies bedeutet, dass hier jetzt alle Datensätze angezeigt werden, die mit dem gewünschten Begriff beginnen. Nach dem eigentlichen Suchbegriff können durch das Prozent-Zeichen noch beliebig viele Zeichen kommen. Das Prozent-Zeichen kann auch vor den Suchbegriff gesetzt werden.
Neben dem Prozent-Zeichen gibt es für die LIKE-Suche noch weiter Platzhalter (Wildcards):
- Prozent ( % ) ==> beliebig viele Zeichen
- Unterstrich ( _ ) ==> genau ein Zeichen
- Eckige Klammern ( [ ] ) ==> Ein Zeichen innerhalb der eckigen Klammer (z.B. [a-g] oder [a,b,c,d,e,f,g])
- Hier handelt es sich um die Erweiterung des Unterstriches. Es wird nach einem Zeichen vor oder nach dem Suchbegriff gesucht. Der passende Wert wird innerhalb der eckigen Klammer eingeschränkt.
- Eckige Klammer negiert ( [ ^] ) ==> Die Zeichen innerhalb der eckigen Klammer werden bei der Suche ausgeschlossen
Die Platzhalter (Wildcards) können auch mehrfach eingesetzt werden. Suche ich z.B. nach zwei Zeichen nach dem Suchbegriff verwende ich zwei Unterstriche ( __ ) als Platzhalter. Der Kombination zweier Platzhalter (Wildcards) steht ebenfalls nichts im Wege.
-
Allgemeines
Die Einschränkungen (WHERE) können mit AND und OR miteinander kombiniert werden.
Beim AND ist es so, dass alles was mit AND verknüpft / aufgereiht wird zutreffen muss damit der Datensatz angezeigt wird.
Bei OR ist es so, dass die zu vergleichenden Werte mit einer Klammer umschlossen werden müssen. Hier muss dann nur ein Wert je Klammer / Block zutreffen.
Die Einschränkungen (WHERE) mittels BETWEEN, IN und LIKE können mit NOT negiert werden.