SQL-Referenz für File-Geodatabases

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:

NameBusiness_PhoneCell_PhoneHome_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:

NameContact_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":

LocationSalesForecast

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:

LocationResults

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.