Vous êtes sur la page 1sur 55

SQL sous MapInfo

Rappel:
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Rappel concernant les données d’un SIG:


Deux modes de données : raster et vecteur
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Rappel concernant les données d’un SIG:


Deux modes de données : raster et vecteur

Données spatiale: en Données associées ou


utilisant des objets attributaires: elles permettent de
géométrique (point, compléter la représentation
ligne, polygones) par géométrique de l’entité
rapport un système de spatiale=une sorte d’étiquette
coordonnées caractérisant le point, la ligne ou
le polygone.
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Rappel concernant les données d’un SIG:


Deux modes de données : raster et vecteur
Exemple: Données spatiales
Position exprimée par
des Coordonnées
Objet géographiques
(36.7763738, 3.2577628)
ENST

Données attributaires
Type= école sup
Liste des formations
Liste des enseignants,
des étudiants,…
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Rappel concernant les données d’un SIG:


Deux modes de données : raster et vecteur
Exemple:
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Rappel concernant les données d’un SIG:


Notion de table

(code, commune, superficie, popu) attributs (colonnes)

Code Commune Superficie Population ….


(01,babez,8km²,…) = 01 Babezzouar 8 Km² ….
enregistrement (ligne) 02 Baraki 26,5 Km² 126 375
03 Kouba 2 Km²
04 El-Harrach 9 Km² 53 869
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Rappel concernant les données d’un SIG:


Notion de multicouches (superposition de plusieurs couches de données)

Données accident
struturées 
SQL

route

Commune

Sous MapInfo,
couche=table
SQL (Structured Query Language)

Requêtes SQL attributaires simples


-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

SQL (Structured Query Language) :


est à la fois:
 Un LDD (Language de Définition de Données)
Créer / modifier / supprimer des tables
 Un LMD (Language de Manipulation de Données)
Sélectionner / insérer / modifier / supprimer données dans
une table
 Un LCD (Language de Contrôle de Données)
Définir des permissions au niveau des utilisateurs
Utilisé dans la plupart des SGBD (Mysql, Oracle, Mircosoft,…)
et dans les SIG tels que MapINFO
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Syntaxe générale d’une requête SQL:

SELECT colonne(s)
FROM table(s)
WHERE condition
GROUP BY colonne(s)
ORDER BY colonne(s);
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Sous MapInfo:
Deux interfaces dédiées :
1- une interface pour la sélection attributaire simple:
La requête de sélection s’exécute sur une seule couche (ou table) et sur un ou plusieurs
attributs de cette couche.
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Sous MapInfo:
Deux interfaces dédiées :
2- une interface pour la sélection
avancée:
La requête de sélection peut
s’exécuter sur une seule
ou plusieurs couches (ou tables)
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Sous MapInfo:
Deux interfaces dédiées :
2- une interface pour la sélection
avancée:
SELECT colonne(s)
FROM table(s)
WHERE condition
GROUP BY colonne(s)
ORDER BY colonne(s);
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


La sélection la plus simple : SELECT * FROM table
=> Sélectionner toutes les colonnes (*) d’une seule table. Sans le « where », la requête
sélectionne aussi toutes les lignes
Exemple:
Select * from communes
FROM: La table (source de données) interrogée. Il faut indiquer au moins une table.
Dans le cas où les informations recherchées existent dans plusieurs tables=> jointures
(nous verrons cela plus loin)
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table
SELECT colonnes FROM table
Select nom, wilaya from communes
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition

Sélection permet d’extraire les lignes d’une


(une ou toutes les base de données qui respectent une
colonnes) condition.

