In dieser Lektionsreihe lernen Sie, wie Sie Microsoft SQL Server mit der SQL SELECT-Anweisung abfragen können. Nachdem Sie diese Lektion gelesen haben, können Sie:
- Alle Tabellen in einer SQL Server SSMS (SQL Server Management Studio) Datenbank identifizieren.
- Verstehen, wie man die Spalten einer Tabelle auflistet.
- Um Spalten anzuzeigen, Text- und mathematische Ergebnisse zu erstellen und unterschiedliche Werte zu setzen, verwenden Sie die SQL SELECT-Anweisung.
- Lernen Sie einige Techniken, um Ihre Befehle zu debuggen und Fehler zu beheben.
Wichtig! Bitte folgen Sie den Beispielen in Ihrer Datenbank und führen Sie sie aus. Wenn Sie es noch nicht getan haben, melden Sie sich für meinen Leitfaden für die ersten Schritte mit SQL Server an. Sie erhalten dann eine Anleitung zum Herunterladen der kostenlosen Software und der Beispieldatenbank.
Verstehen Sie Ihre Datenbank
Eine einfache Select-Anweisung besteht aus zwei Teilen. Der erste Teil beschreibt, welche Spalten wir anzeigen wollen, und der zweite Teil, welche Tabelle wir anzeigen wollen. Eine Select-Anweisung sieht so aus:
SELECT LastName FROM Person.Person
In diesem Beispiel ist LastName die Spalte und Person die Tabelle. Die Spalten kommen nach dem SELECT-Schlüsselwort, während der Tabelle FROM vorangestellt ist.
Tabellennamen
Sie fragen sich vielleicht, warum die Tabelle Person als Person. Person in der obigen Anweisung bezeichnet wird. Dies hat mit der Art und Weise zu tun, wie Objekte auf dem Server organisiert sind. Die Datenbank kann man sich als eine Reihe von verschachtelten Containern vorstellen. Die Container sind:
- Server/Instanz – Die Instanz von SQL Server, die auf dem Computer läuft.
- Datenbanken – Eine oder mehrere Datenbanken, die auf der Instanz erstellt wurden.
- Schemata – Eine Möglichkeit, Tabellen und andere Datenbankobjekte logisch zu gruppieren.
Der vollqualifizierte Name für eine Tabelle lautet …. Wenn wir also wirklich explizit sein wollten, könnten wir etwas wie
SELECT LastName FROM ...
verwenden, um eine Abfrage durchzuführen. Glücklicherweise schreiben wir Abfragen normalerweise im Kontext einer Datenbank, so dass wir nur das Schema und den Tabellennamen wie folgt angeben müssen:
SELECT LastName FROM Person.Person
Aber was ist mit den Klammern? Diese werden verwendet, wenn Ihre Tabelle ein Leerzeichen im Namen hat. Also
SELECT Last NameFROM Person.Person Table
wäre ein Fehler
SELECT FROM Person.
ist OK. Mein Rat? Wenn Sie Ihre eigenen Tabellen benennen können, verwenden Sie keine Leerzeichen, Klammern sind hässlich! Wenn Sie müssen, machen Sie es wie die Oracle-Leute und verwenden Sie Unterstriche. Person_Table ist viel einfacher zu lesen als , ich persönlich bevorzuge PersonTable.
Verwendung des Object Explorer
Um Abfragen zu schreiben, müssen Sie wissen, welche Tabellen und Spalten in Ihren Datenbanken verfügbar sind. Wenn Sie SSMS (SQL Server Management Studio) verwenden, können Sie einfach den Tabellenordner der Datenbank erweitern, um alle Tabellen in Ihrer Datenbank aufzulisten. Sobald Sie eine Tabelle gefunden haben, über die Sie mehr wissen möchten, klicken Sie einfach auf den Tabellennamen, um ihn zu erweitern, und dann auf den Spaltenordner, um alle Spalten aufzulisten.
Ausführen von Abfragen in SSMS
Bevor wir zu weit gehen, möchte ich Ihnen zeigen, wie Sie eine Abfrage in SSMS ausführen. Es ist eigentlich ganz einfach. Sobald Sie SQL Server Management Studio gestartet haben, wählen Sie Ihre Datenbank aus. Klicken Sie dann auf die Schaltfläche Neue Abfrage in der oberen Symbolleiste. Daraufhin wird auf der rechten Seite ein Abfragefenster angezeigt. Sie können in diesem Fenster alles eingeben, was Sie möchten, da es sich im Grunde um einen Texteditor handelt. Schneiden Sie eine SQL-Anweisung aus und fügen Sie sie ein oder geben Sie sie ein, und klicken Sie dann auf Ausführen, um die Anweisung auszuführen. Die Ergebnisse werden im unteren Teil des Fensters angezeigt und alle Meldungen, wie z. B. Fehler, werden auf der Registerkarte Meldungen angezeigt.
Mehrere Spalten auswählen
Um mehr als eine Spalte auszuwählen, trennen Sie sie einfach mit einem Komma. Zum Beispiel gibt
SELECT FirstName, LastNameFROM Person.Person
als Ergebnis sowohl den Vornamen als auch den Nachnamen zurück. Falls Sie sich wundern, können Sie beim Schreiben von Abfragen die Groß- und Kleinschreibung mischen. Das heißt
SELECT FirstName, LastNameFROM Person.Person
funktioniert genauso gut wie
select FirstName, LastNamefrom Person.Person
Tipp! Eine gängige Konvention ist es, alle Schlüsselwörter groß zu schreiben. Einige DBAs sind der Meinung, dass auf diese Weise geschriebene Befehle leichter zu lesen sind. Ich persönlich mache das nicht, aber für diesen Blog werde ich es versuchen 🙂
SQL-Spalten umbenennen
Sie können die Spalten umbenennen, die sich aus Ihren Select-Anweisungen ergeben. Verwenden Sie dazu die AS-Anweisung wie folgt:
SELECT LastName as SirNameFROM Person.Person
Damit wird das Ergebnis als „SirName“ und nicht als „LastName“ angezeigt. Dies ist nicht nur aus Gründen der Eitelkeit eine nette Funktion, sondern auch, wenn wir ein Berechnungsergebnis zurückgeben und ihm einen Namen geben wollen. Nehmen wir zum Beispiel an, Sie möchten den Nachnamen in Großbuchstaben zurückgeben. Sie könnten schreiben
SELECT UPPER(LastName) AS SirNameFROM Customers
UPPER ist als Funktion bekannt. SQL Server verfügt über viele Funktionen, mit denen Sie viele Arten von Berechnungen durchführen können. Wir werden uns später mit ihnen befassen, aber schon jetzt sollten Sie wissen, dass Sie mehrere Funktionen aneinanderreihen können, um einen komplexen Ausdruck zu erstellen, der die Daten so ausgibt, wie Sie es benötigen.
Komplexe Spaltenausdrücke
Unsere Angestelltentabelle enthält separate Felder für Vor- und Nachnamen. Angenommen, die Personalabteilung benötigt einen vollständigen Namen in Großbuchstaben. Wie würden Sie das machen? Ganz einfach! Sie könnten schreiben
SELECT UPPER(FirstName) + ' ' + UPPER(LastName) AS FullNameFROM Person.Person
Diese Anweisung sieht vielleicht kompliziert aus, aber wenn wir sie aufschlüsseln, werden Sie sehen, dass sie nur aus einer Reihe einfacher Elemente besteht.
- Wie Sie gerade gelernt haben, wird UPPER verwendet, um den Großbuchstaben einer Spalte zurückzugeben.
- Das + weist SQL an, zwei Werte miteinander zu kombinieren.
Alles, was in einfachen Anführungszeichen (‚) steht, wird buchstäblich so angezeigt, wie es ist. In unserem Fall bedeutet das ‚ ‚, dass ein einzelnes Leerzeichen ausgegeben werden soll. Wenn Sie unseren Ausdruck auf Englisch lesen, würde er wie folgt lauten: „Nehmen Sie den Großbuchstaben des Vornamens, kombinieren Sie ihn mit einem Leerzeichen und fügen Sie dann den Großbuchstaben des Nachnamens hinzu.“
Mathematisieren Sie mit SQL!
Sie können SQL auch dazu bringen, mathematische Tricks für Sie durchzuführen. Es kann einige ziemlich komplizierte Berechnungen durchführen, wenn Sie es zulassen. Für heute zeige ich Ihnen, wie man zwei Zahlen multipliziert, aber Sie können genauso gut addieren, subtrahieren oder dividieren. Später werden wir es etwas komplizierter machen, damit Sie Ihre Algebra-II-Tage wieder aufleben lassen können 🙂 Hier sind einige gängige mathematische Operatoren, die Sie in SQL verwenden können:
- * Multiplizieren
- / Dividieren
- + Addieren
- – Subtrahieren
Wir verwenden die Tabelle „OrderDetails“ und berechnen den Gesamtpreis durch Multiplikation des Stückpreises mit der Menge.
SELECT UnitPrice, OrderQty, UnitPrice * OrderQty AS TotalFROM Purchasing.PurchaseOrderDetail
Das Bit “ UnitPrice * OrderQty“ besagt, dass der Einheitspreis mit der Menge multipliziert werden soll.
Be Distinct and Debug
Bis jetzt haben wir die select-Anweisung verwendet, um alle Datensätze in einer Tabelle abzurufen, unabhängig davon, ob sich einige Werte wiederholen oder nicht. Wenn Sie möchten, können Sie das Schlüsselwort DISTINCT verwenden, um Duplikate aus Ihren Ergebnissen zu entfernen. Wenn Sie beispielsweise nur eine eindeutige Liste der Titel der Mitarbeiter zurückgeben möchten, würden Sie folgende SQL-Anweisung verwenden:
SELECT DISTINCT JobTitleFROM HumanResources.Employee
Die DISTINCT-Anweisung funktioniert auch bei mehr als einer Spalte. Wenn Sie möchten, können Sie eine eindeutige Liste von Berufsbezeichnungen und Geschlechtern erhalten, indem Sie
SELECT DISTINCT JobTitle, GenderFROM HumanResources.Employee
eingeben!Wissenswertes: Das Schlüsselwort ALL ist das Gegenstück zu DISTINCT und ist das Standardverhalten. Deshalb schreiben wir es nicht in unsere Anweisungen.
Finden und Korrigieren von Fehlern
Früher oder später werden Sie eine select-Anweisung in der Befehlszeile falsch eingeben und der Computer wird Sie anschreien – „Syntaxfehler!“ oder „Ungültiger Spaltenname“ Was ist zu tun? Denken Sie einfach daran, dass die Select-Anweisung aus zwei Hauptteilen besteht: dem SELECT- und dem FROM-Teil. Im Allgemeinen prüft die Datenbank zunächst, ob diese Schlüsselwörter vorhanden sind, und wenn nicht, wird ein Syntaxfehler ausgelöst.
Das ist nur eine schicke Formulierung für „Sie haben ein Schlüsselwort falsch geschrieben oder es ist in der falschen Reihenfolge“ (z.B. Sie haben das Distinct vor Select wie in DISTINCT SELECT). Nachdem die Schlüsselwörter überprüft wurden, wird die Anweisung daraufhin untersucht, ob Sie eine Tabelle angegeben haben. Sobald die Tabelle bekannt ist, können die Spalten überprüft werden. Die Reihenfolge ist also, dass zuerst die Schlüsselwörter, dann die Tabellen und zuletzt die korrekten Spalten geprüft werden. Wenn ein Fehler angezeigt wird, lesen Sie ihn aufmerksam. Wahrscheinlich haben Sie etwas falsch geschrieben. Der Computer teilt Ihnen in Anführungszeichen mit, was Sie falsch geschrieben haben; Ihre Aufgabe ist es dann, den Fehler zu finden und zu korrigieren.
SQL Select Exercises
Es ist wichtig, zu üben! Verwenden Sie die Beispieldatenbank, um diese Fragen zu beantworten.
- Wie können Sie alle Tabellennamen in der AdventureWorks2012-Datenbank finden?
- Welche zwei Möglichkeiten gibt es, um die Namen aller Spalten in der Tabelle Person.Person zu erhalten?
- Wählen Sie JobTitle und BirthDate für alle Mitarbeiter aus?
- Wie hoch wäre der UnitPrice der einzelnen PurchaseOrderDetail-Artikel, wenn es einen halben Rabatt gäbe?
Antworten finden Sie hier
Glückwunsch! Sie haben soeben gelernt, wie man den Befehl select zur Abfrage einer Datenbank verwendet. Es werden noch weitere Tutorials folgen, in denen wir uns mit einigen Bereichen beschäftigen werden, die wir heute nur gestreift haben, wie zum Beispiel mathematische Operatoren und Funktionen. Zur Erinnerung! Ich möchte euch alle daran erinnern, dass ihr, wenn ihr weitere Fragen habt, die ihr beantwortet haben wollt, einen Kommentar schreiben oder mir einen Tweet schicken könnt. Ich bin hier, um euch zu helfen.