Base : comment créer des tables et exécuter les requêtes

Image non disponible Image non disponible

Pour commencer une base de données, cela débute par des données qui sont stockées dans des tables, et les requêtes sont là pour les exploiter.

Je vais avec ce tutoriel, vous montrer comment créer des tables, des vues et des requêtes.

Vous pouvez commenter l'article en suivant le lien suivant : 2 commentaires Donner une note à l'article (5), alors après votre lecture, n'hésitez pas.

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Définition

Base est l'application de gestion des bases de données des suites bureautiques LibreOffice et OpenOffice.

Nous les appelons bases de données relationnelles. Elles sont constituées d'un ensemble de données qui se présente sous la forme d'un tableau, chaque colonne correspond à des informations (des numéros, des dates, des textes plus ou moins longs, etc.), les lignes étant appelées « enregistrements ». Ces tableaux sont appelés des tables, celles-ci sont structurées et doivent avoir le moins de répétitions possible.

Les tables permettent de regrouper toutes les données en un seul endroit, ces dernières pouvant par la suite être utilisées par d'autres programmes.

II. Prérequis

Avant de commencer à concevoir une base de données relationnelle, il est important de bien définir la structure des données, cela afin de créer toutes les tables nécessaires et d'indiquer toutes les relations (notions abordées dans le paragraphe VLes relations) entre elles.

Nous pouvons distinguer deux types de tables : celles qui représentent des entités (informations sur l'emprunteur, les caractéristiques d'un livre, etc.) et celles qui associent une liaison entre deux tables.

Il est important de bien nommer les tables pour permettre de facilement retrouver les informations et aussi d'effectuer une meilleure maintenance de la base de données. Par exemple : pour une table contenant des informations sur des élèves, vous pouvez l'appeler t_info_eleve ou t_eleve, le tout étant de ne pas créer d'ambiguïté sur les informations contenues.

III. Exemple

Nous allons prendre le cas d'une gestion des emprunts des livres dans une école.

La meilleure méthode est d'utiliser un brainstorming, la schématisation de notre cas peut être ainsi :

Image non disponible

IV. Les tables

IV-A. Prérequis

Chaque colonne d'une table doit contenir des données de même type et tout changement de structure en cours entraîne des pertes de données.

Le nommage doit lui aussi être significatif, nous permettant par la suite une meilleure maintenance.

Il est aussi recommandé d'utiliser des index(1) :

  • soit cette valeur est connue, car il existe une donnée unique ;
  • soit en créant un index automatique.

Quelques recommandations sur les tables et les champs : il est conseillé de ne pas utiliser des mots-clés, d'éliminer les caractères spéciaux, d'écrire tout en minuscule, de remplacer les espaces par un underscore « _ ».

Pour le nom des champs, il est important de toujours donner le même nom à un champ, cela n'en sera que plus pratique pour faire la liaison entre les tables.

Il est aussi important de conserver une uniformité dans le nommage des champs, par exemple tous les champs « date » peuvent commencer par « dt ».

Pour tous les exemples qui suivent, je pars du principe que nous créons une nouvelle base et que nous obtenons donc la fenêtre suivante :

Image non disponible

Commençons à créer les tables !

IV-B. Avec l'assistant

Pour lancer l'assistant, il suffit de cliquer sur :

Image non disponible

La fenêtre suivante va s'ouvrir :

Image non disponible

Il nous suffit d'abord de choisir les exemples de tables qui dépendent de la catégorie. Restons sur notre exemple de bibliothèque et sélectionnons « Personnel » et « Bibliothèque » :

Image non disponible

Ensuite, sélectionnons les champs voulus et leur position dans la table avec l'aide des flèches. Nous obtenons en sélectionnant quelques-unes des colonnes :

Image non disponible

En cliquant sur « Suivant », la fenêtre ci-après s'affiche :

Image non disponible

Il est alors possible, sur cette fenêtre, de modifier les informations d'un champ, qu'il s'agisse du nom ou du type de données.

