Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.


Ignore:
Timestamp:
17/03/2012 00:49:40 (12 years ago)
Author:
thomasg
Message:

Fin correction typo et orthographe V2 du document

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/workshop-foss4g/simple_sql.rst

    r45 r62  
    44=============================== 
    55 
    6 :term:`SQL`, pour "Structured Query Language", définit la maniÚre d'importer et d'interroger des données dans une base. Vous avez déjà rédigé du SQL lorsque nous avons créer notre premiÚre base de données.  Rappel: 
     6:term:`SQL`, pour "Structured Query Language", définit la maniÚre d'importer et d'interroger des données dans une base. Vous avez déjà rédigé du SQL lorsque nous avons créé notre premiÚre base de données. 
     7 
     8Rappel: 
    79 
    810.. code-block:: sql 
     
    1012   SELECT postgis_full_version(); 
    1113 
    12 Maintenant que nous avons charger des données dans notre base, essayons d'utiliser SQL pour les interroger. Par exemple, 
     14Maintenant que nous avons chargé des données dans notre base, essayons d'utiliser SQL pour les interroger. Par exemple, 
    1315 
    14   "Quel sont les noms des quartiers de la ville de New York ?" 
    15    
     16  "Quels sont les noms des quartiers de la ville de New York ?" 
     17 
    1618Ouvrez une fenêtre SQL depuis pgAdmin en cliquant sur le bouton SQL 
    1719 
     
    2325 
    2426  SELECT name FROM nyc_neighborhoods; 
    25    
     27 
    2628et cliquez sur le bouton **Execute Query** (le triangle vert). 
    27    
    28 .. image:: ./screenshots/pgadmin_08.png   
     29 
     30.. image:: ./screenshots/pgadmin_08.png 
    2931 
    3032La requête s'exécutera pendant quelques (mili)secondes et retournera 129 résultats. 
    3133 
    32 .. image:: ./screenshots/pgadmin_09.png   
     34.. image:: ./screenshots/pgadmin_09.png 
    3335 
    34 Mais que c'est-il exactement passé ici ? Pour le comprendre, commençons par présenter les quatre types de requêtes du SQL : 
     36Mais que s'est-il exactement passé ici ? Pour le comprendre, commençons par présenter les quatre types de requêtes du SQL : 
    3537 
    3638 * ``SELECT``, retourne des lignes en réponse à une requête 
     
    3840 * ``UPDATE``, modifie des lignes existantes d'une table 
    3941 * ``DELETE``, supprime des lignes d'une table 
    40   
    41 Nous travaillerons principalement avec des requêtes de type ``SELECT``afin d'interroger les tables en utilisant des fonctions spatiales. 
     42 
     43Nous travaillerons principalement avec des requêtes de type ``SELECT`` afin d'interroger les tables en utilisant des fonctions spatiales. 
    4244 
    4345Requête de type SELECT 
     
    4749 
    4850  SELECT colonnes FROM données WHERE conditions; 
    49    
     51 
    5052.. note:: 
    5153 
    52     Pour une description exhaustive des paramÚtres possible d'une requête ``SELECT``, consultez la `documentaton de PostgresSQL  <http://www.postgresql.org/docs/8.1/interactive/sql-select.html>`_. 
    53      
     54    Pour une description exhaustive des paramÚtres possible d'une requête ``SELECT``, consultez la `documentation de PostgresSQL  <http://www.postgresql.org/docs/8.1/interactive/sql-select.html>`_. 
    5455 
    55 Les ``colonnes`` sont soit des noms de colonnes, soit des fonctions utilisant les valeurs des colonnes. Les ``données`` sont soit une table seule, soit plusieures tables reliées ensemble en réalisant une jointure sur une clef ou une autre condition. Les ``conditions`` représentent le filtre qui restreint le nombre de lignes à retourner. 
     56 
     57Les ``colonnes`` sont soit des noms de colonnes, soit des fonctions utilisant les valeurs des colonnes. Les ``données`` sont soit une table seule, soit plusieurs tables reliées ensemble en réalisant une jointure sur une clef ou une autre condition. Les ``conditions`` représentent le filtre qui restreint le nombre de lignes à retourner. 
    5658 
    5759  "Quel sont les noms des quartiers de Brooklyn ?" 
    5860 
    59 Nous retournons à notre table ``nyc_neighborhoods`` avec le filtre en main. La table contient tout les quartiers de New York et nous voulons uniquement ceux de Brooklyn. 
     61Nous retournons à notre table ``nyc_neighborhoods`` avec le filtre en main. La table contient tous les quartiers de New York et nous voulons uniquement ceux de Brooklyn. 
    6062 
    6163.. code-block:: sql 
    6264 
    63   SELECT name  
    64     FROM nyc_neighborhoods  
     65  SELECT name 
     66    FROM nyc_neighborhoods 
    6567    WHERE boroname = 'Brooklyn'; 
    6668 
    67 La requête prendra à nouveau quelque (mili)secondes et retournera les 23 éléments résultants. 
     69La requête prendra à nouveau quelque (milli)secondes et retournera les 23 éléments résultants. 
    6870 
    69 Parfois nous aurons besoin d'appliquer des fonctions sur le résultats d'une de nos requêtes. Par exemple, 
     71Parfois, nous aurons besoin d'appliquer des fonctions sur le résultat d'une de nos requêtes. Par exemple, 
    7072 
    7173  "Quel est le nombre de lettres dans les noms des quartiers de Brooklyn ?" 
    72    
     74 
    7375Heureusement PostgreSQL fournit une fonction calculant la longueur d'une chaîne de caractÚres : :command:`char_length(string)`. 
    7476 
    7577.. code-block:: sql 
    7678 
    77   SELECT char_length(name)  
    78     FROM nyc_neighborhoods  
     79  SELECT char_length(name) 
     80    FROM nyc_neighborhoods 
    7981    WHERE boroname = 'Brooklyn'; 
    8082 
    81 Bien souvent nous sommes moins interressés par une ligne particuliÚre mais plus par un calcul statistique sur l'ensemble résultant. Donc, connaitre la longueur des noms de quartiers est moins interressant que de calculer la moyenne des ces longueurs. Les fonctions qui renvoit un résultat unique en utilisant un ensemble de valeurs sont appelée des "fonctions d'aggrégations". 
     83Bien souvent, nous sommes moins interessés par une ligne particuliÚre que par un calcul statistique sur l'ensemble résultant. Donc, connaître la longueur des noms de quartiers est moins intéressant que de calculer la moyenne de ces longueurs. Les fonctions qui renvoient un résultat unique en utilisant un ensemble de valeurs sont appelées des "fonctions d'aggrégations". 
    8284 
    83 PostgreSQL fournit un ensemble de fonctions d'aggrégations, parmis lesquelles :command:`avg()` pour calculer la moyenne, and :command:`stddev()` pour l'écart type. 
     85PostgreSQL fournit un ensemble de fonctions d'aggrégations, parmi lesquelles :command:`avg()` pour calculer la moyenne, and :command:`stddev()` pour l'écart type. 
    8486 
    85   "Quel est le nombre moyen et l'écart type du nombre de lettre dans le noms des quartier de Brooklyn ?" 
    86    
     87  "Quel est le nombre moyen et l'écart type du nombre de lettres dans le nom des quartier de Brooklyn ?" 
     88 
    8789.. code-block:: sql 
    8890 
    89   SELECT avg(char_length(name)), stddev(char_length(name))  
    90     FROM nyc_neighborhoods  
     91  SELECT avg(char_length(name)), stddev(char_length(name)) 
     92    FROM nyc_neighborhoods 
    9193    WHERE boroname = 'Brooklyn'; 
    92    
     94 
    9395:: 
    9496 
    95            avg         |       stddev        
     97           avg         |       stddev 
    9698  ---------------------+-------------------- 
    9799   11.7391304347826087 | 3.9105613559407395 
    98100 
    99 Les fonctions d'agrégation dans notre dernier exemple sont appliquées à chaque ligne de l'ensemble des résultats. Comment faire si nous voulons rassembler des données ? Pour cela nous utilisons la clause ``GROUP BY``. Les fonctions d'agrégation ont souvent besoin d'une clause ``GROUP BY`` pour regrouper les éléments en utilisant une ou plusieures colonnes. 
     101Les fonctions d'agrégation dans notre dernier exemple sont appliquées à chaque ligne de l'ensemble des résultats. Comment faire si nous voulons rassembler des données ? Pour cela, nous utilisons la clause ``GROUP BY``. Les fonctions d'agrégation ont souvent besoin d'une clause ``GROUP BY`` pour regrouper les éléments en utilisant une ou plusieurs colonnes. 
    100102 
    101   "Quel est la moyenne des les noms de quartier de New York, renvoyer par quartiers ?" 
     103  "Quel est la moyenne du nombre de caractÚres des noms de quartiers et l'écart-type du nombre de caractÚres des noms de quartiers, renvoyé par section de New York ?" 
    102104 
    103105.. code-block:: sql 
    104106 
    105   SELECT boroname, avg(char_length(name)), stddev(char_length(name))  
    106     FROM nyc_neighborhoods  
     107  SELECT boroname, avg(char_length(name)), stddev(char_length(name)) 
     108    FROM nyc_neighborhoods 
    107109    GROUP BY boroname; 
    108   
    109110 
    110 Nous ajoutons la colonne ``boroname`` dans le résultat afin de pouvoir déterminer quelle valeur statistique s'applique à quel quartier. Dans une requête agrégée, vous pouvez seulement retourner les colonnes qui sont (a) membre de la clause de regroupement ou (b) des fonctions d'agrégation. 
    111    
     111 
     112Nous ajoutons la colonne ``boroname`` dans le résultat afin de pouvoir déterminer quelle valeur statistique s'applique à quelle section. Dans une requête agrégée, vous pouvez seulement retourner les colonnes qui sont (a) membre de la clause de regroupement ou (b) des fonctions d'agrégation. 
     113 
    112114:: 
    113115 
    114      boroname    |         avg         |       stddev        
     116     boroname    |         avg         |       stddev 
    115117  ---------------+---------------------+-------------------- 
    116118   Brooklyn      | 11.7391304347826087 | 3.9105613559407395 
     
    119121   Queens        | 11.6666666666666667 | 5.0057438272815975 
    120122   Staten Island | 12.2916666666666667 | 5.2043390480959474 
    121    
     123 
    122124Liste de fonctions 
    123125------------------ 
     
    125127`avg(expression) <http://www.postgresql.org/docs/current/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE>`_: fonction d'agrégation de PostgreSQL  qui retourne la valeur moyenne d'une colonne. 
    126128 
    127 `char_length(string) <http://www.postgresql.org/docs/current/static/functions-string.html>`_: fonction s'applicant aux chaînes de caractÚre de PostgreSQL qui retourne le nombre de lettres dans une chaîne. 
     129`char_length(string) <http://www.postgresql.org/docs/current/static/functions-string.html>`_: fonction s'appliquant aux chaînes de caractÚre de PostgreSQL qui retourne le nombre de lettres dans une chaîne. 
    128130 
    129131`stddev(expression) <http://www.postgresql.org/docs/current/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-STATISTICS-TABLE>`_: fonction d'aggrégation de PostgreSQL qui retourne l'écart type d'un ensemble de valeurs. 
    130    
    131    
     132 
Note: See TracChangeset for help on using the changeset viewer.