Géodatabases fichier - Référence SQL

Vous pouvez utiliser des requêtes SQL pour accéder aux données d’une géodatabase fichier et les analyser.

Vous trouverez dans les sections suivantes des descriptions, ainsi que des exemples d’expressions, de fonctions, d’opérateurs, de mots-clés et de clauses SQL, qu’il est possible d’utiliser pour interroger des tables, classes d’entités et vues dans des géodatabases fichier.

Alias

Vous pouvez utiliser le mot-clé AS afin de spécifier un alias pour un nom de champ, un nom de table ou les valeurs renvoyées par la requête SQL. Vous obtenez ainsi une sortie plus lisible.

Dans l’exemple suivant de l’utilisation du mot-clé AS, les résultats de la soustraction des valeurs indiquées dans la colonne POP1990 des valeurs indiquées dans la colonne POP1997 sont renvoyés sous l’alias PopChange.

SELECT COUNTY_NAME, POP1997 - POP1990 AS PopChange
 FROM counties
 ORDER BY COUNTY_NAME

Expressions CASE

Une expression CASE évalue une liste d’expressions conditionnelles spécifiées et renvoie des résultats en fonction de ces expressions.

L’instruction suivante inclut un ensemble de conditions dans une expression CASE qui renvoie les mots « low », « average » ou « high » selon les valeurs de salaire.

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

Fonctions

Vous trouverez ci-après une liste des fonctions prises en charge par les géodatabases fichier.

Fonctions de date

Les fonctions de date renvoient des valeurs d’heure et de date.

CURRENT_DATE

Renvoie la date actuelle fournie par le système d’exploitation de la machine sur laquelle vous exécutez la requête SQL.

EXTRACT (extract_field FROM extract_source)

Renvoie la partie de l’expression de type date-heure (correspondant à extract_source) en fonction du mot-clé spécifié pour l’argument extract_field.

L’argument extract_field peut correspondre à l’un des mots-clés suivants : YEAR, MONTH, DAY, HOUR, MINUTE ou SECOND.

CURRENT TIME

Renvoie l’heure actuelle fournie par le système d’exploitation de la machine sur laquelle vous exécutez la requête SQL.

CURRENT_TIMESTAMP

Renvoie l’heure et la date actuelles fournies par le système d’exploitation de la machine sur laquelle vous exécutez la requête SQL.

Fonctions numériques

Les fonctions numériques exécutent des opérations sur des valeurs numériques. Toutes les fonctions numériques renvoient une valeur numérique.

Les arguments signalés par numeric_exp, float_exp ou integer_exp peuvent représenter le nom d’une colonne, le résultat d’une autre fonction scalaire ou un littéral numérique, dont le type de données sous-jacent peut être représenté par un type numérique.

ABS (numeric_exp)

Renvoie la valeur absolue du nombre correspondant à l’argument numeric_exp.

ACOS (float_exp)

Renvoie la valeur de l’arc cosinus du nombre correspondant à l’argument float_exp. La valeur renvoyée est un angle exprimé en radians.

ASIN (float_exp)

Renvoie la valeur de l’arc sinus du nombre correspondant à l’argument float_exp. La valeur renvoyée est un angle exprimé en radians.

ATAN (float_exp)

Renvoie la valeur de l’arc tangente du nombre correspondant à l’argument float_exp. La valeur renvoyée est un angle exprimé en radians.

CEILING (numeric_exp)

Renvoie le plus petit nombre entier supérieur ou égal à la valeur correspondant à l’argument numeric_exp.

COS (float_exp)

Renvoie la valeur du cosinus de l’angle (en radians) correspondant à l’argument float_exp.

FLOOR (numeric_exp)

Renvoie le plus grand nombre entier inférieur ou égal au nombre correspondant à l’argument numeric_exp.

LOG (float_exp)

Renvoie le logarithme naturel de la valeur correspondant à l’argument float_exp.

LOG10 (float_exp)

Renvoie le logarithme de base 10 de la valeur correspondant à l’argument float_exp.