Image non disponible

Avec le « + », nous pouvons rajouter des champs. Cliquons sur « Suivant » :

Nous arrivons sur le paramétrage de la clé primaire. Cette dernière est obligatoire pour pouvoir insérer des données. S'il n'y pas de champ unique, nous créons une clé primaire automatique.

Une clé primaire numérique est mieux qu'une clé primaire type texte.

Dans notre cas, nous allons choisir une clé primaire automatique, cliquons sur « Suivant » :

Image non disponible

Nous arrivons sur la dernière étape de la création de notre table, n'oubliez pas les prérequis donnés dans le paragraphe précédent.

Nous avons aussi la possibilité de modifier les informations ou de créer un formulaire de saisie.

Cliquons sur « Terminer », notre table apparaît :

Image non disponible

Il suffit de l'ouvrir pour insérer des données.

Pour créer toutes vos tables, il vous suffit de procéder ainsi.

IV-C. En mode ébauche

Pour cela, il suffit de cliquer sur :

Image non disponible

La fenêtre suivante va s'ouvrir :

Image non disponible

Nous nous positionnons sur la première ligne, et dans la colonne « Nom de champ », il faut saisir le nom que nous souhaitons lui donner.

Ensuite, dans la colonne « Type de champ », nous allons, à l'aide de la liste déroulante, sélectionner un type de données, la valeur par défaut est un champ texte de dix caractères.

Suivant le choix fait, cela aura pour effet d'actualiser la partie « Propriétés du champ ».

Par exemple, j'ai choisi de créer le champ id_eleve et de le mettre en « integer » autoincrément.

Il vaut mieux commencer par les champs les plus importants comme l'id et les champs que vous utiliserez souvent. Dans notre exemple, le nom est plus important que la date de naissance.

Vous devez procéder ainsi pour tous les champs qui constitueront votre table, mais vous aurez toujours la possibilité de revenir dessus pour modifier les éléments. Il faut savoir que la modification d'un type de données peut entraîner la perte de certaines informations.

Modification d'une table

Pour modifier une table, nous devons la sélectionner et faire un clic droit. Nous obtenons :

Image non disponible

Et en cliquant sur « Éditer », nous affichons la fenêtre suivante :

Image non disponible

Nous arrivons sur le même masque que dans la création en mode ébauche. Il nous suffit ensuite de faire les modifications voulues.

Si vous changez le type de données d'une colonne et que celle-ci contient des données, vous risquez de les perdre.

Les champs que vous ajouterez à la table seront automatiquement ajoutés à la fin.

IV-D. Import

Pour cet exemple, nous prendrons le cas d'un fichier Tableur (Calc), mais cela fonctionne de la même façon pour tout fichier csv, xls, xlsx, etc.

Le fichier a la forme suivante :

Image non disponible

L'insertion des données se fait à l'aide du copier/coller. Il nous faut donc sélectionner les cellules de A1 à G8 et les copier (Ctrl+C ou dans le menu « Édition/Copier »).

IV-D-1. Table et données

Ensuite, il nous suffit d'aller dans le module des tables et de faire le collage (Ctrl+V ou dans le menu « Édition/Coller »), la fenêtre suivante apparaît :

Image non disponible

Sur ce module, il nous faut :

  • nommer la table ;
  • vérifier que la commande « Utiliser la première ligne comme noms de colonne » soit bien activée ;
  • vérifier que la commande « Créer une clé primaire » soit bien activée et la nommer.

Ce qui nous donne finalement :

Image non disponible

Cliquons sur « Suivant », la fenêtre devient :

Image non disponible

Il nous suffit de sélectionner les champs que nous souhaitons avoir. Après cela, le bouton « Suivant » apparaît, cliquez dessus, la fenêtre suivante s'affiche :

Image non disponible

Il nous faut contrôler si les types de champs correspondent à ce que nous souhaitons mettre dans la colonne. Par défaut, il est tenu compte des données pour définir le champ.

