Datensortierung
Die ORDER BY-Klausel sortiert die Daten in der angegebenen Reihenfolge (Bestelldaten). Zur Angabe der Spaltenpositionen ist eine Liste mit Spaltennamen oder eine Liste mit nicht negativen Ganzzahlen erforderlich. Verwenden Sie ASC zur Darstellung der aufsteigenden Reihenfolge und DESC zur Darstellung der absteigenden Reihenfolge. Der Standardwert ist ASC.
Anzahl der zurückgegebenen Zeilen begrenzen
Es ist möglich, die Anzahl der Zeilen im Ergebnis zu begrenzen, ohne eine WHERE-Klausel zu verwenden. Die „TOP“-Klausel kann die Anzahl der Zeilen um eine bestimmte Zahl oder einen bestimmten Prozentsatz begrenzen.
Datengruppierung und Berechnung von Aggregatfunktionen
Die Aggregatfunktion berechnet die Summe der Daten in der Tabelle. SQL Server bietet die folgenden Aggregatfunktionen:
· AVG Diese Funktion berechnet den Durchschnitt. Die Syntax lautet wie folgt:
AVG ([ALL | DISTINCT] exPRession)
Das Schlüsselwort DISTINCT wird nur zur Berechnung des Durchschnitts verschiedener Werte verwendet. Wenn es viele doppelte Werte gibt, werden diese Werte nur verwendet wird einmal berechnet und der Standardwert ist ALLE.
Ausdruck kann ein arithmetischer Ausdruck sein, der eine oder mehrere Spalten umfasst.
· MIN Diese Funktion findet den Minimalwert im bereitgestellten Ausdruck. Die Syntax lautet wie folgt:
MIN (Ausdruck)
· MAX Die Funktion dieser Funktion besteht darin, den Maximalwert im bereitgestellten Ausdruck zu finden. Die Syntax lautet wie folgt:
MAX (Ausdruck)
Hinweis: Wenn der lokale Zeichenfolgentyp MIN und MAX verwendet, hängt die Ausgabe von der für SQL Server definierten Reihenfolge ab. MIN und MAX können nicht für Bits verwendet werden.
· SUM SUM berechnet die Summe aller Datenwerte. Die Syntax lautet wie folgt:
SUM ([ALL | DISTINCT] Ausdruck)
Hinweis: SUM und AVG können nur für numerische Datentypen verwendet werden.
· COUNT Zählt die Anzahl der Ausdruckswerte. Die Syntax lautet wie folgt:
COUNT ([ALL | DISTINCT] Ausdruck)
COUNT hat eine andere Verwendung, es kann die Anzahl der ausgewählten Zeilen zurückgeben.
Zum Beispiel: SELECT NumRows = COUNT (*) FROM titles
Die Aggregatfunktion ignoriert alle Nullwerte außer COUNT(*). Obwohl alle Aggregatfunktionen auf der Grundlage der Abwesenheit von NULL-Werten berechnen, berechnet COUNT(*) alle Zeilen (einschließlich Zeilen mit NULL-Werten).
1. GROUP BY-Klausel
Die GROUP BY-Klausel erstellt kleinere Gruppen basierend auf den definierten Daten und führt Aggregatfunktionsberechnungen für jede Gruppe durch. Mit anderen Worten: Es werden Gesamtinformationen für jede Gruppe erstellt. GROUP BY kann mehr als eine Spalte als Gruppierungsspalten behandeln (Gruppierungsspalten). Es fasst Informationen zu eindeutigen Werten in einer kombinierten Spalte zusammen.
Eine Auswahlliste, die die GROUP BY-Klausel verwendet, kann nur die folgenden Elemente enthalten:
· Konstante Werte.
· Kombinierte Spalten.
·Ausdruck. Jeder Ausdruck gibt einen Wert für jede Gruppe zurück (wie eine Aggregatfunktion). Wenn sich eine Spalte nicht nur in einer kombinierten Spalte, sondern auch in einer Auswahlliste befindet, verfügt sie über mehrere Werte für jeden eindeutigen Wert der kombinierten Spalte. Dieser Strukturtyp ist nicht zulässig.
2. GROUP BY- und HAVING
HAVING-Klauseln werden verwendet, um Datenfilterkriterien zu Abfragen hinzuzufügen, die die GROUP BY-Klausel verwenden. Die Verwendung von HAVING ist dieselbe wie die WHERE-Klausel in SELECT. Es ist möglich, die WHERE-Klausel in einer Abfrage zu verwenden, die eine GROUP BY-Klausel enthält. HAVING und WHERE haben die gleiche Syntax. Der Unterschied zwischen HAVING und WHERE ist:
· In der WHERE-Klausel werden Zeilen, die die Bedingung nicht erfüllen, vor dem Gruppieren entfernt, während in der HAVING-Klausel die Bedingung nach dem Gruppieren angewendet wird.
· HAVING kann Aggregatfunktionen in Bedingungen einschließen, WHERE jedoch nicht.
Hinweis: Die Klauseln GROUP BY und HAVING können keine Text- oder Bilddatentypen verwenden.
3. COMPUTE BY-Klausel
Die COMPUTE BY-Klausel kann detaillierte oder vollständige Datensätze abrufen. Es unterteilt die Daten in kleinere Gruppen und erstellt dann einen detaillierten Datensatz mit Datensatzergebnissen für jede Gruppe (wie SELECT). Es kann auch Gesamtdatensätze für jede Gruppe generieren (wie GROUP BY).
In COMPUT BY ist es nicht erforderlich, die BY-Klausel zu definieren. Wenn die BY-Klausel nicht definiert ist, wird die gesamte Tabelle als Gruppe betrachtet und es werden nur zwei Ergebnisdatensätze erzeugt, einer mit allen detaillierten Datensätzen und der andere mit nur einer Zeile, die die Gesamtzahl der Datensätze enthält.
Hinweis: Bei Verwendung von BY in COMPUTE muss ORDER BY in allen kombinierten Spalten enthalten sein.
Cube- und Rollup-Operationen
CUBE- und ROLLUP-Operationen können mehr Aggregatwerte erzeugen als einfache GROUP BY. Diese Vorgänge sind nützlich, wenn Sie Kreuztabellenberichte erstellen. Wenn die Abfrage n Kombinationsspalten verwendet, gibt es 2n Kombinationen zur Berechnung der Aggregation.
Zugriff auf Daten aus mehreren Tabellen
Wir haben besprochen, wie man auf Daten aus einer einzelnen Tabelle zugreift. Auch der Zugriff auf Daten aus mehreren Tabellen ist möglich. Der Zugriff auf Daten aus mehreren Tabellen wird als Zusammenführen einer Tabelle bezeichnet.
1. CROSS JOIN (Kartesisches Produkt)
CROSS JOIN kombiniert Tabellen einfach ohne Einschränkungen. Die Anzahl der Zeilen im Ergebnis nach CROSS JOIN ist das Produkt der Anzahl der Zeilen in den ersten beiden verknüpften Tabellen. Wenn Sie zwei Tabellen mit jeweils Tausenden Zeilen verknüpfen, sind die Ergebnisse unvorstellbar.
2. INNER JOIN
INNER JOIN ist die am häufigsten verwendete Methode zum Kombinieren zweier Tabellen. INNER JOIN basiert auf einer Diskriminante, die als Verbindungsbedingung bezeichnet wird. Die Join-Bedingung wird zusammen mit der WHERE-Klausel definiert. Die Join-Bedingung besteht aus Spalten beider Tabellen und verwendet eine Vergleichsbedingung, um die Spaltenwerte zu vergleichen. Die Werte, die den Vergleich bestanden haben, sind im Ergebnisdatensatz enthalten. Die Syntax von Inner JOIN lautet wie folgt:
Syntax 1: (ANSI 92)
Wählen Sie
FROM
ON
Syntax 2:
Select
FROM < table1>,
Ein Alias kann für die Tabelle in der FROM-Klausel definiert werden, und der Alias kann sein wird überall anstelle des richtigen Namens verwendet.
Hinweis: Wenn in der als Join-Bedingung verwendeten Spalte ein Nullwert vorhanden ist, kann der Nullwert mit keinem Wert übereinstimmen, sodass das Ergebnis keine Zeilen mit Nullwerten enthält.
3. Left Outer JOIN
In Inner JOIN können nur Zeilen im Ergebnisdatensatz enthalten sein, die in den beiden Tabellen übereinstimmen. Bei Left Outer JOIN erscheinen jedoch alle Zeilen in der linken Tabelle im Ergebnisdatensatz. Wenn eine Zeile in der linken Tabelle keine entsprechende Zeile in der rechten Tabelle hat, wird ein Nullwert verwendet, um den Wert in der rechten Tabelle zu ersetzen und mach mit.
Die Syntax lautet wie folgt: (ANSI 92)
Wählen Sie
FROM
ON
Right Outer JOIN
Right Outer JOIN ähnelt Left Outer JOIN, außer dass die rechte Tabelle als externe Tabelle verwendet wird (alle Zeilen in der rechten Tabelle). sind im Ergebnisdatensatz enthalten).
Die Syntax lautet wie folgt:
Wählen Sie
FROM
ON
5. Full Outer JOIN
Beim Full Outer JOIN werden alle Zeilen aus beiden Tabellen in den Ergebnisdatensatz einbezogen.
Die Syntax lautet wie folgt:
Wählen Sie
FROM
ON
Case-Anweisung
Wenn unterschiedliche Ergebniswerte für unterschiedliche Bedingungen erzeugt werden, kann die Case-Anweisung verwendet werden.
Die Case-Anweisung berechnet alle definierten Bedingungen und gibt das Ergebnis basierend darauf zurück, ob die Bedingungen wahr sind.
Die Syntax lautet wie folgt:
CASE [
WHEN
[ELSE
END
Input_expression ist ein beliebiger gültiger SQL Server-Ausdruck oder boolescher Ausdruck.
When_expression ist ein beliebiger gültiger SQL Server-Ausdruck oder boolescher Ausdruck. Dieser Ausdruck wird mit Input_expression verglichen. Wenn Input_expression nicht definiert ist, sollte When_expression ein boolescher Ausdruck sein.
Ergebnisausdruck ist ein beliebiger gültiger SQL Server-Ausdruck. Wenn der Vergleich von When_expression und Input_expression TRUE zurückgibt (sofern Input_expression definiert ist) oder When_expression als TRUE ausgewertet wird, wird der Ausdruck ausgewertet und sein Ergebnis zurückgegeben. Andernfalls wird der Ausdruck in Else_expression ausgewertet und sein Ergebnis zurückgegeben.
Zum Beispiel:
SELECT au_fname,au_lname,
State=CASE state
WHEN 'CA' THEN 'California'
WHEN 'KS' THEN 'Kansas'
END
VON Autoren
UNION
Die UNION-Anweisung kombiniert die Ergebnisse von zwei oder mehr Abfragen zu einem Ergebnissatz.
Die Syntax lautet wie folgt: SELECT
FROM
WHERE
UNION [ALL]
SELECT
FROM < ;table_list>
WHERE
Das Schlüsselwort ALL gibt an, dass doppelte Daten auch in den endgültigen Ergebnisdatensatz einbezogen werden. Bei Bedarf kann eine Abfrage viele UNION-Anweisungen enthalten. Alle Select_lists sollten die gleiche Anzahl von Spalten haben und vom gleichen oder einem kompatiblen Datentyp sein.
Go-Befehl Der Go-Befehl wird verwendet, um das Ende eines Abfragestapels zu markieren. Ein Abfragebatch ist eine Sammlung von TSQL-Anweisungen, die zusammen ausgeführt werden. Go funktioniert mit Osql oder SQL Server Query Analyzer.
Das Obige ist der Inhalt von „Erste Schritte mit SQL Server 7.0“ (Teil 3). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).