Exemple :
Select * From routesWhere nb_morts>=40
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
Comparateurs arithmétiques:
= != > < >= <=
Sélectionner toutes les communes dont la population est
supérieure à 10000 habitant 
Select * from communes where population > 10000
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
Comparateurs arithmétiques:
= != > < >= <=
Sélectionner toutes les communes dont la population est
supérieure à 10000 habitant 
Select * from communes where population > 10000
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
Comparateurs de chaines de caractères:
Les chaînes de caractères doivent être obligatoirement encadrées par des guillemets.
Sélectionner la commune ZEMMOURI:
Select * from communes where nom_commune="ZEMMOURI"
Sélectionner les communes côtières:
Select * from communes where nature="COMMUNE-COTIERE"
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
Comparateurs de chaines de caractères:
L’opérateur LIKE
Select * from communes where nom_commune LIKE "ZEMMOURI"
Sélectionner les communes côtières:
Select * from communes where nature LIKE "COMMUNE-COTIERE"
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
Comparateurs de chaines de caractères:
L’opérateur LIKE avec le Joker %  % peut remplacer n’importe quel caractère:
LIKE " %ab" une chaine de caractères qui commence avec n’importe quoi et se termine avec ab
LIKE " ab%" une chaine de caractères qui commence avec ab et se termine avec n’importe quoi
LIKE " %ab%" une chaine de caractères qui contient les caractères ab.
LIKE " %nationale%de%" une chaine de caractères qui contient les termes « nationale » et « de »
= école nationale supérieure de technologie,
= école nationale supérieure de tourisme,= équipe nationale de football
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
L’opérateur IN:
Comparer par rapport à une liste de valeur.
Selectionner les communes :
Select * FROM communes where nom_commune IN
("ZEMMOURI", "CORSO","THENIA")
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
Des opérateurs logiques:
AND, OR, NOT,… pour une sélection multicritères:
Quelles sont les communes internes et dont la population dépasse les 8000 habitants ?
Select * from communes where nature like "COMMUNE-INTERNE" and population >
8000
Sélectionner les communes de ZEMMOURI, CORSO,THENIA
Select * from communes where nom_commune like " ZEMMOURI " OR nom_commune like "
CORSO " OR nom_commune like " THENIA"
Quelles sont les communes dont la population dépasse les 7000 ou bien connaissent un
taux d’acrroissement naturel superieur à 1,5
Select * from communes where population > 8000 OR taux_accr > 1,5
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
Des opérateurs logiques:
AND, OR, NOT,…
Quelles sont les communes qui ne sont pas cotieres ?
Select * from communes where nature Not like "commune-
cotiere"
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes
SELECT * FROM table Where Condition
Dans la condition:
L’opérateur BETWEEN….AND ……: pour exprimer un intervalle.
Quelles sont les communes dont la population varie entre 8000 et
10000?
Select * from communes where population between 8000 and 10000
Quels sont les accidents survenus entre la période de 15/01/2015 et
15/02/2015
Select * from accident where date_acc between "15/01/2015" and
"15/02/2015"
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Sélectionner des colonnes spécifiques d’une table avec filtrage sur les lignes et tri des
résultats
SELECT * FROM table Where Condition order by
colonne (ASC | DESC)
(ASC | DESC):
Trier le résultat de la requête :
Liste des communes trié par population dans l’ordre croissant
Select * from commune order by population asc
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Alias, opérations et fonctions sur les colonnes:
Alias: donner un alias à une colonne
Select ref_acc, nbreMortsHom "Homme" from accidents
 Selectionner les colonnes ref_acc, nbreMortsHom tout en
changeant le nom de la colonne nbreMortsHom par HOMME
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Alias, opérations et fonctions sur les colonnes:
Opération arithmétique sur les colonnes
Select ref_acc, nbreMortsHom + nbreMortsFem from accidents
 Sélectionner les colonnes ref_acc, le résultat de l’addition de
nbreMortsHom et nbreMortsFem
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Alias, opérations et fonctions sur les colonnes:
Opération arithmétique sur les colonnes
Select ref_acc, nbreMortsHom + nbreMortsFem "morts" from
accidents
 Sélectionner les colonnes ref_acc, le résultat de l’addition de
nbreMortsHom et nbreMortsFem et le mettre dans une
colonne « morts »
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Alias, opérations et fonctions sur les colonnes:
Fonctions sur les colonnes
Select ref_acc, ref_acc, Month(date_acc) from accidents
 Sélectionner les colonnes ref_acc et le mois de chaque
accident
Select ref_acc, ref_acc, Month(date_acc) "mois" from accidents
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Alias, opérations et fonctions sur les colonnes:
Fonctions sur les colonnes
Select ref_acc, ref_acc, Month(date_acc) from accidents
 Sélectionner les colonnes ref_acc et le mois de chaque
accident
Select ref_acc, ref_acc, Month(date_acc) "mois" from accidents
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Alias, opérations et fonctions sur les colonnes:
Fonctions sur les colonnes ( les objets géographique : point,
ligne, polygone) grâce à la colonne « obj »
Select nom_commune, Area(obj, "sq m") from communes

Area :Une Fonction prenant Obj :la colonne ou l’attribut


deux paramètres = l’objet et géographique ( « cachée dans le tableau
l’unité pour mesurer la des données»)
superficie

ObjectLen(obj, "km") : mesure la


longueur des objets lignes (routes)
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Alias, opérations et fonctions sur les colonnes:
Fonctions sur les colonnes ( les objets géographique : point, ligne,
polygone) grâce à la colonne « obj »
Select nom_commune, population/Area(obj, "sq km") "densite "
from communes
Order by densite DESC
 Sélectionner toutes les noms des communes et en même temps
calculer leurs superficie et leur densité de population en triant le
résultat par la densité (du max au min)
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Agrégation des résultats:
Regrouper les résultats (lignes) à l’aide des fonctions
d’agrégation:
 Avg(Col)Moyenne des valeurs d’une colonne
 Count(*)Compter les enregistrements
 Min(Col)Plus petite valeur d’une colonne
 Max(Col)Plus grande valeur d’une colonne
 Sum(Col)Somme des valeurs d’une colonne
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Agrégation des résultats:
Regrouper les résultats (lignes) à l’aide des fonctions
d’agrégation:
Select nature, Count(*) from communes group by nature

