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_exp où float_exp représente un angle exprimé en radians. |
TAN (float_exp) | Renvoie la tangente de la valeur float_exp où float_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 :
Nom | Business_Phone | Cell_Phone | Home_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 :
Nom | Contact_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 :
Emplacement | Ventes | Forecast |
---|---|---|
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 :
Emplacement | Ré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.
Vous avez un commentaire à formuler concernant cette rubrique ?