MOD (integer_exp1, integer_exp2)

Divise la valeur integer_exp1 par la valeur integer_exp2 et renvoie le quotient.

POWER (numeric_exp, integer_exp)

Renvoie la valeur de numeric_exp à la puissance integer_exp.

ROUND (numeric_exp, integer_exp)

Renvoie la valeur numeric_exp arrondie au nombre de positions à droite de la virgule correspondant à l’argument integer_exp.

Si la valeur correspondant à integer_exp est négative, la valeur numeric_exp est arrondie à |integer_exp| positions à gauche de la virgule.

SIGN (numeric_exp)

Renvoie un indicateur du signe (négatif, positif ou nul) de la valeur correspondant à l’argument numeric_exp.

Si la valeur numeric_exp est inférieure à zéro, la valeur -1 est renvoyée. Si la valeur numeric_exp est égale à zéro, la valeur 0 est renvoyée. Si la valeur numeric_exp est supérieure à zéro, la valeur 1 est renvoyée.

SIN (float_exp)

Renvoie le sinus de la valeur float_expfloat_exp représente un angle exprimé en radians.

TAN (float_exp)

Renvoie la tangente de la valeur float_expfloat_exp représente un angle exprimé en radians.

TRUNCATE (numeric_exp, integer_exp)

Renvoie la valeur numeric_exp tronquée au nombre de positions à droite de la virgule correspondant à l’argument integer_exp. Si la valeur integer_exp est négative, la valeur numeric_exp est tronquée à |integer_exp| positions à gauche de la virgule.

Fonctions de chaîne

Les fonctions de chaîne exécutent des opérations sur des valeurs de chaîne (caractères de texte).

Les arguments signalés par string_exp peuvent représenter le nom d’une colonne, un littéral de chaîne de caractères ou le résultat d’une autre fonction scalaire, dont le type de données sous-jacent peut être représenté par un type de caractère.

Les arguments signalés par character_exp représentent des chaînes de caractères à longueur variable.

Les arguments signalés par start ou length peuvent représenter un littéral numérique ou le résultat d’une autre fonction scalaire, dont le type de données sous-jacent peut être représenté par un type numérique.

Ces fonctions de chaîne sont de base 1, c'est-à-dire que le premier caractère de la chaîne représente la valeur 1.

CHAR_LENGTH (string_exp)

Renvoie la longueur, en caractères, de l’expression de chaîne.

CONCAT (string_exp1, string_exp2)

Renvoie une chaîne de caractères comme résultat de la concaténation du texte de string_exp2 avec le texte de string_exp1.

LOWER (string_exp)

Renvoie une chaîne identique à celle de l’argument string_exp, avec conversion de toutes les majuscules en minuscules.

POSITION (character_exp IN character_exp)

Renvoie la position de la première expression de caractères dans la seconde expression de caractères. Le résultat se présente sous la forme d’une valeur numérique exacte avec une précision définie au niveau de l’implémentation et une échelle de zéro.

SUBSTRING (string_exp FROM start FOR length)

Renvoie une chaîne de caractères dérivée du texte représenté par l’argument string_exp, qui commence à la position de caractère spécifiée par l’argument start et qui se compose du nombre de caractères spécifié pour l’argument length.

TRIM (BOTH | LEADING | TRAILING trim_character FROM string_exp)

Renvoie le texte spécifié pour l’argument string_exp, dont le caractère spécifié par l’argument trim_character a été supprimé du début, de la fin ou des deux extrémités de la chaîne.

UPPER (string_exp)

Renvoie une chaîne identique à celle de l’argument string_exp, avec conversion de toutes les minuscules en majuscules.

Fonctions agrégées

Utilisez une fonction d’agrégation pour effectuer un calcul sur un ensemble de valeurs donné, et ainsi renvoyer une seule valeur comme résultat de ce calcul.

AVG

Calcule la moyenne de toutes les valeurs de l’ensemble. Les valeurs Null sont ignorées.

COUNT(*), COUNT(expression)

