Mithilfe von SQL-Abfragen können Sie auf Daten in einer File-Geodatabase zugreifen oder diese analysieren.
Die folgenden Abschnitte enthalten Beschreibungen und Beispiele für SQL-Ausdrücke, Funktionen, Operatoren, Schlüsselwörter und Klauseln, die zum Abfragen von Tabellen, Feature-Classes und Sichten in File-Geodatabases verwendet werden können.
Alias
Mit dem Schlüsselwort AS können Sie einen Alias für einen Feld- bzw. Tabellennamen oder die durch die SQL-Abfrage zurückgegebenen Werte angeben. Dadurch entsteht eine verständlichere Ausgabe.
Im folgenden Beispiel für die Verwendung des Schlüsselwortes AS werden die Ergebnisse der Subtraktion der Werte in der Spalte "POP1990" von den Werten in der Spalte "POP1997" unter dem Alias "PopChange" zurückgegeben.
SELECT COUNTY_NAME, POP1997 - POP1990 AS PopChange
FROM counties
ORDER BY COUNTY_NAME
CASE-Ausdrücke
Ein CASE-Ausdruck wertet eine Liste bestimmter Bedingungsausdrücke aus und gibt Ergebnisse basierend auf diesen Ausdrücken zurück.
Die folgende Anweisung enthält die Bedingungen in einem CASE-Ausdruck, der in Abhängigkeit von den Werten für das Gehalt ("salary") eines der Wörter "low", "average" und "high" zurückgibt.
SELECT name,salary,
CASE
WHEN salary <= 2000 THEN 'low'
WHEN salary > 2000 AND salary <= 3000 THEN 'average'
WHEN salary > 3000 THEN 'high'
END AS salary_level
FROM employees
Funktionen
Die folgende Liste enthält Funktionen, die von File-Geodatabases unterstützt werden.
Datumsfunktionen
Datumsfunktionen geben Datums- und Uhrzeitwerte zurück.
CURRENT_DATE | Gibt das aktuelle Datum zurück, das durch das Betriebssystem des Computers, auf dem Sie die SQL-Abfrage ausführen, bereitgestellt wird. |
EXTRACT (extract_field FROM extract_source) | Gibt den Teil des Datums-/Uhrzeitausdrucks (der mit extract_source bezeichnet ist) basierend auf dem Schlüsselwort, das für das Argument extract_field angegeben ist, zurück. Das Argument extract_field kann eines der folgenden Schlüsselwörter sein: YEAR, MONTH, DAY, HOUR, MINUTE oderSECOND. |
CURRENT TIME | Gibt die aktuelle Uhrzeit zurück, die durch das Betriebssystem des Computers, auf dem Sie die SQL-Abfrage ausführen, bereitgestellt wird. |
CURRENT_TIMESTAMP | Gibt das aktuelle Datum mit Uhrzeit zurück, das durch das Betriebssystem des Computers, auf dem Sie die SQL-Abfrage ausführen, bereitgestellt wird. |
Numerische Funktionen
Numerische Funktionen führen Operationen an numerischen Werten aus. Bei allen Zahlenfunktionen wird ein numerischer Wert zurückgegeben.
Bei den Argumenten, die als numeric_exp, float_exp oder integer_exp aufgeführt sind, kann es sich um den Namen einer Spalte, das Ergebnis einer anderen Skalarfunktion oder ein numerisches Literal handeln, wobei der zugrunde liegende Datentyp als numerischer Typ dargestellt werden kann.
ABS (numeric_exp) | Gibt den absoluten Wert der Zahl zurück, die mit dem Argument numeric_exp bezeichnet ist. |
ACOS (float_exp) | Gibt den Arkuskosinus-Wert der Zahl zurück, die mit dem Argument float_exp bezeichnet ist. Der zurückgegebene Wert ist ein in Radiant ausgedrückter Winkel. |
ASIN (float_exp) | Gibt den Arkussinus-Wert der Zahl zurück, die mit dem Argument float_exp bezeichnet ist. Der zurückgegebene Wert ist ein in Radiant ausgedrückter Winkel. |
ATAN (float_exp) | Gibt den Arkustangens-Wert der Zahl zurück, die mit dem Argument float_exp bezeichnet ist. Der zurückgegebene Wert ist ein in Radiant ausgedrückter Winkel. |
CEILING (numeric_exp) | Gibt die kleinste ganze Zahl zurück, die größer als oder gleich dem Wert ist, der im Argument numeric_exp bezeichnet ist. |
COS (float_exp) | Gibt den Kosinus-Wert des Winkels (in Radiant) zurück, der im Argument float_exp bezeichnet ist. |
FLOOR (numeric_exp) | Gibt die größte ganze Zahl zurück, die kleiner als oder gleich der Zahl ist, die im Argument numeric_exp bezeichnet ist. |
LOG (float_exp) | Gibt den natürlichen Logarithmus des Wertes zurück, der im Argument float_exp bezeichnet ist. |
LOG10 (float_exp) | Gibt den Logarithmus zur Basis 10 des Wertes zurück, der im Argument float_exp bezeichnet ist. |
MOD (integer_exp1, integer_exp2) | Dividiert den Wert von integer_exp1 durch den Wert von integer_exp2 und gibt den Rest zurück. |
POWER (numeric_exp, integer_exp) | Gibt den Wert von numeric_exp potenziert mit integer_exp zurück. |
ROUND (numeric_exp, integer_exp) | Gibt den Wert von numeric_exp auf die im Argument integer_exp angegebene Anzahl der Stellen rechts neben dem Dezimaltrennzeichen aufgerundet zurück. Wenn der mit integer_exp angegebene Wert negativ ist, wird der Wert von numeric_exp auf |integer_exp| Stellen links neben dem Dezimaltrennzeichen gerundet. |
SIGN (numeric_exp) | Gibt einen Indikator des Vorzeichens (negativ, positiv oder Null) des Wertes zurück, der im Argument numeric_exp bezeichnet ist. Wenn der Wert von numeric_exp kleiner als Null ist, wird "-1" zurückgegeben. Wenn der Wert von numeric_exp gleich Null ist, wird "0" zurückgegeben. Wenn der Wert von numeric_exp größer als Null ist, wird "1" zurückgegeben. |
SIN (float_exp) | Gibt den Sinus des Wertes von float_exp zurück, wobei float_exp ein in Radiant ausgedrückter Winkel ist. |
TAN (float_exp) | Gibt den Tangens des Wertes von float_exp zurück, wobei float_exp ein in Radiant ausgedrückter Winkel ist. |
TRUNCATE (numeric_exp, integer_exp) | Gibt den Wert von numeric_exp auf die im Argument integer_exp angegebene Anzahl der Stellen rechts neben dem Dezimaltrennzeichen abgeschnitten zurück. Wenn der Wert von integer_exp negativ ist, wird der Wert von numeric_exp auf |integer_exp| Stellen links neben dem Dezimaltrennzeichen abgeschnitten. |
Zeichenfolgenfunktion
Zeichenfolgenfunktionen führen Operationen an Zeichenfolgenwerten (Textzeichen) aus.
Bei den Argumenten, die als string_exp aufgeführt sind, kann es sich um den Namen einer Spalte, ein Zeichenfolgenliteral oder das Ergebnis einer anderen Skalarfunktion handeln, wobei der zugrunde liegende Datentyp als Zeichentyp dargestellt werden kann.
Bei Argumenten, die als character_exp aufgeführt sind, handelt es sich um Zeichenfolgen mit variabler Länge.
Bei Argumenten, die als start oder length aufgeführt sind, kann es sich um ein numerisches Literal oder das Ergebnis einer anderen Skalarfunktion handeln, wobei der zugrunde liegende Datentyp als numerischer Typ dargestellt werden kann.
Diese Zeichenfolge-Funktionen basieren auf 1, d. h. beim ersten Zeichen der Zeichenfolge handelt es sich um das Zeichen 1.
CHAR_LENGTH (string_exp) | Gibt die Länge des String-Ausdrucks in Zeichen zurück. |
CONCAT (string_exp1, string_exp2) | Gibt eine Zeichenfolge zurück, die sich aus der Verkettung des Textes in string_exp2 mit dem Text in string_exp1 ergibt. |
LOWER (string_exp) | Gibt eine Zeichenfolge zurück, die mit der im Argument string_exp identisch ist und in der alle Großbuchstaben in Kleinbuchstaben konvertiert wurden. |
POSITION (character_exp IN character_exp) | Gibt die Position des ersten Zeichenausdrucks im zweiten Zeichenausdruck zurück. Das Ergebnis ist eine genaue Zahl mit einer implementationsdefinierten Genauigkeit und der Anzahl der Dezimalstellen von 0. |
SUBSTRING (string_exp FROM start FOR length) | Gibt eine Zeichenfolge zurück, die aus dem Text im Argument string_exp abgeleitet wurde, indem ab der durch das Argument start angegebenen Zeichenposition die aufeinander folgenden Zeichen, deren Anzahl im Argument length angegeben ist, extrahiert werden. |
TRIM (BOTH | LEADING | TRAILING trim_character FROM string_exp) | Gibt den im Argument string_exp angegebenen Text zurück, nachdem das im Argument trim_character angegebene Zeichen am führenden Ende, am nachstehenden Ende oder an beiden Enden der Zeichenfolge entfernt wurde. |
UPPER (string_exp) | Gibt eine Zeichenfolge zurück, die mit der im Argument string_exp identisch ist und in der alle Kleinbuchstaben in Großbuchstaben konvertiert wurden. |
Aggregatfunktionen
Verwenden Sie eine Aggregatfunktion zum Durchführen einer Berechnung an einer Gruppe bestimmter Werte, wenn als Ergebnis dieser Berechnung ein einzelner Wert zurückgegeben werden soll.
AVG | Berechnet den Durchschnitt aller Werte in der Gruppe. NULL-Werte werden ignoriert. |
COUNT(*), COUNT(expression) | COUNT(*) gibt die Anzahl der Datensätze in einer Tabelle zurück. NULL-Werte werden berücksichtigt. COUNT(expression) gibt die Anzahl der Werte im angegebenen Ausdruck zurück. NULL-Werte werden ignoriert. |
MAX | Gibt den Maximalwert in der Gruppe zurück. NULL-Werte werden ignoriert. |
MIN | Gibt den Minimalwert in der Gruppe zurück. NULL-Werte werden ignoriert. |
STDDEV, STDDEV_SAMP | Gibt die Stichprobenstandardabweichung des Ausdrucks zurück. |
STDDEV_POP | Gibt die Populationsstandardabweichung des Ausdrucks zurück. |
SUM | Addiert die Werte in der Gruppe und gibt diese Summe als Ergebnis zurück. NULL-Werte werden ignoriert. |
VAR, VAR_SAMP | Gibt die Stichprobenvarianz des Ausdrucks zurück. |
VAR_POP | Gibt die Populationsvarianz des Ausdrucks zurück. |
COALESCE
Die Funktion COALESCE gibt den ersten Nicht-NULL-Feldwert unter den Argumenten zurück.
SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
FROM Contact_Info
Das folgende Beispiel zeigt Datensätze aus der Tabelle "Contact_Phone" in der Geodatabase:
Name | Business_Phone | Cell_Phone | Home_Phone |
---|---|---|---|
Jeff | 531-2531 | 622-7813 | 565-9901 |
Laura | NULL | 772-5588 | 312-4088 |
Peter | NULL | NULL | 594-7477 |
Mit der Funktion COALESCE im Ausdruck entsteht die folgende Ausgabe:
Name | Contact_Phone |
---|---|
Jeff | 531-2531 |
Laura | 772-5588 |
Peter | 594-7477 |
NULLIF
Die Funktion NULLIF gibt NULL zurück, wenn die zwei angegebenen Parameter gleich sind. Andernfalls wird der Wert des ersten Parameters zurückgegeben.
SELECT Location, NULLIF(Sales, Forecast) AS Results
FROM StoreSales
Das folgende Beispiel zeigt Werte in den Feldern "Location", "Sales" und "Forecast" der Tabelle "StoreSales":
Location | Sales | Forecast |
---|---|---|
Redlands | 39000 | 55000 |
Palm Springs | 60000 | 61000 |
Riverside | 40000 | 40000 |
Bei Ausführung des Ausdrucks mit der Funktion NULLIF an der Tabelle "StoreSales" werden die folgenden Ergebnisse zurückgegeben:
Location | Results |
---|---|
Redlands | 39000 |
Palm Springs | 60000 |
Riverside | NULL |
Klauseln
Klauseln wirken als Filter, die die Ergebnisse eines Abfrageausdrucks beschränken, ordnen oder ändern.
GROUP BY
Die GROUP BY-Klausel wird zum Sammeln von Daten aus mehreren Datensätzen und Gruppieren der Ergebnisse nach einer oder mehreren Spalten verwendet.
Mit der folgenden Anweisung werden alle Werte im Feld "POP1990" in der Tabelle der Countys zusammengefasst (addiert) und die Werte nach Bundesstaat gruppiert: Die Werte werden auch in aufsteigender alphabetischer Reihenfolge nach Name des Bundesstaates zurückgegeben.
SELECT state_name, SUM(POP1990) AS TotalPopulation
FROM counties
GROUP BY STATE_NAME
ORDER BY STATE_NAME
GROUP BY-Klauseln können Aggregationsfunktionen, wie zum Beispiel MIN, MAX und SUM, enthalten.
HAVING
Verwenden Sie die HAVING-Klausel mit Aggregationsfunktionen anstelle einer WHERE-Klausel.
Im folgenden Beispiel wird die Aggregationsfunktion MAX verwendet, um das höchste Gehalt, das in der Tabelle der Mitarbeiter gespeichert ist, zurückzugeben. Die HAVING-Klausel beschränkt diesen Wert auf den Maximalwert unter 50000.
SELECT department, MAX(salary) AS Highest_salary
FROM employees
GROUP BY department HAVING MAX(salary) < 50000
JOIN-Klauseln
JOIN-Klauseln geben die kombinierten Datensätze aus zwei oder mehr Tabellen zurück.
CROSS JOIN
Im folgenden Beispiel werden Paare aus jeder Zeile in Tabelle 1 mit jeder Zeile in Tabelle 2 und aus jeder Zeile in Tabelle 2 mit jeder Zeile in Tabelle 1 zurückgegeben. Wenn Tabelle 1 100 Zeilen und Tabelle 2 1000 Zeilen enthält, werden 100000 Zeilen zurückgegeben. Verbindungen dieses Typs sollten mit Vorsicht verwendet werden, da die Anzahl der zurückgegebenen Zeilen sehr schnell sehr groß werden kann.
SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
FROM Table1
CROSS JOIN Table2
INNER JOIN
Bei der folgenden Anweisung werden die Zeilen aus beiden Tabellen zurückgegeben, wenn die Schlüsselwerte (Table1.C1, Table2.C3) übereinstimmen. In diesem Fall werden keine anderen Zeilen aus einer der Tabellen zurückgegeben.
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4
FROM Table1
INNER JOIN Table2 ON Table1.C1 = Table2.C3
LEFT OUTER JOIN
Bei der folgenden Anweisung werden alle Zeilen aus der linken Tabelle (Table1) und nur die Zeilen aus der rechten Tabelle (Table2), wenn die Schlüsselwerte (Table1.C1, Table2.C3) übereinstimmen, zurückgegeben.
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4
FROM Table1
LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
RIGHT OUTER JOIN
Bei dieser Anweisung werden alle Zeilen aus der rechten Tabelle (Table2) und nur die Zeilen aus der linken Tabelle (Table1), wenn die Schlüsselwerte (Table1.C1, Table2.C3) übereinstimmen, zurückgegeben.
SELECT * FROM Table1
RIGHT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
ORDER BY
Die ORDER BY-Klausel gibt die Sortierreihenfolge an. Die Sortierung kann in aufsteigender (ASC) oder absteigender (DESC) Reihenfolge erfolgen. Standardmäßig werden die Werte in aufsteigender Reihenfolge sortiert.
Wenn Sie die ORDER BY-Klausel verwenden, dann können Sie auch eine Sortierung angeben. Für den Typ der Sortierung können die folgenden Argumente verwendet werden:
- BINARY(BIN): Bei der BINARY-Sortierung werden sowohl die Groß- und Kleinschreibung als auch Zeichen mit Akzenten berücksichtigt. Wenn Sie für die Sortierung dieses Argument verwenden, dann stehen in der Sortierung in aufsteigender Reihenfolge die Kleinbuchstaben vor ihren Versionen in Großschreibung und die Akzente vor den Buchstaben. Sie können entweder BINARY oder BIN in der Abfrage angeben.
- CASESENSITIVE(CASE): Bei einer Sortierung mit Beachtung der Groß-/Kleinschreibung wird zwischen Groß- und Kleinbuchstaben unterschieden. Wenn Sie für die Sortierung dieses Argument verwenden, dann stehen in der Sortierung die Kleinbuchstaben vor ihren Versionen in Großschreibung. Sie können entweder CASESENSITIVE oder CASE in der Abfrage angeben.
- NOCASESENSITIVE(NOCASE): Da das Argument NOCASE nicht zwischen Groß- und Kleinbuchstaben unterscheidet, wird dieser Fall in der Sortierreihenfolge ignoriert. Sie können entweder NOCASESENSITIVE oder NOCASE in der Abfrage angeben.
Hinweis:
Beim Definieren einer Ansicht können Sie keine ORDER BY-Klausel verwenden.
Die folgenden Beispiele zeigen die Verwendung der ORDER BY-Klausel:
Die Werte werden in aufsteigender alphabetischer Reihenfolge nach Name des Bundesstaates zurückgegeben.
SELECT STATE_NAME, POP1990
FROM counties
ORDER BY STATE_NAME
Die Werte werden in absteigender alphabetischer Reihenfolge nach Name des Bundesstaates zurückgegeben, wobei die Namen in Großschreibung zuerst zurückgegeben werden.
SELECT STATE_NAME, POP1990
FROM counties
ORDER BY STATE_NAME
COLLATE CASE DESC
Operatoren
In File-Geodatabases werden die folgenden Operatoren unterstützt.
Arithmetische Operatoren
Verwenden Sie einen arithmetischen Operator zum Addieren, Subtrahieren, Multiplizieren und Dividieren von numerischen Werten.
* | Arithmetischer Operator für die Multiplikation |
/ | Arithmetischer Operator für die Division |
+ | Arithmetischer Operator für die Addition |
- | Arithmetischer Operator für die Subtraktion |
SIMILAR TO
SIMILAR TO ist ein Vergleichsoperator, der Zeichenfolgenwerte auswertet und "true" oder "false" zurückgibt.
Die Abfrage im folgenden Beispiel wertet die Werte im Feld "state_name" aus und gibt true zurück, wenn einer der Werte in diesem Feld mit dem Wort "North" beginnt, oder gibt false zurück, wenn kein Wert im Feld "state_name" mit dem Wort "North" beginnt.
SELECT state_name
FROM counties
WHERE state_name SIMILAR TO 'North%'
Hinweis:
Bei Werten, die mit dem Wort "North" beginnen, wird im obigen Beispiel das Ergebnis false zurückgegeben, da beim Zeichenfolgenvergleich die Groß-/Kleinschreibung beachtet werden muss.