Pour finir la création, il faut cliquer sur « Créer », et la table se crée :

Image non disponible

IV-D-2. Données seulement

Pour insérer les données dans une table, celles-ci doivent contenir autant de champs ou colonnes. Dans notre cas, il nous manque le champ ID, il nous faut le rajouter :

Image non disponible

Ensuite, nous allons procéder comme précédemment. Sélectionnons les cellules A1 à G8, faisons une copie (Ctrl+C ou dans le menu « Édition/Copier »), et faisons un collage (Ctrl+V ou dans le menu « Édition/Coller ») dans la base de données, la fenêtre suivante apparaît :

Image non disponible

Sur ce module, il nous faut d'abord :

  • mettre dans le champ « Nom de la table » le nom de la table où nous souhaitons inclure les données ;
  • vérifier que la commande « Ajouter les données » soit bien activée.

Ce qui nous donne :

Image non disponible

Ensuite, cliquons sur « Suivant », la fenêtre suivante apparaît :

Image non disponible

Maintenant, il faut contrôler que les champs de la table « source » correspondent bien à ceux de la table cible. Il suffit de sélectionner un des champs pour voir à qui il est associé.

Une fois la vérification faite, cliquons sur « Créer ».

Si un des champs contient une donnée ne pouvant pas être incluse dans la table, vous verrez apparaître le message suivant :

Image non disponible

Dans notre cas, certains champs n'ont pas le bon type de données :

Image non disponible

Une fois les types de données en cohérence avec les données à insérer, nous obtenons dans la table :

Image non disponible

IV-E. Se connecter avec des données externes

La connexion avec des données externes dépend de l'environnement et de l'application utilisée, comme vous pouvez le voir sur ces exemples :

Image non disponible
LibreOffice sous OpenSuse
Image non disponible
OpenOffice sous Windows 7

Il existe un tutoriel pour vous connecter à une base MySQL : « LibreOffice Calc requêter une base MySQL ».

V. Les relations

V-A. Définition

Une relation est le lien qui existe entre deux tables, associant des données de la première avec celles de la seconde.

Nous rencontrerons trois situations, les relations pourront être :

  • d'un enregistrement à un seul autre : kitxmlcodeinlinelatexdvp1\;à\;1finkitxmlcodeinlinelatexdvp
  • d'un enregistrement à plusieurs autres : kitxmlcodeinlinelatexdvp1\;à\;\inftyfinkitxmlcodeinlinelatexdvp ou kitxmlcodeinlinelatexdvp1\;à\;nfinkitxmlcodeinlinelatexdvp
  • de plusieurs enregistrements à plusieurs autres : kitxmlcodeinlinelatexdvp\infty\;à\;\inftyfinkitxmlcodeinlinelatexdvp ou kitxmlcodeinlinelatexdvpn\;à\;nfinkitxmlcodeinlinelatexdvp

V-B. Créer des liens entre les tables

Prenons comme exemple celui-ci :

Image non disponible

Ces tables ont des relations entre elles.

La commande se trouve dans le menu « Outils » et « Relations… » :

Image non disponible

La fenêtre suivante s'ouvre :

Image non disponible

Il suffit d'ajouter les tables pour lesquelles nous souhaitons définir des relations, ce qui nous donne :

Image non disponible

Un bon agencement des tables permet une meilleure lisibilité des données par la suite.

Pour définir les relations, il suffit de sélectionner une des données et de la faire glisser sur la donnée correspondante sur une autre table. Dans notre cas, nous obtenons :

Image non disponible

Il ne faudra pas oublier d'enregistrer avant de sortir de cette fenêtre.

Maintenant, lorsque vous mettrez deux tables qui ont une relation entre elles dans une requête, la liaison se fera automatiquement.

VI. Les requêtes

Les requêtes permettent d'interroger, d'ajouter ou de modifier les données de la base. Elles peuvent être triées et filtrées.

Commençons par créer des requêtes !

VI-A. Avec l'assistant