Compter le nombre d’enregistrement


Appartenant à chaque groupe Regrouper les lignes par l’attribut nature

 Regrouper la table commune par nature et compter le


nombre d’occurrence de chaque nature
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Agrégation des résultats:
Regrouper les résultats (lignes) à l’aide des fonctions
d’agrégation:
Quel est le nombre d’enfants morts par jours.
Select date_acc, Sum(nbreMortsEnf) from accident group by
date_acc
Quel le nombre de femmes mortes par route et par jours:
Select date_acc, route, Sum(nbreMortsFem) from accident
group by date_acc, route
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes attributaires simples:


Agrégation des résultats:
Regrouper les résultats (lignes) à l’aide des fonctions
d’agrégation:
Quel est le nombre d’enfants morts par mois durant
l’année 2015.
Select Month(date_acc) "mois" ,Sum(nbreMortsEnf)
from accident where Year(date_acc)=2015
group by mois
SQL (Structured Query Language)

Req SQL complexes (jointure simple & spatiale)


-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


Parfois, les informations recherchées dans une base de données se
trouvent dans deux ou plusieurs tables, exemple :
Lorsque on essaye de répondre à la question :
Y a t-il eu un accident dans une route composée de trois voies de
circulation ?

Quelles sont les communes traversées par la route RN25

-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations sémantiques (synonymie ou équivalence)
Des relations géographiques (basées sur la géométrie)
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations sémantiques (synonymie ou équivalence)
- Exemple:
- La table accident contient la colonne route (qui indique
l’identifiant de la route)
- La table route contient la colonne id_route (qui identifie les
routes)
 Lier (joindre) les deux tables par le biais de ces deux
colonnes
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations sémantiques (synonymie ou équivalence)
Syntaxe:
Select colonne(s)
From table1, table2
Where table1.colonne= table2.colonne
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations sémantiques (synonymie ou équivalence)
Syntaxe (exemple):
Select *
From Accident, Route
Where Accident.route=Route.id_route
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations sémantiques (synonymie ou équivalence)
Avec une condition:
Select *
From Accident, Route
Where Accident.route=Route.id_route
and Route.nb_voies=3
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations sémantiques (synonymie ou équivalence)
Avec une condition:
Select Route.nature_route,Sum(Accident.nbreMortsHom)
From Accident, Route
Where Accident.route=Route.id_route
Group by Route.nature_route
 Nombre de morts (homme) dans des accidents par
rapport à la nature de la route.
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
 Des relations géographiques (basées sur la géométrie):
Étant donné que les tables sous SIG contient souvent l’attribut géographique
(obj), on peut exprimer des relations entre les différentes tables sur la base
de cet attribut en se servant d’opérateurs géographiques
Autrement dit:
La table accident contient l’attribut (caché) obj qui contient les coordonnées
(point) de l’accident
La table commune contient l’attribut (caché) obj qui contient les
coordonnées (polygone) de la commune
 La relation géographique entre accident et commune serait de dire si
les communes (polygones) contient des accidents (points)
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


Les opérateurs géographiques:
 A Contains B: centroide de B se trouve dans le polygone de A
 A Contains entire B: polygone de B est entierement inclus
dans le polygone de A
 A Within B: centroide de A est dans le polygone de B
 A Entirely within B: polygone de A est entierement dans le
polygone de B
 A Intersects B: s’ils on au moins un point en commun
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations géographiques (basées sur la géométrie):
Exemples:
Quelles sont les communes ayant connu des accidents mortels ?

Select *
From Commune, Accident
Where Commune.Obj Contains Accident.Obj
and Accident.type_acc like "Mortel"
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
 Des relations géographiques (basées sur la géométrie):
Exemples:
Quelles sont les communes ayant connu des accidents mortels durant
le mois de juin de l’année 2015 ?
Select *
From Commune, Accident
Where Commune.Obj Contains Accident.Obj and Accident.type_acc
like "Mortel" and Accident.date_acc Between "01/06/2015" and
"30/06/2015"
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations géographiques (basées sur la géométrie):
Exemples:
Quelles sont les communes traversées par la route RN25
Select *
From Commune, Route
Where Commune.Obj Intersects Route.obj and
Route.id_route= "RN25"
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Requêtes complexes avec jointure:


La jointure permet de lier deux ou plusieurs tables par :
Des relations géographiques (basées sur la géométrie):
Exemples:
Quelles sont les communes traversées par la route RN25

Select *
From Commune, Route
Where Commune.Obj Intersects Route.obj and
Route.id_route= "RN25"
-Rappel

-Requêtes SQL attributaires simples -Req SQL complexes (jointure simple &
spatiale)

Exercice:
Quel était le nombre de morts total (enf, homme,
femme) pour chaque commune durant le mois de
février ?

Vous aimerez peut-être aussi