COUNT(*) renvoie le nombre d’enregistrements contenus dans une table. Les valeurs Null sont incluses. COUNT(expression) renvoie le nombre de valeurs contenues dans l’expression spécifiée. Les valeurs Null sont ignorées.

MAX

Renvoie la valeur maximale de l’ensemble. Les valeurs Null sont ignorées.

MIN

Renvoie la valeur minimale de l’ensemble. Les valeurs Null sont ignorées.

STDDEV, STDDEV_SAMP

Renvoie l'écart type de l'échantillon de l'expression.

STDDEV_POP

Renvoie l'écart type de la population de l'expression.

SUM

Additionne les valeurs contenues dans l’ensemble et renvoie la somme obtenue. Les valeurs Null sont ignorées.

VAR, VAR_SAMP

Renvoie la variance de l'échantillon de l'expression.

VAR_POP

Renvoie la variance de la population de l'expression.

COALESCE

La fonction COALESCE renvoie la première valeur de champ non Null parmi ses arguments.

SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
 FROM Contact_Info

Voici un échantillon d’enregistrements qui provient de la table Contact_Phone de la géodatabase :

NomBusiness_PhoneCell_PhoneHome_Phone

Jeff

531-2531

622-7813

565-9901

Laura

NULL

772-5588

312-4088

Peter

NULL

NULL

594-7477

L’inclusion de la fonction COALESCE dans l’expression donne la sortie suivante :

NomContact_Phone

Jeff

531-2531

Laura

772-5588

Peter

594-7477

NULLIF

La fonction NULLIF renvoie la valeur NULL si les deux paramètres fournis sont égaux ; sinon, la valeur du premier paramètre est renvoyée.

SELECT Location, NULLIF(Sales, Forecast) AS Results
 FROM StoreSales

Voici un exemple de valeurs des champs location (emplacement), sales (ventes) et forecast (prévision) de la table StoreSales :

EmplacementVentesForecast

Redlands

39 000

55 000

Palm Springs

60 000

61 000

Riverside

40 000

40 000

L’exécution de l’expression avec une fonction NULLIF sur la table StoreSales renvoie les résultats suivants :

EmplacementRésultats

Redlands

39 000

Palm Springs

60 000

Riverside

NULL

Clauses

Les clauses fonctionnent comme des filtres qui permettent de restreindre, d’organiser ou de modifier les résultats d’une expression de requête.

GROUP BY

La clause GROUP BY permet de collecter des données sur plusieurs enregistrements et de grouper les résultats selon une ou plusieurs colonnes.

L’instruction suivante synthétise (additionne) toutes les valeurs du champ POP1990 de la table counties (comtés) et groupe les valeurs par État. Les valeurs sont également renvoyées dans l’ordre alphabétique croissant par nom d’État.

SELECT state_name, SUM(POP1990) AS TotalPopulation
 FROM counties
 GROUP BY STATE_NAME
 ORDER BY STATE_NAME

Les clauses GROUP BY peuvent inclure des fonctions d’agrégation telles que MIN, MAX et SUM.

HAVING

Utilisez la clause HAVING avec des fonctions d’agrégation à la place d’une clause WHERE.

Dans l’exemple suivant, la fonction d’agrégation MAX est utilisée pour renvoyer le salaire le plus élevé stocké dans la table employees (employés). La clause HAVING limite cette valeur à la valeur maximale inférieure à 50 000.

SELECT department, MAX(salary) AS Highest_salary
 FROM employees
 GROUP BY department HAVING MAX(salary) < 50000

Clauses JOIN

Les clauses JOIN renvoient les enregistrements combinés d’au moins deux tables.

CROSS JOIN

L’exemple suivant renvoie chaque ligne de la table1 mise en correspondance avec chaque ligne de la table2, et chaque ligne de la table2 mise en correspondance avec chaque ligne de la table1. Si la table1 contient 100 lignes et la table2 en contient 1 000, 100 000 lignes sont renvoyées. Ce type de jointure doit être utilisé avec discernement sachant que le nombre de lignes renvoyées augmentera rapidement.

SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
 FROM Table1
  CROSS JOIN Table2

INNER JOIN

L’instruction suivante renvoie les lignes des deux tables en cas de correspondance des valeurs de clé (Table1.C1, Table2.C3). Aucune autre ligne ne sera renvoyée de l’une ou l’autre des tables.

SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4
 FROM Table1
  INNER JOIN Table2 ON Table1.C1 = Table2.C3

LEFT OUTER JOIN

L’instruction suivante renvoie toutes les lignes de la table de gauche (Table1) et uniquement les lignes de la table de droite (Table2) en cas de correspondance des valeurs de clé (Table1.C1, Table2.C3).

SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4
 FROM Table1
  LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3

RIGHT OUTER JOIN

Cette instruction renvoie toutes les lignes de la table de droite (Table2) et uniquement les lignes de la table de gauche (Table1) en cas de correspondance des valeurs de clé (Table1.C1, Table2.C3).

SELECT * FROM Table1
 RIGHT OUTER JOIN Table2 ON Table1.C1 = Table2.C3

ORDER BY

La clause ORDER BY spécifie l’ordre de tri. L’ordre peut être croissant (ASC) ou décroissant (DESC). Par défaut, les valeurs sont triées par ordre croissant.

Vous pouvez également spécifier un regroupement lorsque vous utilisez la clause ORDER BY. Les arguments de type de regroupement sont les suivants :

  • BINARY(BIN) - Le regroupement de type binaire est à la fois sensible à la casse et aux accents. Lorsque vous utilisez cet argument de regroupement, dans le cas du tri par ordre croissant, les lettres minuscules sont triées devant leurs versions majuscules et les accents sont triés devant les lettres. Vous pouvez spécifier BINARY ou BIN dans la requête.
  • CASESENSITIVE(CASE) - Un regroupement sensible à la casse fait la distinction entre les majuscules et les minuscules. Lorsque vous utilisez cet argument de regroupement, les lettres minuscules sont triées devant leurs versions majuscules. Vous pouvez spécifier CASESENSITIVE ou CASE dans la requête.
  • NOCASESENSITIVE(NOCASE) - L’argument NOCASE ne fait pas la distinction entre les majuscules et les minuscules, ce qui signifie que l’ordre de tri ne tient pas compte de la casse. Vous pouvez spécifier NOCASESENSITIVE ou NOCASE dans la requête.

Remarque :

Vous ne pouvez pas utiliser une clause ORDER BY lors de la définition d’une vue.

Voici des exemples d’utilisation de la clause ORDER BY :

Les valeurs seront renvoyées dans l’ordre alphabétique croissant par nom d’État.

SELECT STATE_NAME, POP1990
 FROM counties
 ORDER BY STATE_NAME

Les valeurs seront renvoyées dans l’ordre alphabétique décroissant par nom d’État, avec les noms en majuscules en premier.

SELECT STATE_NAME, POP1990
 FROM counties
 ORDER BY STATE_NAME
 COLLATE CASE DESC

Opérateurs

Les opérateurs suivants sont pris en charge par les géodatabases fichier.

Opérateurs arithmétiques

Utilisez un opérateur arithmétique pour additionner, soustraire, multiplier et diviser des valeurs numériques.

*

Opérateur arithmétique pour la multiplication

/

Opérateur arithmétique pour la division

+

Opérateur arithmétique pour l’addition

-

Opérateur arithmétique pour la soustraction

SIMILAR TO

SIMILAR TO est un opérateur de comparaison qui évalue les valeurs de chaîne et renvoie true ou false.

L’exemple de requête suivant évalue les valeurs du champ state_name et renvoie true si le mot North apparaît au début de valeurs de ce champ ou renvoie false si aucune valeur du champ state_name ne commence par le mot North.

SELECT state_name
 FROM counties
 WHERE state_name SIMILAR TO 'North%'
Remarque :

Les valeurs qui commencent par le mot north (avec un n minuscule) renverrontfalse pour l’exemple ci-dessus, car la comparaison de chaînes est sensible à la casse.