Ce mode de création de requête n'est pas adapté si vous souhaitez utiliser plusieurs tables.

Pour lancer l'assistant, il suffit de cliquer sur :

Image non disponible

La fenêtre suivante va s'ouvrir :

Image non disponible

Il faut sélectionner la table que nous souhaitons interroger et les champs dont nous avons besoin, ce qui nous donne par exemple :

Image non disponible

En cliquant sur « Suivant », la fenêtre suivante apparaît :

Image non disponible

Il nous suffit de sélectionner les tris que nous souhaitons faire et le sens (croissant ou décroissant), par exemple en triant les dates de retour prévues :

Image non disponible

En cliquant sur « Suivant », la fenêtre suivante apparaît :

Image non disponible

Il nous suffit de mettre les conditions que nous souhaitons avoir, par exemple en ne sélectionnant que les emprunts qui n'ont pas de date de retour :

Image non disponible

En cliquant sur « Suivant », la fenêtre suivante apparaît :

Image non disponible

Cette partie permet de faire des regroupements, cela est utile si vous souhaitez faire des sommes, des moyennes…

En cliquant sur « Suivant », la fenêtre suivante apparaît :

Image non disponible

Il nous est possible de changer les noms des champs, cela peut être utile dans le cas où ces derniers ne sont pas explicites. Par exemple : date_retour_prev pourrait être date de retour prévu du livre.

En cliquant sur « Suivant », la fenêtre suivante apparaît :

Image non disponible

Sur ce module, vous devez nommer votre requête, ensuite vous avez un résumé de toutes les actions que vous voulez faire sur cette requête. En cliquant sur « Terminer», la requête est créée :

Image non disponible

Pour la suite, la requête pourra être modifiée.

VI-B. En mode ébauche

Pour cela, il suffit de cliquer sur :

Image non disponible

La fenêtre suivante va s'ouvrir :

Image non disponible

La fenêtre suivante permet d'ajouter les tables ou les requêtes dont nous aurons besoin. Il nous suffit de les sélectionner, de cliquer sur « Ajouter » puis sur « Fermer » une fois tous les éléments sélectionnés :

Image non disponible

Nous arrivons ensuite sur une fenêtre qui ressemble à cela :

Image non disponible
  1. Image non disponible
    C'est la barre d'outils qui contient tous les éléments :
    a : contient les éléments d'enregistrement et d'édition ;
    b : contient le copier / coller, etc.
    c : contient l'affichage des données, le changement de mode d'affichage, etc.
    d : permet d'ajouter des tables ou des requêtes ;
    e : contient des éléments permettant de modifier la partie qui se trouve au bas de l'écran.
  2. C'est le bloc qui contient les tables et les requêtes, et surtout les liens qui connectent les éléments entre eux.
  3. C'est la partie qui liste les éléments que nous voulons voir apparaître. C'est aussi là que nous pouvons mettre des filtres, des tris et faire des calculs.

Dans notre cas, nous obtenons ceci, une fois les tables ajoutées, les liens ajoutés ou modifiés et les champs ajoutés ainsi que les tris et les filtres souhaités :

Image non disponible

Dans l'exemple ci-dessus, nous souhaitons récupérer les noms et les livres qui sont empruntés, mais dont la date de retour est dépassée.

En cliquant sur :

Image non disponible

vous avez un aperçu du résultat :

Pour faire disparaître le résultat de la requête, il suffit de faire F4 (et de la même manière cela le fait apparaître).

Il est possible de renommer les titres des colonnes et de voir le résultat, il suffit de faire F5 pour actualiser :

Image non disponible

Nous voulons maintenant que les dates de retour prévues soient classées par ordre croissant. À l'aide de la liste déroulante, nous sélectionnons l'ordre voulu, ce qui nous donne :

Image non disponible

Nous pouvons aussi rajouter des filtres sur certaines colonnes, en saisissant le filtre choisi :

Image non disponible

S'il n'y a pas de signe avant le filtre, cela signifiera « égal ».

Maintenant, nous ne souhaitons voir que les trois premières colonnes, il nous faut donc décocher la visibilité, ce qui nous donne :

Image non disponible

Ce qui nous manque dans notre vue, c'est par exemple, le nombre de jours de retard. Nous allons donc rajouter un champ calculé, il nous faut nous positionner dans le champ et saisir la formule correspondante. Voici l'aperçu :

Image non disponible

La commande SQL correspondante est la suivante :

DATEDIFF( 'dd', "table_emprunt"."date_retour_prev", NOW( ) )

Pour la suite, nous avons aussi la possibilité de mettre un filtre paramétré dans le critère, il suffit alors de mettre un « ? » dans le champ :

Image non disponible

Lors de l'exécution de la requête, le masque suivant apparaîtra :

Image non disponible

Il ne nous reste plus qu'à saisir la valeur. S'il y avait plusieurs paramètres, ils apparaîtraient les uns au-dessous des autres.

La valeur saisie doit être exactement la même. Si vous cherchez « Laurent » et que vous avez saisi « laurent », cela ne ramènera rien.

VI-C. En SQL

Pour cela, il suffit de cliquer sur :

Image non disponible

La fenêtre suivante va s'ouvrir :

Image non disponible

Il ne nous reste plus qu'à saisir le code SQL sur la page blanche. Vous avez ici tous les éléments pour connaître les commandes SQL : Les meilleurs tutoriels SQL.

Si nous reprenons notre cas précédent, l'écriture SQL donne (j'ai pris soin de bien détailler le code) :

Image non disponible

Petite particularité : les noms des tables et des champs doivent être entre guillemets.

Ne passez pas trop de temps sur la mise en forme de la requête. En effet, celle-ci est modifiée par la suite, voici le code qui est créé :

Image non disponible

VI-D. Modifier une requête

Pour cela, il suffit de faire un clic droit sur la requête :

Image non disponible

Suivant votre choix, vous pourrez ouvrir la requête en mode graphique ou SQL.

Si vous vous êtes trompé, vous pourrez toujours, à l'aide du bouton de la barre d'outils, passer de l'un à l'autre :

Image non disponible

VII. Les vues

VII-A. Définition

Une vue est similaire à une requête, elle peut être aussi appelée table virtuelle.

Les cas d'emploi d'une vue sont pour des requêtes souvent utilisées ou pour sécuriser des informations SQL aux utilisateurs. En effet, les protections d'une vue ne sont pas les mêmes que celles d'une table.

VII-B. Création

Pour créer une vue, nous cliquons sur la commande suivante :

Image non disponible

Ce qui nous ouvre cette fenêtre :

Image non disponible

Nous sélectionnons la ou les tables nécessaires en les ajoutant :

Image non disponible

Ensuite, il ne reste plus qu'à sélectionner les champs nécessaires et mettre les filtres souhaités :

Image non disponible

Dans notre exemple, nous ne souhaitons récupérer que les livres indisponibles, en affichant qui les a empruntés et quand est prévu leur retour.

Nous devons l'enregistrer, ce qui nous donne finalement :

Image non disponible

Les vues ne fonctionnent que pour des sélections.

Vous pouvez passer en mode SQL en cliquant sur le bouton suivant :

Image non disponible

L'affichage deviendra :

Image non disponible

VII-C. Complément

Si vous aviez créé une requête, vous pouvez la transformer en vue avec la commande suivante :

Image non disponible

Il vous sera alors demandé de la nommer :

Image non disponible

Si vous utilisez ce procédé pour créer des vues, il faut savoir que les filtres paramétrés ne fonctionnent pas.

VIII. Remerciement

Je remercie également milkoseck et jacques_jean pour sa relecture attentive et assidue.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

En complément sur Developpez.com


Un index est une donnée qui permet un accès plus rapide à une ligne spécifique d'une table.

  

Licence Creative Commons
Le contenu de cet article est rédigé par Vincent Viale et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2013 Developpez.com.