FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Dimension: px
Commencer à balayer dès la page:

Download "FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL"

Transcription

1 FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL Cette création est mise à disposition selon le Contrat Paternité-Pas d'utilisation Commerciale-Partage des Conditions Initiales à l'identique 2.0 Belgique disponible en ligne ou par courrier postal à Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA. Sommaire 1 Introduction Notions et histoire autour des bases de données Quelques éléments historiques BD relationnelle : définition BD relationnelle : les étapes de la conception Les identifiants : la clef de voûte des BD relationnelles SQL : éléments d information de base SQL : quelques prérequis sur l accès et des fonctions de base Les différentes façons d accéder à des tables de la BD de PMB Des fonctions de base en SQL SQL : les 4 commandes principales La commande SELECT La commande UPDATE La commande INSERT La commande DELETE SQL : la fonction de join et les sous-requêtes Utilisation des alias pour interroger deux tables simultanément Les commandes join Utilisation des sous-requêtes SQL : quelques fonctions d agrégat et autres fonctions avancées Fonctions de regroupement ou de tri Fonctions arithmétiques Traitement de chaînes de caractères Pour aller plus loin à propos de (My)SQL Introduction Ce document a pour but de présenter brièvement les bases de données relationnelles et de donner quelques notions et requêtes de base en SQL. 2 Notions et histoire autour des bases de données Cette partie décrit le contexte dans lequel sont nées les BDs, donne la définition des BD relationnelles, quelques éléments d information à propos de leur conception et finalement, présente les identifiants, clefs de voûte des BD relationnelles. Cécile GASS juillet

2 2.1 Quelques éléments historiques Les bases de données (BD) ont des ancêtres : les systèmes de fichiers. Avant l avènement des bases de données telles qu on les connaît aujourd hui, les données étaient rassemblées sous forme de listes ou fichiers plus ou moins organisés. Ceux-ci étaient crées par des programmes, qui pouvaient les modifier. Le partage de ces données entre plusieurs applications, ou la mise à jour simultanée par plusieurs programmes étaient difficiles. Au fur et à mesure des progrès en informatique, les fichiers furent de plus en plus structurés, ils étaient mis en réseau et plusieurs modèles d organisation se faisaient concurrence. Finalement, les BD relationnelles se sont petit à petit imposées dans les années 70. Les années 80 virent les premières grosses applications basées sur des BD relationnelles, qui finirent par dominer largement dans les années 90. Depuis les années 80, le SQL (Structured Query Language), langage utilisé pour manipuler les données de ces BD, s est imposé en raison de sa simplicité mais il existe plusieurs SQL : des SQL propriétaires (comme oracle, sybase ou IBM) ; et d autres qui sont libres (tels mysql ou firebird) ; ils sont de plus en plus performants et robustes ; c est un langage qui convient particulièrement aux petites applications de la microinformatique. Entre les données de la BD ; et le langage SQL qui permet aux applications de les manipuler, le Système de gestion de la BD (SGBD) détermine comment réagir aux requêtes SQL exprimées dans les applications. PMB, logiciel libre, est nativement conçu pour fonctionner avec Mysql qui est tout à la fois: - un SGBD ; - un serveur de BD relationnelles ; - un logiciel ouvert compatible avec de nombreuses applications et plateformes, supportant un grand nombre de pilotes, et des standards ouverts. 2.2 BD relationnelle : définition Une base de données est une collection organisée de données i.e. il existe une structure logique qui lie ces données entre elles pour en faciliter l'accès et le traitement. A une BD est normalement associée la notion de dépôt, c est-à-dire que : - les informations sont disponibles pour tous à partir d'un endroit unique ; - l'observation des données du dépôt renseigne sur la structure et les états du domaine d'application qui est décrit ; - des applications s'y connectent généralement pour mettre à jour les données de la BD. Une BD relationnelle est un ensemble de fichiers ou tables de données liées entre elles, en particulier par des données particulières, les identifiants (encore appelés clef primaire) 1. Un certain nombre de fonctions simples, comme la gestion de l espace de stockage pour les tables, sont prises en charge par le SGBD, indépendamment des applications qui traitent les données. Avantages des BD relationnelles : indépendance des données par rapport aux applications ; suppression des redondances de données : les requêtes SQL permettent de présenter ensemble des données appartenant à des tables différentes ; simplicité du modèle. Faiblesses des BD relationnelles : peu de types de données différents sont admis, et ils sont fixés à l'avance ; les transactions longues ou interactives sont mal prises en charge ; certaines contraintes doivent être prises en charge par les applications alors qu'elles auraient pu être prises en charge par le SGBD. Par ailleurs, la complexification des systèmes aujourd hui semble imposer une évolution des BD relationnelles vers la technologie objet. 2.3 BD relationnelle : les étapes de la conception Une BD se conçoit généralement en trois phases, qui sont autant de points d observation ou représentation des données relatives à un domaine de la vie réelle : 1 Plus d informations dans la partie 2.4 Les identifiants : la clef de voûte des BD relationnelles. Cécile GASS juillet

3 1) un schéma entité-relation (ou entité-association) présente, dans une forme en principe compréhensible par un être humain, la façon dont les données de la BD sont structurées en différentes tables, leurs domaines de définition, les relations qui lient ces tables entre elles, les contraintes qui s'appliquent sur ces données et relations ; 2) le schéma entité-relation peut ensuite être traduit en un modèle relationnel, grâce, en particulier, à la théorie des ensembles. Ce modèle traduit les entités, relations et certaines contraintes du schéma entité-relation en tables concrètes ; 3) le modèle relationnel conduit, souvent par l intermédiaire d un logiciel, à la création effective de la BD, qui devient interrogeable par les applications, via SQL. Cette représentation précise comment sont physiquement stockées les données : taille des fichiers, fichiers d'indexe, positions, etc. Les développeurs de PMB mettent à disposition des utilisateurs, des informations à propos de la structure de la BD relationnelle sur laquelle est basé le logiciel ; en particulier : le fichier Répertoire_de_PMB\doc\noyau\scheme.gif présente le schéma entité-relation de la BD de PMB, il est en principe mis à jour à chaque nouvelle version de PMB ; dans PMB, via l onglet Administration, menu gauche Outils, le menu supérieur Description des tables donne le modèle relationnel de la BD de PMB. A titre d exemple, des parties du schéma entité-relation ; du modèle relationnel ; et de la BD relationnelle de PMB sont reproduites ci-dessous : Extrait du schéma entité-relation de la BD de PMB, version Extrait du modèle relationnel de la BD PMB, version (table exemplaires) Cécile GASS juillet

4 Extrait de la BD de PMB, version (table collections) 2.4 Les identifiants : la clef de voûte des BD relationnelles Véritable clef de voûte de toutes les BD relationnelles, les identifiants sont présents dans chaque table de chaque BD et sont toujours des nombres entiers, et uniques au sein de chaque table. Cécile GASS juillet

5 En fait, chaque enregistrement d une table est reconnu par un tel identifiant unique (au sein de cette table). Et les relations entre les tables de la BD s établissent sur base de ces identifiants, comme l illustre le schéma ci-dessous, qui reprend : - un extrait (fictif) de deux notices de PMB, telles qu elles pourraient apparaître à l OPAC ou dans l interface administrateur de PMB ; - les extraits des tables (très partiellement reproduites) correspondant à ces notices, pour ce qui concerne les auteurs et les éditeurs, i.e. les tables de la BD de PMB impliquées sont : notices, publishers, responsibility et authors. Dans ce schéma, les colonnes des tables concernées correspondant aux identifiants sont systématiquement remplies en couleurs (rouge pour les identifiants des notices, vert pour les identifiants des auteurs et mauve pour les identifiants des éditeurs). Ce schéma montre par exemple que l auteur Langlois, Claudie est reconnu, dans la table authors par l identifiant (author_id) 2. PMB permet d associer un grand nombre d auteurs aux notices, grâce à la table responsability. Notre auteur est ainsi reconnu dans cette table par son identifiant (ici intitulé responsability_author), et est lié à la notice d identifiant responsability_notice égal à 1, ce qui correspond à la notice de titre Nimitz. On retrouve également cet auteur dans la notice d identifiant 2, puisque la table responsability y associe également cette notice à cet auteur. Ainsi, à chaque fois que PMB devra associer un auteur avec d autres données n appartenant pas à la table authors, il se servira de l identifiant de cet auteur (author_id = 2) pour mettre ces éléments en relation. Extrait des Notices telles qu elles pourraient apparaître dans un OPAC Numéro Not. Titre Auteur Editeur 1 Nimitz Robinson, Patrick; A. Michel Langlois, Claudie 2 L'adagio d'albino Favulier, Jacques; A. Michel; Forlane Langlois, Claudie Extrait de la table Notices notice_id tit1 ed1_id Ed2_id 1 Nimitz 1 2 L'adagio d'albino 1 2 Extrait de la table Publishers ed_id ed_name 1 A. Michel 2 Forlane Extrait de la table Responsability responsability_notice responsability_author Extrait de la table Authors author_id author_name 1 Robinson, Patrick 2 Langlois, Claudie 3 Favulier, Jacques Comme nous pouvons le voir dans l exemple ci-dessus, la présence des identifiants permet d enregistrer dans des tables différentes, les données qui représentent par essence des entités Cécile GASS juillet

6 différentes. Ainsi, la BD de PMB comporte une table notices, une table authors, une troisième table publishers, etc. ; ce sont les identifiants qui nous permettent de retrouver quel auteur, quel éditeur, vont avec quelle notice. Ces identifiants seront donc naturellement largement utilisés dans les requêtes SQL que nous allons voir maintenant. 3 SQL : éléments d information de base Nous avons déjà signalé qu il existait plusieurs SQL ; en réalité, les différences résident d avantage dans les performances pour les très grands volumes de données, ainsi que certaines fonctions ajoutées dans l une ou l autre des versions. Sur le fond, les commandes les plus utilisées ont la même signification à travers les différents langages SQL. Le travail présenté ici se base sur le langage MySQL (version 4.1.9). Cette partie énonce premièrement quelques prérequis concernant l accès à une BD dans MySQL et des fonctions de base ; décrit ensuite les commandes principales en SQL ; puis elle aborde la fonction de join entre tables ; et des fonctions d agrégation. Quelques requêtes et commandes typiques sont finalement présentées. Le lecteur trouvera également quelques références pour aller plus loin en fin de partie. 3.1 SQL : quelques prérequis sur l accès et des fonctions de base D une façon générale, nous allons voir dans cette partie comment modifier des données de la BD de PMB. ATTENTION : à l exception des requêtes de sélection, qui ne peuvent engendrer, au pire, qu un blocage temporaire de PMB lorsqu une requête retournant un très grand nombre de résultats est exécutée, il est TRES dangereux de modifier, via des requêtes SQL, le contenu de la BD. En effet, un certain nombre de règles encodées dans la partie applicative de PMB, garantit la cohérence de la base ; ces règles ne seront pas vérifiées si vous exécutez une requête qui va modifier la base ; vous risquez donc de la corrompre, et par la même, de perdre tout votre catalogue. Il est donc fortement conseillé d essayer les requêtes de mise à jour de la BD que vous souhaitez appliquer sur un PMB de TEST Les différentes façons d accéder à des tables de la BD de PMB Il est possible d interagir avec la BD de PMB, directement à partir du logiciel, par deux voies différentes : via les procédures d action s appliquant aux contenus des Paniers de PMB : le menu Gestion des procédures permet en effet, via des requêtes écrites en SQL, de visualiser, modifier, ou effacer des notices et/ou des exemplaires du catalogue 2, ou ; via les Actions personnalisables (de l onglet Administration, menu gauche Outils) : le bibliothécaire peut créer ici toute requête en SQL permettant d agir directement sur le contenu de la BD, pour virtuellement tout faire 3. Ceci permet par exemple de construire des requêtes permettant de sortir des inventaires pour le recollement ou le désherbage. Attention : si les requêtes sont exécutées directement dans PB, aucun saut de ligne n est admis entre le début et la fin de la requête (qui doit se terminer par ;). Si votre configuration le permet, vous pouvez accéder à la BD de PMB via l interface de MySQL. Lorsque l installation s est faite via EasyPHP, l accès se fait via le menu Administration d EasyPHP, en cliquant sur le menu GESTION BDD. L utilisateur n a plus qu à choisir la BD de PMB (par défaut, il s agit de bibli) pour accéder à l ensemble des tables et données contenues dans la BD. 2 Certaines procédures sont déjà définies dans PMB. 3 Quelques Actions personnalisables sont déjà encodées dans PMB. Cécile GASS juillet

7 Enfin, lorsque PMB est installé sous Windows, il est possible d accéder à la BD de PMB via la fenêtre de commande DOS, par la commande c:\répertoire_où_est_installé_mysql\mysql u bibli pbibli (si PMB a été installé en respectant les paramètres par défaut). Cette interface n étant pas graphique, elle peut sembler beaucoup plus aride à utiliser, mais c est celle qui est la moins gourmande en ressources Des fonctions de base en SQL Quelques remarques préliminaires : les commandes répertoriées dans cette partie sont essentiellement utiles lorsque MYSQL est accédé via une fenêtre de commande DOS ; par défaut, les résultats d'une requête sont présentés en tableau, dont la 1ère ligne contient le nom des colonnes participant à la requête. Après les résultats, MySQL indique le nombre de lignes concernées et le temps 'logiciel' d'exécution de la requête 4 ; les mots des requêtes sont insensibles à la casse utilisée, mais les noms des bases de données, tables et colonnes peuvent l'être (en fonction du système d'exploitation, p.e. sur Unix, la casse est importante) ; toutes les commandes SQL doivent se terminer par point-virgule. Une requête peut être écrite sur plusieurs lignes : MySQL ne tente d'exécuter une requête que lorsqu'il trouve un ; une date doit être encodée en suivant le format AAAA-MM-JJ. Le tableau ci-dessous répertorie quelques commandes pouvant être utiles : Commande Mysql mysql --help mysql -h hote -u utilisateur -p nomdelabase quit Action donne la liste des options possibles pour mysql (ou de toute autre fonction) connection au serveur MySQL (nomdelabase est optionnel). Le mot de passe sera demandé par la commande quitte MySQL \c annule une requête SQL en cours d'édition USE nomdelabase utilise spécifiquement la base de donnée nomdelabase. Si la commande est réussie, mysql retourne le message database changed SHOW DATABASES SHOW TABLES CREATE nomdelabase DATABASE CREATE TABLE nomtable (nomcol1 TYPE, nomcol2 TYPE, etc.) DESCRIBE nomtable LOAD DATA LOCAL INFILE "nomfichier.txt" INTO TABLE nomtable montre les BDs existantes sur le serveur MySQL montre les tables déjà crées dans la base utilisée crée la base de données nomdelabase. crée la table nomtable : il faut indiquer le nom de chaque colonne de la table (i.e. nomcol1, etc.), et préciser son type 5 ; peuvent aussi être précisés : une valeur par défaut ; si une valeur doit être incrémentée, etc. indique les colonnes ; leurs types ; si aucune valeur n'est encore encodée ; s'il s'agit d'une clef (ou identifiant) ; la valeur par défaut éventuellement encodée, etc. de la table nomtable insère directement le contenu d'un fichier dans la table nomtable qui doit déjà exister 6 * remplace toutes les colonnes d une table (p.e. SELECT *) 4 Il ne s agit que d une indication, et n est pas lié au temps d'exécution machine 5 Quelques types courants : text, varchar, enum, etc. 6 Le fichier doit respecter l ordre, le nombre, et le type de données attendus dans la table. Cécile GASS juillet

8 3.2 SQL : les 4 commandes principales Les 4 commandes principales en langage SQL sont : SELECT, UPDATE, INSERT et DELETE, que nous allons aborder successivement La commande SELECT La commande SELECT permet de visualiser le contenu ou une partie de celui-ci d'une ou plusieurs 7 tables d'une BD relationnelle. Une requête SELECT doit respecter la syntaxe suivante : SELECT liste_colonnes FROM nomtable WHERE liste_conditions 8, où : liste_colonnes est la liste des colonnes qui apparaîtront dans la réponse à la requête. S il y a plusieurs colonnes, elles doivent être séparées par des virgules ; nomtable indique sur quelle table la requête SELECT va porter ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs de la table pour répondre à la requête SELECT. Ces conditions peuvent arborer des opérateurs de comparaisons (p.e. pour n afficher que les personnes d une table joueurs pour lesquelles l âge est >=5) ; des opérateurs logiques entre colonnes qui sont : AND, OR, NOT (n affichera que les enregistrements ne vérifiant pas la condition qui succède à cet opérateur) et XOR (n affiche que les résultats qui vérifient uniquement l une des 2 conditions séparées par l opérateur) ; p.e. pour n afficher que les personnes d une table joueurs pour lesquelles l âge est >=5 ET dont l état de santé est bon. A propos de liste_conditions : sont listées ici les principales conditions, en dehors des opérateurs de comparaison et des opérateurs logiques entre colonnes, susceptibles d être utilisées dans les requêtes SQL : IN et NOT IN : permet de spécifier un intervalle de valeurs possibles (ou impossibles si NOT IN est utilisé). La syntaxe est : IN (valeur1, valeur2, valeur3) (ou NOT IN ). Attention, si les valeurs de l intervalle considéré sont du texte, il faudra écrire : IN ( valeur1, valeur2, valeur3 ). Ce type de condition est utile p.e. pour n afficher que les personnes de la table joueurs qui habitent IN ( Bruxelles, Gand, Namur ). LIKE et NOT LIKE : ce type de condition est utilisé en combinaison avec % pour représenter une chaîne de caractère de longueur quelconque ; ou avec _ pour remplacer un caractère unique. La syntaxe est : NOT LIKE 'chainedecarac%' ; une requête utilisée avec cette condition retournera tous les enregistrements où les valeurs d une colonne particulière ne commencent pas par chainedecarac. Ce type de condition est essentiellement utilisé pour des valeurs de type chaîne de caractères, et requiert dans ce cas aussi l utilisation de guillemets 9. La condition LIKE 'b%' permet p.e. de retrouver toutes les personnes de la table joueurs dont le nom commence par b ; BETWEEN : ce type de condition est utilisé pour retrouver les enregistrements dont la valeur d une colonne se situe entre deux valeurs extrèmes. La syntaxe est : BETWEEN 7 AND 10. A propos de liste_colonnes les alias : l utilisation d alias permet de faire afficher les résultats des requêtes en SQL avec des intitulés plus explicites que les noms des colonnes de la table concernée. La 7 Les requêtes s appliquant sur plusieurs tables simultanément sont abordées dans la partie 3.3 la fonction de join. 8 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat. 9 Attention, il convient d utiliser les guillemets simples. Cécile GASS juillet

9 syntaxe est : vrai_nom_colonne AS NouveauNomPlusExplicite ; p.e. jname AS NomJoueur permet d afficher l intitulé NomJoueur plutôt que jname pour les joueurs répondant à une requête ; utilisation du mot réservé DISTINCT : ce mot réservé permet de supprimer les doublons des résultats à afficher répondant à une requête. Il suffit pour cela d ajouter ce mot avant l énumération de liste_colonnes. Exemples de requête SELECT La requête suivante sélectionne les titres et nombre de pages des documents catalogués qui arborent moins de 50 pages (pour les lecteurs débutants!). Seront affichés les titres des documents concernés et leur nombre de pages respectifs, sous les intitulés Titre et NombreDePages. SELECT tit1 AS Titre, npages AS NombreDePages FROM notices WHERE npages < 100; La requête suivante sélectionne les titres comportant le mot Loire et ayant plus de 50 pages : SELECT tit1, npages FROM notices WHERE tit1 like ' %Loire%' AND npages > 50; La requête suivante sélectionne les différentes dates de naissance et mort des auteurs du catalogue : SELECT DISTINCT author_date FROM authors; Remarque : des fonctions assez élaborées de formatage des chaînes de caractères sont également susceptibles d être utilisées ; elles sont décrites dans la partie 3.4 SQL : quelques fonctions d agrégat et autres requêtes avancées La commande UPDATE La commande UPDATE permet de mettre à jour le contenu ou une partie de celui-ci d'une ou plusieurs 10 tables d une BD relationnelle. Attention : l utilisation de la commande UPADTE peut entièrement corrompre la BD de PMB ; elle doit être utilisée avec une grande précaution, préférablement sur un PMB de test. Une requête UPDATE doit respecter la syntaxe suivante : UPDATE nomtable SET mises_a_jour_col WHERE liste_conditions 11, où : nomtable indique sur quelle table la requête UPDATE va porter ; mises_a_jour_col indique les colonnes à modifier et les nouvelles valeurs qu il faut leur attribuer. La syntaxe est : nom_col1_a_modifier = nouvelle_valeur1, nom_col2_a_modifier = nouvelle_valeur2, etc. Les chaînes de caractères requièrent l utilisation de guillemets 12 ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs de la table pour répondre à la requête UPDATE. Les mêmes conditions que pour la commande SELECT peuvent être utilisées. Exemple de requête UPDATE La requête suivante remplace le ed_pays par la valeur France pour tous les éditeurs dont la ed_ville vaut Paris. UPDATE publishers SET ed_pays='france' WHERE ed_ville='paris'; 10 Les requêtes s appliquant sur plusieurs tables simultanément sont abordées dans la partie 3.3 la fonction de join. 11 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat et autres requêtes avancées. 12 Attention, il convient d utiliser les guillemets simples. Cécile GASS juillet

10 3.2.3 La commande INSERT La commande INSERT permet d ajouter un enregistrement où certaines valeurs de celui-ci à une table d une BD relationnelle ; elle peut aussi créer une nouvelle table (voir plus bas). L utilisation de la commande INSERT nécessite de bien connaître la table dans laquelle l enregistrement doit être inséré, à la fois pour l ordre des colonnes et le type de données à insérer. Une requête INSERT doit respecter la syntaxe suivante : INSERT INTO nomtable (liste_colonnes) VALUES (liste_valeurs), où : nomtable indique sur quelle table la requête INSERT va porter ; liste_colonnes indique les colonnes, séparées par des virgules, pour lesquelles des valeurs seront insérées ; liste_valeurs est la liste des valeurs à attribuer à l enregistrement, séparées par des virgules, et dans le même ordre que la liste_colonnes. Les chaînes de caractères requièrent l utilisation de guillemets 13. Exemple de requête INSERT La requête suivante insère l auteur Vargas, Fred, avec l identifiant 50, le type personne physique (qui est connu par l identifiant 70), sans rejet, date de naissance, ni renvoi (donc 0), site web ni commentaire : INSERT INTO authors (author_id, author_type, author_name, author_rejete, author_date, author_see, author_web, index_author, author_comment) values (50, '70', 'Vargas, Fred', '', '', 0, '', '', ''); Attention : nous insérons ici un auteur ayant comme identifiant 50. Cette commande aurait échoué si un auteur reconnu par cet identifiant existait déjà dans la BD ; cette opération nécessite donc d aller vérifier quel est le dernier identifiant utilisé dans cette table La commande DELETE La commande DELETE permet d effacer un ou plusieurs enregistrement(s) d'une ou plusieurs 15 tables d une BD relationnelle. Attention : l utilisation de la commande DELETE peut entièrement corrompre la BD de PMB (p.e. en effaçant un enregistrement dont l identifiant est utilisé dans une autre table) ; elle doit être utilisée avec une grande précaution, préférablement sur un PMB de test. Une requête DELETE doit respecter la syntaxe suivante : DELETE FROM nomtable WHERE liste_conditions 16, où : nomtable indique sur quelle table la requête DELETE va porter ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs de la table pour répondre à la requête DELETE. Les mêmes conditions que pour la commande SELECT peuvent être utilisées. Exemple de requête DELETE La requête suivante efface de la table authors l auteur Vargas, Fred inséré précédemment. 13 Attention, il convient d utiliser les guillemets simples. 14 Pour accéder au contenu des tables de la BD de PMB, voir partie 3.1 SQL : quelques prérequis sur l accès et des fonctions de base. 15 Les requêtes s appliquant sur plusieurs tables simultanément sont abordées dans la partie 3.3 la fonction de join. 16 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat et autres requêtes avancées. Cécile GASS juillet

11 DELETE FROM authors WHERE author_name ='Vargas, Fred'; Attention : nous effaçons ici un auteur ayant comme nom Vargas, Fred. Si l identifiant de cet auteur avait été utilisé dans une autre table (p.e. la table notices), nous aurions par cette action, corrompu la BD de PMB. 3.3 SQL : la fonction de join et les sous-requêtes Nous avons vu que l identifiant jouait, dans les BD relationnelles, un rôle fondamental de liant entre les tables ; c est lui qui va, p.e., nous permettre de relier les auteurs, éditeurs, etc. aux notices dans lesquelles ils sont censés apparaître. Du point de vue de la base de données, cette liaison s établit grâce aux fonctions de join et aux sous-requêtes, qui permettent d interroger simultanément deux (ou plus) tables. Cette partie donne d abord quelques prérequis qui nous seront utiles pour présenter ensuite les différentes fonctions de join existant en Mysql ; en dernière partie, nous verrons brièvement les sous-requêtes Utilisation des alias pour interroger deux tables simultanément Nous avons vu que les alias permettaient de faire afficher les résultats d une requête précédés de noms plus explicites que les noms des colonnes utilisés dans les tables de la BD 17. Nous allons voir ici un autre rôle utile des alias : un alias peut remplacer le nom d une table. Dès qu une requête fait appel à plusieurs tables simultanément, il est préférable de faire précéder chaque nom de colonne prenant part à la requête, du nom de la table de laquelle elle est issue, suivi d un point 18. Ainsi, si nous voulons parler de la colonne author_name de la table authors, nous préférerons utiliser authors.author_name pour désigner cette colonne dans notre requête. Cependant, pour raccourcir les requêtes, il est possible de remplacer le nom des tables par des alias, sorte de surnom de table, et qui seront beaucoup plus courts que le nom des tables elles-mêmes. La syntaxe est : pour définir l alias dans la requête : nomtable AS n ; où n est l alias de la table nomtable 19 ; pour utiliser l alias dans la requête : n.nomcolonne ; où nomcolonne est une colonne de la table nomtable qui participe à la requête. Exemple d utilisation d un alias dans une requête Nous pouvons réécrire notre première requête : SELECT tit1 AS Titre, npages AS NombreDePages FROM notices WHERE npages < 100; en utilisant l alias n pour la table notices : SELECT n.tit1 AS Titre, n.npages AS NombreDePages FROM notices AS n WHERE n.npages < 100; Evidemment, pour une requête simple portant sur une seule table, l utilisation d alias paraît compliquer les choses nous allons en fait voir comme il est utile dans la suite! Les commandes join La commande join permet d interroger des tables, le plus souvent 2, simultanément, pour trouver les enregistrements, appartenant aux tables impliquées, qui sont liés par leurs 17 Voir la partie La commande SELECT. 18 Cette bonne habitude trouvera tout son sens dès lors que plusieurs tables impliquées dans une requête de join arborent des colonnes portant le même nom. Dans ce cas, l alias est obligatoire, afin que le SGBD sache à quelle table appartiennent les colonnes homonymes. 19 Bien évidemment, l utilisateur est libre de choisir un alias de son choix! Cécile GASS juillet

12 identifiants. Ainsi, on retrouvera généralement dans l une des tables impliquées, une colonne prenant pour valeurs, les identifiants de l autre (ou des autres) table impliquée. Exemple : retrouver le 1 er éditeur d une notice particulière dans PMB Nous avons vu, dans le schéma de la partie 2.4 Les identifiants : la clef de voûte des BD relationnelles, que, dans la BD de PMB : les coordonnées des éditeurs étaient enregistrées dans la table publishers. Un identifiant est associé à chaque éditeur ; il est stocké dans la colonne ed_id ; d autre part, la table notices recueille une majorité d information concernant les notices du catalogue. Dans cette table, la colonne ed1_id prend comme valeurs les identifiants enregistrés dans la table publishers, dans la colonne ed_id. Ainsi, la notice d identifiant notice_id 1, de titre Nimitz a pour 1 er éditeur, l éditeur d identifiant ed1_id égale à 1. Dans la table publishers, l éditeur d identifiant ed_id égale à 1 correspond à l éditeur de nom A. Michel. Nous aurions pu retrouver cette correspondance à l aide d une requête join mais il existe plusieurs façons d utiliser la commande join, ce que nous allons voir à présent. Les différentes commandes join En réalité, la première commande join ne fait pas appel à la commande join ; elle combine l interrogation de deux tables, et matérialise le lien d identifiants dans la commande where. La syntaxe est la suivante, en utilisant les alias pour remplacer les noms de tables : SELECT liste_colonnes FROM nomtable1 AS n1, nomtable2 AS n2 WHERE n1.colid_ref_t1=n2.collid_t2 AND liste_conditions 20, où : liste_colonnes est la liste des colonnes, séparées par des virgules, susceptibles d appartenir à l une et à l autre table, qui apparaîtront dans la réponse à la requête ; nomtable1 indique la première table sur laquelle va porter la requête SELECT, et nomtable2 est la seconde table concernée ; la condition n1.colid_ref_t1=n2.collid_t2, après le mot clef WHERE représente le lien qui existe entre les 2 tables, i.e. les égalités d identifiants que les enregistrements des deux tables devront vérifier pour répondre à la requête : collid_ref_t1 est la colonne de la table nomtable1 accueillant comme valeurs les identifiants de la table nomtable2 ; collid_t2 est la colonne des identifiants de la table nomtable2. Cette condition est obligatoire pour une commande de join ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs des tables pour répondre à la requête SELECT. Les mêmes conditions que pour la commande SELECT simple peuvent être utilisées. Cette commande n affiche que les enregistrements des 2 tables ayant en commun l identifiant repéré par la condition n1.colid_ref_t1=n2.collid_t2 : les enregistrements de la table nomtable1 n ayant pas comme valeur pour la colonne colid_ref_t1 la même valeur pour l un des enregistrements de la table nomtable2 n apparaîtront pas dans les résultats, et ; les enregistrements de la table nomtable2 n ayant pas comme identifiant (colonne collid_t2) une même valeur de la colonne colid_ref_t1 de la table nomtable1 n apparaîtront pas non plus dans les résultats à la requête de join entre ces tables. Par contre, Mysql permet de faire apparaître ces enregistrements exclus, lorsque l une des (autres) commandes de join est utilisée 21 ; plus précisément : 20 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat. 21 Nous ne mentionnons pas ici les commandes INNER JOIN (dont les résultats sont les mêmes que ceux de la première commande join décrite dans ce document : celle qui n utilise justement pas la commande join mais qui utilise directement la condition d égalité des identifiants entre les 2 tables) ; STRAIGHT_JOIN (est semblable à la commande JOIN mais la 1 ère table rencontrée est toujours lue en Cécile GASS juillet

13 lorsque la commande FULL OUTER JOIN est utilisée : les enregistrements des deux tables impliquées apparaissent dans les résultats de la requête, mais les valeurs NULL sont renseignées pour tous les enregistrements pour lesquels un identifiant n existe que dans une des deux tables ; lorsque la commande LEFT OUTER JOIN est utilisée : tous les enregistrements de la 1 ère table rencontrée dans la requête apparaissent dans les résultats, et la valeur NULL apparaît pour tous les enregistrements de la seconde table pour lesquels un identifiant n existe que dans la 1 ère table ; lorsque la commande RIGHT OUTER JOIN est utilisée : tous les enregistrements de la seconde table rencontrée dans la requête apparaissent dans les résultats, et la valeur NULL apparaît pour tous les enregistrements de la 1 ère table pour lesquels un identifiant n existe que dans la seconde table. Pour ces trois commandes OUTER JOIN, la syntaxe, différente de la première commande décrite, est la suivante : SELECT liste_colonnes FROM nomtable1 AS n1 XXX OUTER JOIN nomtable2 AS n2 ON n1.colid_ref_t1=n2.collid_t2 WHERE liste_conditions 22, où : liste_colonnes est la liste des colonnes, séparées par des virgules, susceptibles d appartenir à l une ou à l autre table, qui apparaîtront dans la réponse à la requête ; nomtable1 indique la première table sur laquelle va porter la requête SELECT, et nomtable2 est la seconde table concernée ; XXX peut prendre au choix une valeur parmi les 3 citées plus haut, i.e. FULL, LEFT ou RIGHT en fonction des résultats souhaités ; ON n1.colid_ref_t1=n2.collid_t2 a le même rôle que celui qui est décrit dans la syntaxe de la première commande join décrite ; liste_conditions est une liste de conditions, séparées par des virgules, que doivent vérifier les valeurs des tables pour répondre à la requête SELECT. Les mêmes conditions que pour la commande SELECT simple peuvent être utilisées. La 1 ère forme de join sera utilisée lorsqu il s agit de reconstituer des enregistrements complets de données réparties entre plusieurs tables (p.e. les auteurs de certaines notices) ; l une ou l autre des autres commandes de join seront utilisées lorsqu il s agira, au contraire, d identifier les enregistrements n appartenant qu à l une ou l autre des tables impliquées (p.e. pour identifier les auteurs qui ne sont utilisés dans aucune notice). Exemples de requêtes utilisant des commandes JOIN La requête suivante affiche les titres et les auteurs des notices dont le nom d auteur comporte les lettres el : SELECT n.tit1, a.author_name FROM notices AS n, authors AS a, responsability AS r WHERE n.notice_id = r.responsability_notice AND r.responsability_author = a.author_id AND author_name like '%el%'; Cette requête nécessite la participation de 3 tables pour pouvoir associer un auteur à une notice. premier. Cette condition ne doit être utilisée que lorsque MySql commet une erreur de performance en commençant l exécution de la requête par la seconde table) ; ni NATURAL JOIN (qui ne concernent que les colonnes qui existent dans les 2 tables impliquées). Plus d information à propos de ces commandes sont disponibles sur et 22 Les fonctions d agrégat GROUP BY liste de colonnes, HAVING liste de conditions et ORDER BY liste de colonnes peuvent être ajoutées à cette syntaxe. Ces fonctions sont abordées dans la partie 3.4 SQL : quelques fonctions d agrégat. Cécile GASS juillet

14 La requête suivante affiche les identifiants, le titre des notices, et le descripteur pour les notices ayant été indexées avec un descripteur de thesaurus commençant par Littérature : SELECT n.notice_id, n.tit1, ca.libelle_categorie FROM notices AS n, notices_categories AS nc, noeuds AS no, categories AS ca WHERE n.notice_id = nc.notcateg_notice AND nc.num_noeud = no.id_noeud AND no.id_noeud = ca.num_noeud AND ca.libelle_categorie LIKE 'Littérature%'; Cette requête est relativement simple, bien qu elle mette en jeu 4 tables différentes (notices, categorie, nœuds et notice_categories) ; il convient de bien penser à ajouter toutes les conditions de join requises (3 conditions pour 4 tables). La requête suivante affiche les éditeurs définis dans le catalogue mais qui n appartiennent encore à aucune notice, avec suppression des doublons : SELECT DISTINCT p.ed_name FROM publishers AS p LEFT OUTER JOIN notices AS n ON p.ed_id = n.ed1_id; La requête suivante remplace la section des exemplaires dont le code barres commence par et ayant comme section Romans Jeunes par la section correspondant à Documentaires Jeunes : SELECT idsection FROM docs_section WHERE section_libelle= 'Documentaires Jeunes'; UPDATE exemplaires AS e, docs_section AS ds SET e.expl_section=25 WHERE e.expl_section = ds.idsection AND e.expl_cb like ' %' AND ds.section_libelle like 'Romans Jeu%'; Cette requête se déroule en 2 temps : recuperation de l idsection de la table docs_section correspondant à Documentaires Jeunes (le résultat de cette 1 ère requête est 25) ; puis mise à jour, dans la table exemplaires de la section, pour les enregistrements qui satisfont aux 2 conditions énoncées Utilisation des sous-requêtes Les sous-requêtes permettent de sélectionner uniquement les enregistrements répondant à une liste de conditions d une table, et à une autre liste de conditions d une autre table ou d un sous-ensemble de la table impliquée. Deux types de sous-requêtes existent ; celui qui se base sur la commande EXISTS (ou NOT EXISTS), et celui qui inclut dans la liste de conditions de la clause WHERE, une requête SELECT qui s applique à une autre table, ou un sous ensemble de la table impliquée ; nous allons les aborder successivement ici La sous-requête avec la commande EXISTS (ou NOT EXISTS) Seule l existence (ou l absence) d enregistrements répondant aux critères de la sous requête contrôlée par la commande EXISTS (ou NOT EXISTS) permet d afficher des résultats à la requête principale, soit : pour la commande EXISTS : si aucun enregistrement ne répond à la sous requête contrôlée par la commande EXISTS, la requête principale ne retourne aucun résultat ; pour la commande NOT EXISTS : aucun enregistrement ne doit répondre à la sous requête contrôlée par la commande NOT EXISTS pour que la requête principale retourne des résultats. Autrement dit : la requête impliquant la commande EXISTS permet de déterminer si un enregistrement, caractérisé par son identifiant, se retrouve à la fois dans la table de la sous requête et dans celle de la requête principale. Notons qu une même table peut également être employée, dans la requête et la sous requête, s il s agit de retrouver un sous-ensemble d enregistrements de cette table répondant à certains critères dans la requête principale et à d autres dans la sous requête ; Cécile GASS juillet

15 la requête impliquant la commande NOT EXISTS permet de déterminer si un enregistrement, caractérisé par son identifiant, est dans la table de la requête principale mais pas dans celle de la sous requête. Notons qu une même table peut également être employée, dans la requête et la sous requête, s il s agit de retrouver un sous-ensemble d enregistrements de cette table répondant à certains critères dans la requête principale mais ne remplissant pas d autres conditions exprimées dans la sous requête. La sous requête avec la commande (NOT)EXISTS forme généralement l une des conditions vérifiées par le mot réservé WHERE d une requête quelconque. Exemples de requêtes utilisant la commande (NOT)EXISTS La requête suivante utilise la commande NOT EXISTS ; elle retrouve les lecteurs qui n appartiennent encore à aucun groupe : SELECT e.empr_cb, e.empr_nom, e.empr_prenom FROM empr AS e WHERE NOT EXISTS (SELECT * FROM empr_groupe AS eg WHERE e. id_empr=eg. empr_id); La commande EXISTS pourrait aussi être utilisée pour constituer un panier avec les descripteurs du thesaurus qui font l objet d un voir aussi, p.e. pour s assurer que la réciproque est également vraie (i.e., si une relation voir aussi est ajoutée au descripteur A vers le descripteur B ; le descripteur B a-t-il aussi une relation voir aussi vers le descripteur A?). Notons que PMB a amélioré la gestion des relations voir aussi dans le thesaurus depuis sa version 2.2 : aujourd hui, le bibliothécaire a la possibilité d imposer qu une relation voir aussi ajoutée à un descripteur devienne réciproque ; il suffit, dans la définition de ce descripteur, de cocher la petite case se trouvant en regard de la définition d une relation voir aussi, comme le montre l écran reproduit ci-dessous : La requête suivante retrouve tous les descripteurs du thesaurus pour lesquels une relation voir aussi a été définie : SELECT c.num_noeud, c.libelle_categorie FROM categories AS c WHERE EXISTS (SELECT * FROM voir_aussi AS v WHERE c.num_noeud=v.num_noeud_orig); La sous-requête SELECT Une requête comportant une sous requête SELECT ne vérifie plus seulement l existence d au moins un enregistrement vérifiant certaines conditions (comme dans les requêtes comportant la commande EXISTS), mais retrouve le ou les enregistrements (ou des champs particuliers de ces enregistrements) vérifiant les conditions définies dans la sous requête. Cécile GASS juillet

16 La sous requête SELECT, dont la syntaxe est la même que celle décrite dans la partie 3.2.1La commande SELECT, peut être utilisée partout où une colonne peut se retrouver, p.e. cela peutêtre une condition WHERE ou l un des résultats à afficher d une requête principale SELECT, la nouvelle valeur d une colonne dans une requête UPDATE, etc. Exemple de requêtes utilisant une sous requête SELECT Nous pourrions transformer les 2 requêtes qui nous avaient été nécessaires à la fin de la partie Les commandes join pour «remplacer la section des exemplaires dont le code barres commence par et ayant comme section Romans Jeunes par la section correspondant à Documentaires Jeunes» par une seule requête, qui ferait l inverse des deux requêtes précédentes (i.e. remplacement de la section Documentaires Jeunes par la section Romans Jeunes) : UPDATE exemplaires AS e SET e.expl_section= (SELECT ds1.idsection FROM docs_section AS ds1 WHERE ds1.section_libelle= 'Documentaires Jeunes') WHERE e.expl_cb like ' %'; 3.4 SQL : quelques fonctions d agrégat et autres fonctions avancées Un certain nombre de commandes ou fonctions peuvent également être utilisées dans les requêtes : des fonctions de regroupement ou de tri ; arithmétiques ; de traitement de chaînes de caractères, qui sont abordées ci-après Fonctions de regroupement ou de tri Fonction ORDER BY liste_colonnes DESC/ASC La fonction ORDER BY liste_colonnes DESC/ASC, ajoutée en fin de requête, classe les résultats, sur les colonnes, séparées par des virgules, successivement indiquées dans la liste_colonnes (i.e. : le classement se fait d abord sur la 1 ère colonne de la liste, puis, à valeurs égales de cette colonne, sur la seconde colonne de la liste, etc.). Si l option DESC (resp ASC) est utilisée, les résultats seront classés en ordre alphabétique / numérique descendant (resp ascendant) ; l option ASC est utilisée par défaut. Chaque colonne de la liste_colonne est susceptible d utiliser une option DESC/ASC différente (i.e. il est possible de classer les résultats de colonne1 en ordre ascendant ; et ceux de la colonne2, en ordre ascendant). Attention : pour pouvoir utiliser cette option, la requête doit obligatoirement faire afficher au minimum les colonnes indiquées dans la liste_colonnes liée à la fonction ORDER BY. Exemple de requête utilisant la fonction ORDER BY : la requête suivante affiche les noms et prénoms des lecteurs par ordre alphabétique inverse. SELECT empr_nom, empr_prenom FROM empr ORDER BY empr_nom DESC ; Fonction GROUP BY liste_colonnes La fonction ORDER BY liste_colonnes DESC/ASC, ajoutée en fin de requête, classe les résultats, sur les colonnes, séparées par des virgules, successivement indiquées dans la liste_colonnes (i.e. : le classement se fait d abord sur la 1 ère colonne de la liste, puis, à valeurs égales de cette colonne, sur la seconde colonne de la liste, etc.). Si l option DESC (resp ASC) est utilisée, les résultats seront classés en ordre alphabétique / numérique descendant (resp ascendant) ; l option ASC est utilisée par défaut. Chaque colonne de la liste_colonne est susceptible d utiliser une option DESC/ASC différente (i.e. il est Cécile GASS juillet

17 possible de classer les résultats de colonne1 en ordre ascendant ; et ceux de la colonne2, en ordre ascendant). Attention : pour pouvoir utiliser cette option, la requête doit obligatoirement faire afficher au minimum les colonnes indiquées dans la liste_colonnes liée à la fonction ORDER BY. Exemple de requête utilisant la fonction ORDER BY : la requête suivante affiche les noms et prénoms des lecteurs par ordre alphabétique inverse. SELECT empr_nom, empr_prenom FROM empr ORDER BY empr_nom DESC ; Fonction COUNT(nom_colonne) La fonction AVG calcule la valeur moyenne des valeurs de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction AVG : la requête suivante détermine l année de naissance moyenne des lecteurs encodés dans PMB. SELECT AVG(empr_year) FROM empr WHERE empr_year <> 0; Fonction HAVING (nom_colonne) La fonction AVG calcule la valeur moyenne des valeurs de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction AVG : la requête suivante détermine l année de naissance moyenne des lecteurs encodés dans PMB. SELECT AVG(empr_year) FROM empr WHERE empr_year <> 0; SELECT C1, C2, C3, COUNT (*) FROM TABLE WHERE C1= Value1 AND C2= Value2 AND C3= Value3 GROUP BY C1, C2, C3 SELECT C1, C2, C3, COUNT (*) FROM TABLE GROUP BY C1, C2, C3 HAVING COUNT (*) > 1 Cécile GASS juillet

18 3.4.2 Fonctions arithmétiques MySQL supporte quelques fonctions arithmétiques s appliquant aux colonnes de résultats des requêtes qui concernent des grandeurs mathématique ; les principales sont présentées ici. Attention : ces fonctions ne peuvent être combinées avec des noms de colonnes, car elles s appliquent sur des ensembles d enregistrements, il n est donc pas possible d accéder simultanément à une valeur calculée sur un ensemble d enregistrements, et aux valeurs individuelles de ces enregistrements. Fonction MAX(nom_colonne) La fonction MAX affiche la valeur la plus grande de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction MAX : la requête suivante détermine l année de naissance du plus jeune lecteur fréquentant la bibliothèque. SELECT MAX(empr_year) FROM empr WHERE empr_year <> 0; Fonction MIN(nom_colonne) La fonction MIN affiche la plus petite valeur de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction MIN : la requête suivante détermine l année de naissance du lecteur le plus âgé qui fréquente la bibliothèque. SELECT MIN(empr_year) FROM empr WHERE empr_year <> 0; Fonction AVG(nom_colonne) La fonction AVG calcule la valeur moyenne des valeurs de la colonne nom_colonne des enregistrements répondant à la requête. Exemple de requête utilisant la fonction AVG : la requête suivante détermine l année de naissance moyenne des lecteurs encodés dans PMB. SELECT AVG(empr_year) FROM empr WHERE empr_year <> 0; Fonction SUM(nom_colonne) La fonction SUM additionne les valeurs de la colonne nom_colonne des enregistrements répondant à la requête Traitement de chaînes de caractères MySQL supporte quelques fonctions permettant de faire du traitement de chaînes de caractères s appliquant aux colonnes de résultats des requêtes qui concernent des chaînes de caractères. Certaines sont présentées ici ; le lecteur est invité à consulter le manuel de MySQL pour une liste exhaustive de ce type de commandes. Fonction CONCAT(liste_colonnes) La fonction CONCAT(liste_colonnes) affiche les valeurs concaténées des colonnes, séparées par des virgules, de la liste_colonnes des enregistrements répondant à la requête. Exemple de requête utilisant la fonction CONCAT : la requête suivante concatène les noms et prénoms des lecteurs dont les noms commencent par la lettre s : SELECT CONCAT(empr_nom, empr_prenom) FROM empr WHERE empr_nom like 's%'; Fonction SUBSTR(nom_colonne, pos_initiale, longueur) Cécile GASS juillet

19 La fonction SUBSTR(nom_colonne, pos_initiale, longueur) permet d extraire une partie de chaque valeur d une colonne nom_colonne, de type chaîne de caractères, répondant à une requête ; cette partie est déterminée par la position du 1 er caractère de la chaîne de caractère qu il faudra extraire de chaque valeur, et sa longueur (i.e. nombre de caractères). Exemple de requête utilisant la fonction SUBSTR : la requête suivante extrait 6 caractères de la chaîne concaténée des nom et prénom des lecteurs dont les noms commencent par la lettre s. Ceci pourrait p.e. permettre de créer des login : SELECT SUBSTR(CONCAT(empr_nom, empr_prenom), 1, 6) FROM empr WHERE empr_nom like 's%'; SUBSTR(nom_colonne, position_départ, longueur) retourne une sous-chaîne de caractères extraite de la colonne spécifiée à partir d'une position de départ et jusqu'à une certaine longueur. Pour SQL Server, la fonction se dénomme SUBSTRING. INSTR(nom_colonne, jeu_caractères, position_départ, nb_occurrence) recherche le jeu de caractères dans une colonne et retourne la position de la première lettre du jeu de caractères. Pour SQL Server, il est possible d'utiliser CHARINDEX ou PATINDEX (voir MSDN). LTRIM(nom_colonne, jeu_caractères) supprime les caractères situés à la gauche de la chaîne de caractères. RTRIM(chaine, jeu_caractères) supprime les caractères situés à la droite de la chaîne de caractères. LENGTH(chaine) LPAD(nom_colonne, longueur, caractère) remplit à gauche des valeurs de la colonne un certain nombre du caractère indiqué pour arriver à la longueur voulue. RPAD(nom_colonne, longueur, caractère) remplit à droite des valeurs de la colonne un certain nombre du caractère indiqué pour arriver à la longueur voulue. Select o.type, Rtrim (o.name), u.name From sysobjects o, sysusers u Where type = "P" And o.uid = u.uid And o.name Like 'avi%' Order By 1, 2, 3; SELECT SE.CUSTOMER_ACCOUNT FROM SERVICES SE WHERE substring((convert (char(5), SE.CUSTOMER_ACCOUNT)),2,2)="41" select (right(('00000' + rtrim(convert(char(5), CALL_PRIM_MSISDN_NDC))),5)), (right((' ' + rtrim(convert(char(10), CALL_PRIM_MSISDN_SN))),10)), (right(('000000' + rtrim(convert(char(6), START_TIMESTAMP_TIME))),6)), Cécile GASS juillet

20 (right(('00' + rtrim(convert(char(2), REC_SEGMENT))),2)), (right(('000' + rtrim(convert(char(3), SEC_NUMB_CC))),3)), (right(('00000' + rtrim(convert(char(5), SEC_NUMB_NDC))),5)), (right((' ' + rtrim(convert(char(10), SEC_NUMB_SN))),10)), (right(('000000' + rtrim(convert(char(6), ACTUAL_AIR_DUR))),6)) from CEC_PAR_BEF where START_TIMESTAMP_DATE= order by CALL_PRIM_MSISDN_NDC, CALL_PRIM_MSISDN_SN, START_TIMESTAMP_TIME, REC_SEGMENT, SEC_NUMB_CC, SEC_NUMB_NDC, SEC_NUMB_SN 3.5 Pour aller plus loin à propos de (My)SQL wiki Introduction SQL maintenu sur le site de PMB ; il répertorie des cours SQL de base et avancés : ; SQL sur Wikipedia en français : et en anglais (un peu plus complet) : ; didacticiel SQL : ; manuel MySQL5.0 téléchargeable en PDF fr.pdf et en général, le site Cécile GASS juillet

Base de données relationnelle et requêtes SQL

Base de données relationnelle et requêtes SQL Base de données relationnelle et requêtes SQL 1e partie Anne-Marie Cubat Une question pour commencer : que voyez-vous? Cela reste flou Les plans de «Prison Break»? Non, cherchons ailleurs! Et de plus près,

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1

Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1 Chap. 5 : Langage SQL (Structured Query Language) Pr. : Mohamed BASLAM Contact : baslam.med@gmail.com Niveau : S4 BCG Année : 2014/2015 1 Plan Généralités Langage de Définition des (LDD) Langage de Manipulation

Plus en détail

Chapitre 4 : Le langage SQL

Chapitre 4 : Le langage SQL Chapitre 4 : Le langage SQL Table des matières I) Introduction...2 II) Rappel...2 III) Gestion de la base de données...2 1) Création de la base de données...2 2) Modification de la base de données...2

Plus en détail

Informatique Initiation aux requêtes SQL. Sommaire

Informatique Initiation aux requêtes SQL. Sommaire cterrier.com 1/14 04/03/2008 Informatique Initiation aux requêtes SQL Auteur : C. Terrier ; mailto:webmaster@cterrier.com ; http://www.cterrier.com Utilisation : Reproduction libre pour des formateurs

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Base de donnée relationnelle. Exemple de table: Film. Exemple de table: Acteur. Exemple de table: Role. Contenu de la table Role

Base de donnée relationnelle. Exemple de table: Film. Exemple de table: Acteur. Exemple de table: Role. Contenu de la table Role IFT7 Programmation Serveur Web avec PHP Introduction à MySQL Base de donnée relationnelle Une base de données relationnelle est composée de plusieurs tables possédant des relations logiques (théorie des

Plus en détail

INITIATION AU LANGAGE SQL

INITIATION AU LANGAGE SQL ECOLE NATIONALE DES INGENIEURS DES TRAVAUX AGRICOLES DE BORDEAUX DEPARTEMENT ENTREPRISE ET SYSTEMES UNITE DE FORMATION INFORMATIQUE ET GENIE DES EQUIPEMENTS ~o~o~o~ INITIATION AU LANGAGE SQL Notes de cours

Plus en détail

I) Bases de données et tables :

I) Bases de données et tables : I) Bases de données et tables : Un S.G.B.D. est un outil pour organiser, stocker, modifier, calculer et extraire des infos. Une B.D.R. peut être considérée comme un ensemble de tables à 2 dimensions. Exemple

Plus en détail

FONCTIONS DE TRAITEMENT} COUNT

FONCTIONS DE TRAITEMENT} COUNT Nom Prénom Promotion Date Buhl Damien Année 1 Groupe 2 21 Janvier 2007 CER Prosit n 22 Mots-Clés : - Requête/Langage SQL Le langage SQL (Structured Query Language) est un langage de requêtes, il permet

Plus en détail

Formation à l utilisation des Systèmes de Gestion de Bases de Données Relationnelles. organisée avec la collaboration du

Formation à l utilisation des Systèmes de Gestion de Bases de Données Relationnelles. organisée avec la collaboration du Proyecto FAO COPEMED Universidad de Alicante Ramón y Cajal, 4 03001 - Alicante, España GCP/REM/057/SPA Web : www.fao.org/fi/copemed Tel : +34 96 514 59 79 Fax : +34 96 514 59 78 Email : copemed@ua.es Formation

Plus en détail

Memo : Fonctions SQL

Memo : Fonctions SQL Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Memo : Fonctions SQL I. Sélectionner des données Sélectionner toutes les colonnes de la table Séléctionner seulement

Plus en détail

LES REQUÊTES EN LANGAGE S.Q.L.

LES REQUÊTES EN LANGAGE S.Q.L. LES REQUÊTES EN LANGAGE S.Q.L. Une base de données contient un nombre important d informations. Ces informations sont organisées, mais pour être effectivement exploitables, il faut pouvoir sélectionner,

Plus en détail

Rudiments SQL pour Oracle BDA_RCS

Rudiments SQL pour Oracle BDA_RCS Rudiments SQL pour Oracle BDA_RCS 08-11-2014 1 La base de données Gestion des commandes 08-11-2014 2 Les noms de colonnes sont volontairement simplifiés 3 Ajout de nouvelles colonnes dans des tables qui

Plus en détail

Pour les débutants. langage de manipulation des données

Pour les débutants. langage de manipulation des données Pour les débutants SQL : langage de manipulation des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

Introduction au langage SQL

Introduction au langage SQL Introduction au langage SQL 1. Description SQL est un acronyme pour Structured Query Language qui a été conçu par IBM, et a succédé au langage SEQUEL. C est maintenant le langage le plus utilisé dans les

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

2 ème PARTIE : LE LANGAGE SQL

2 ème PARTIE : LE LANGAGE SQL 2 ème PARTIE : LE LANGAGE SQL PLAN : I. Le langage de manipulation des données II. Le langage de définition des données III. Administration de la base de données IV. Divers (HORS PROGRAMME) Introduction:

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble. Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables

Plus en détail

Le langage SQL (deuxième partie) c Olivier Caron

Le langage SQL (deuxième partie) c Olivier Caron Le langage SQL (deuxième partie) 1 Les requêtes de consultation Représente la majorité des requêtes 1 Les requêtes de consultation Représente la majorité des requêtes Encapsule complètement l algèbre relationnel

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Faculté de Sciences Économiques et de Gestion. Bases de données. Maîtrise de Sciences Économiques Année 2001-2002 Jérôme Darmont

Faculté de Sciences Économiques et de Gestion. Bases de données. Maîtrise de Sciences Économiques Année 2001-2002 Jérôme Darmont Faculté de Sciences Économiques et de Gestion Bases de données Maîtrise de Sciences Économiques Année 2001-2002 Jérôme Darmont http://eric.univ-lyon2.fr/~jdarmont/ Plan du cours I. Introduction II. Le

Plus en détail

Oracle Database 10g: Les fondamentaux du langage SQL I

Oracle Database 10g: Les fondamentaux du langage SQL I Oracle University Appelez-nous: +33 (0) 1 57 60 20 81 Oracle Database 10g: Les fondamentaux du langage SQL I Durée: 3 Jours Description Ce cours offre aux étudiants une introduction à la technologie de

Plus en détail

Introduction aux bases de données relationnelles

Introduction aux bases de données relationnelles Formation «Gestion des données scientifiques : stockage et consultation en utilisant des ases de données» 24 au 27 /06/08 Introduction aux ases de données relationnelles Christine Tranchant-Dureuil UMR

Plus en détail

Introduction aux bases de données

Introduction aux bases de données 1/73 Introduction aux bases de données Formation continue Idir AIT SADOUNE idir.aitsadoune@supelec.fr École Supérieure d Électricité Département Informatique Gif sur Yvette 2012/2013 2/73 Plan 1 Introduction

Plus en détail

Les requêtes de consultation. Ex. bibliothèque état de la base. Ex. bibliothèque état de la base. Consultation simple d'une table

Les requêtes de consultation. Ex. bibliothèque état de la base. Ex. bibliothèque état de la base. Consultation simple d'une table Les requêtes de consultation Représente la ma jorité des requêtes SQL (Deuxième partie) Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr Encapsule complètement l'algèbre relationnel Une

Plus en détail

UTILISER LE SERVEUR MYSQL...

UTILISER LE SERVEUR MYSQL... MySQL (pour Windows 9x) UTILISER LE SERVEUR MYSQL... 2 LANCER LE SERVEUR MYSQL... 2 ARRETER LE SERVEUR MYSQL... 3 TRAVAIL AVEC LA CONSOLE MYSQL... 3 CREATION / SUPPRESSION D'UN BASE... 3 UTILISER UN BASE...

Plus en détail

Formation à l utilisation de PMB, un logiciel libre. Cécile Gass

Formation à l utilisation de PMB, un logiciel libre. Cécile Gass Université libre de Bruxelles Formation à l utilisation de PMB, un logiciel libre Juillet 2007 Cécile Gass Plan de l exposé Bulletiner les périodiques Paniers et étagères Les lecteurs La circulation dans

Plus en détail

Module Com231A - Web et Bases de Données Notion 3 : SQL

Module Com231A - Web et Bases de Données Notion 3 : SQL Module Com231A - Web et Bases de Données Notion 3 : SQL Qu est ce qu une base de données? Introduction Une base de données est un ensemble d au moins un tableau contenant des données. Exemple : une base

Plus en détail

Les bases de données (suite) Support de cours Pascal Ballet

Les bases de données (suite) Support de cours Pascal Ballet Les bases de données (suite) Support de cours Pascal Ballet La saisie et l'impression des données Les formulaires de saisie Les formulaires de saisie jouent deux rôles importants : - la mise en forme des

Plus en détail

L2 sciences et technologies, mention informatique SQL

L2 sciences et technologies, mention informatique SQL Bases de données L2 sciences et technologies, mention informatique SQL ou : le côté obscure de la jolie théorie films titre réalisateur année starwars lucas 1977 nikita besson 1990 locataires ki-duk 2005

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE Cas Neptune hôtel Base de données et langage SQL Propriété Intitulé long Formation concernée Matière Notions Transversalité Présentation Description Neptune Hôtel. L interrogation d une base de données

Plus en détail

Chapitre 4 LE LANGAGE D INTERROGATION DE DONNÉES SQL

Chapitre 4 LE LANGAGE D INTERROGATION DE DONNÉES SQL Chapitre 4 LE LANGAGE D INTERROGATION DE DONNÉES SQL 1. Définitions Clause : mot-clé Requête : interrogation ou action structurée sur la BD Requête d interrogation composée de l ensemble des clauses :

Plus en détail

SEANCE 2 : REQUETES DE SELECTION & FORMULAIRES DE CONSULTATION

SEANCE 2 : REQUETES DE SELECTION & FORMULAIRES DE CONSULTATION SEANCE 2 : REQUETES DE SELECTION & FORMULAIRES DE CONSULTATION Année universitaire 20015-2016 Masters Économie Société - Finances Informatique appliquée SGBD Pierre-Henri GOUTTE La requête de sélection

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

1/39. I Langage d interrogation et modification des données (DML) I Langage de définition du schéma (DDL)

1/39. I Langage d interrogation et modification des données (DML) I Langage de définition du schéma (DDL) Introduction 1/39 2/39 Introduction Anne-Cécile Caron Licence MIAGE - BDD 2015-2016 A partir de l algèbre relationnelle s est construit un langage informatique permettant d interroger les données : SQL

Plus en détail

II. EXCEL/QUERY ET SQL

II. EXCEL/QUERY ET SQL I. AU TRAVAIL, SQL! 1. Qu est-ce que SQL?... 19 2. SQL est un indépendant... 19 3. Comment est structuré le SQL?... 20 4. Base, table et champ... 21 5. Quelle est la syntaxe générale des instructions SQL?...

Plus en détail

Création d un catalogue en ligne

Création d un catalogue en ligne 5 Création d un catalogue en ligne Au sommaire de ce chapitre Fonctionnement théorique Définition de jeux d enregistrements Insertion de contenu dynamique Aperçu des données Finalisation de la page de

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

Cours 2 : SQL Structured Query Language

Cours 2 : SQL Structured Query Language Cours 2 : SQL Structured Query Language SQL Langage permettant de définir, manipuler et contrôler les données d une BD relationnelle Objet d une norme de l Institut National Américain de Normalisation

Plus en détail

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie Cours Web Lionel Seinturier Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr Structured Query Language Langage de manipulation des données stockées dans une base de données interrogation/insertion/modification/suppression

Plus en détail

Révisions sur les Bases de données. Lycée Thiers - PC/PC*

Révisions sur les Bases de données. Lycée Thiers - PC/PC* Bases de données Architecture clients-serveur Architecture trois tiers Vocabulaire des BDD Algèbre relationnelle Création/modification d une table Commandes SQL de manipulation de tables Définition formelle

Plus en détail

Formation DEV4 : SQL - Conception & Mise en Oeuvre

Formation DEV4 : SQL - Conception & Mise en Oeuvre Synopsis Formation DEV4 : SQL - Conception & Mise en Oeuvre Le SQL (Structured Query Language) est le langage standard de manipulation de données. À ce titre, il est le pilier fondamental de la base PostgreSQL,

Plus en détail

Cours Web n o 7 MySQL et PHP

Cours Web n o 7 MySQL et PHP Introduction aux bases de données Cours Web n o 7 MySQL et PHP Sandrine-Dominique Gouraud (gouraud@lri.fr) Pierre Senellart (pierre@senellart.com) Semaine du 7 novembre 2005 S.-D. Gouraud, P. Senellart

Plus en détail

Chapitre IV. Les bases de données relationnelles en pratique : Langages d interrogation. Relation : ensemble ou multi-ensemble?

Chapitre IV. Les bases de données relationnelles en pratique : Langages d interrogation. Relation : ensemble ou multi-ensemble? Chapitre IV Les bases de données relationnelles en pratique : Langages d interrogation Relation : ensemble ou multi-ensemble? Un multi-ensemble (multiset) est une collection d éléments pour laquelle on

Plus en détail

SQL pour. Oracle 10g. Razvan Bizoï. Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-12055-9, ISBN 13 : 978-2-212-12055-4

SQL pour. Oracle 10g. Razvan Bizoï. Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-12055-9, ISBN 13 : 978-2-212-12055-4 SQL pour Oracle 10g Razvan Bizoï Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-12055-9, ISBN 13 : 978-2-212-12055-4 Ce guide de formation a pour but de vous permettre d'acquérir une bonne connaissance du

Plus en détail

Extrait du programme Information et Gestion pour les 2 spécialités de Première Sciences et Technologies de la Gestion

Extrait du programme Information et Gestion pour les 2 spécialités de Première Sciences et Technologies de la Gestion 1 Extrait du programme Information et Gestion pour les 2 spécialités de Première Sciences et Technologies de la Gestion 2.3- La base de données THÈMES SENS ET PORTÉE DE L ÉTUDE NOTIONS ET CONTENUS À CONSTRUIRE

Plus en détail

SQL : Dans les articles précédents vous avez acquis

SQL : Dans les articles précédents vous avez acquis Fiche technique SQL : les sous-requêtes Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont réalisées en SQL.

Plus en détail

1 Partie A : administration d une base de donnée à travers PhpMyAdmin

1 Partie A : administration d une base de donnée à travers PhpMyAdmin Ce TP se compose en 2 sections : une section de prise en main (sur ordinateur) et une section d exercice (sur papier) concernant l algèbre relationnelle. 1 Partie A : administration d une base de donnée

Plus en détail

FileMaker 12. Guide ODBC et JDBC

FileMaker 12. Guide ODBC et JDBC FileMaker 12 Guide ODBC et JDBC 2004-2012 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker et Bento sont des marques commerciales de

Plus en détail

SQL et Bases de données relationnelles. November 26, 2013

SQL et Bases de données relationnelles. November 26, 2013 November 26, 2013 SQL : En tant que langage d interrogation En tant que langage de mise à jour En tant que langage de définition de données Langages de requête Langages qui permettent d interroger la BD

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Requêtes S.Q.L. 1 Création des requêtes sous ACCESS

Requêtes S.Q.L. 1 Création des requêtes sous ACCESS Activité 15 Requêtes S.Q.L. Objectif Interroger une base de données avec des requêtes SQL. Fiche de savoir associée Ressource à utiliser Csi1Projets.pdf (Dossier 4) B.1.1.b. 1 En cliquant sur l'objet "Requêtes"

Plus en détail

ACCESS 2013. Système de Gestion de Bases de Données Relationnelles

ACCESS 2013. Système de Gestion de Bases de Données Relationnelles Access est un logiciel permettant de gérer des données en masse : une liste de clients ou de fournisseurs, un stock de produits, des commandes, des salariés, un club de tennis, une cave à vin, une bibliothèque,

Plus en détail

Bases de données (INF225), TELECOM ParisTech. TP PHP & MySQL

Bases de données (INF225), TELECOM ParisTech. TP PHP & MySQL Bases de données (INF225), TELECOM ParisTech TP PHP & MySQL Pierre Senellart (pierre.senellart@telecom-paristech.fr) Bogdan Cautis (bogdan.cautis@telecom-paristech.fr) Ioana Ileana (ioana.ileana@telecom-paristech.fr)

Plus en détail

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs, relations,

Plus en détail

Interrogation de bases de données avec le langage SQL

Interrogation de bases de données avec le langage SQL Web dynamique avec PHP et MySQL Interrogation de bases de données avec le langage SQL C. Sirangelo & F. Tort Interroger une base avec SQL Interroger une base de données: extraire des données de la base

Plus en détail

SQL : Dans l article précédent sur le langage de manipulation

SQL : Dans l article précédent sur le langage de manipulation SQL : extraire des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont réalisées en SQL. Dans cet article,

Plus en détail

Jusqu à 14 h : Open Questions! On vous explique ce que vous n avez pas compris lors de la première formation.

Jusqu à 14 h : Open Questions! On vous explique ce que vous n avez pas compris lors de la première formation. Bienvenue! Jusqu à 14 h : Open Questions! On vous explique ce que vous n avez pas compris lors de la première formation. Téléchargez les logiciels nécessaires pour cette formation : http ://formation-web.via.ecp.fr

Plus en détail

Les bases de données Page 1 / 8

Les bases de données Page 1 / 8 Les bases de données Page 1 / 8 Sommaire 1 Définitions... 1 2 Historique... 2 2.1 L'organisation en fichier... 2 2.2 L'apparition des SGBD... 2 2.3 Les SGBD relationnels... 3 2.4 Les bases de données objet...

Plus en détail

Vulnérabilités logicielles Injection SQL

Vulnérabilités logicielles Injection SQL MGR850 Hiver 2014 Vulnérabilités logicielles Injection SQL Hakima Ould-Slimane Chargée de cours École de technologie supérieure (ÉTS) Département de génie électrique 1 Plan SQL Injection SQL Injections

Plus en détail

Web dynamique. Techniques, outils, applications. (Partie C)

Web dynamique. Techniques, outils, applications. (Partie C) Web dynamique Techniques, outils, applications (Partie C) Nadir Boussoukaia - 2006 1 SOMMAIRE 1. MySQL et PHP (20 min) 2. SQL (petits rappels) (20 min) 2 MySQL et PHP Synthèse 3 MySQL et PHP SGBD MySQL

Plus en détail

2012-2013 INTRODUCTION PRESENTATION :

2012-2013 INTRODUCTION PRESENTATION : TP1 : Microsoft Access INITITIATION A ACCESS ET CREATION DE TABLES INTRODUCTION Une base de données est un conteneur servant à stocker des données: des renseignements bruts tels que des chiffres, des dates

Plus en détail

MySQL. Plan. François Gannaz. 1 Introduction : MySQL à grands traits Qu est-ce? Le modèle relationnel. 2 Conception d une base de donnée relationnelle

MySQL. Plan. François Gannaz. 1 Introduction : MySQL à grands traits Qu est-ce? Le modèle relationnel. 2 Conception d une base de donnée relationnelle p. 1 MySQL François Gannaz Grenoble INP Formation Continue Plan p. 2 1 Introduction : MySQL à grands traits Qu est-ce? Le modèle relationnel 2 Conception d une base de donnée relationnelle 3 Administration

Plus en détail

Partie I du TD 1 au TD 5. Bases de données et MySQL -

Partie I du TD 1 au TD 5. Bases de données et MySQL - Système d information http://www.agroparistech.fr/systeme-d-information.html Partie I du TD 1 au TD 5 - Bases de données et MySQL - Liliana Ibănescu liliana.ibanescu@agroparistech.fr UFR d informatique

Plus en détail

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

Le language SQL (2/2)

Le language SQL (2/2) Les commandes de base sous Unix SQL (Première partie) Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr Création d'une base ([] facultatif) : createdb nombase [ -U comptepostgres ] Destruction

Plus en détail

INTRODUCTION AUX BASES DE DONNÉES

INTRODUCTION AUX BASES DE DONNÉES INTRODUCTION AUX BASES DE DONNÉES Najib TOUNSI Cours à l'usage des premières années informatique Najib TOUNSI - 1 - SOMMAIRE Concepts de Bases Base de Données Système Gestion de Bases de Données Niveau

Plus en détail

4D - Référence SQL. Prise en main Utiliser le SQL dans 4D Commandes SQL Règles de syntaxe Transactions Fonctions Annexes

4D - Référence SQL. Prise en main Utiliser le SQL dans 4D Commandes SQL Règles de syntaxe Transactions Fonctions Annexes 4D - Référence SQL Prise en main Utiliser le SQL dans 4D Commandes SQL Règles de syntaxe Transactions Fonctions Annexes Prise en main Introduction Recevoir le résultat d'une requête SQL dans une variable

Plus en détail

SQL Les fondamentaux du langage (2ième édition)

SQL Les fondamentaux du langage (2ième édition) Introduction 1. Un peu d'histoire 11 2. Les normes SQL 12 3. Description rapide du modèle relationnel 14 3.1 Principaux concepts du modèle relationnel 15 3.2 Principales règles 16 4. Les opérateurs en

Plus en détail

Plan. Bases de données. Cours 1 : Généralités & rappels. But du cours. Organisation du cours. Polytech Paris-Sud. Apprentis 4 ème année

Plan. Bases de données. Cours 1 : Généralités & rappels. But du cours. Organisation du cours. Polytech Paris-Sud. Apprentis 4 ème année Plan Bases de données Polytech Paris-Sud Apprentis 4 ème année Cours 1 : Généralités & rappels 1.1 Avant-propos 1.2 Algèbre relationnelle kn@lri.fr http://www.lri.fr/~kn 2/18 But du cours Organisation

Plus en détail

LINQ to SQL. Version 1.1

LINQ to SQL. Version 1.1 LINQ to SQL Version 1.1 2 Chapitre 03 - LINQ to SQL Sommaire 1 Introduction... 3 1.1 Rappels à propos de LINQ... 3 1.2 LINQ to SQL... 3 2 LINQ to SQL... 3 2.1 Importer des tables... 3 2.1.1 Le concepteur

Plus en détail

SQL Requêtes simples. Outline ... A.D., S.B. Février 2013. .1 Introduction. .2 Requêtes mono-relation. .3 Requêtes multi-relations

SQL Requêtes simples. Outline ... A.D., S.B. Février 2013. .1 Introduction. .2 Requêtes mono-relation. .3 Requêtes multi-relations SQL Requêtes simples BD4 AD, SB Licence MASS, Master ISIFAR, Paris-Diderot Février 2013 BD4 (Licence MASS, Master ISIFAR, Paris-Diderot) SQL 1/19 Février 2013 1 / 19 Outline 1 2 Requêtes mono-relation

Plus en détail

TP de SQL. Premiers pas. Nom : Contrôle qualité : Observations : BTS IRIS MySQL TP 01. Analyse Codage Validation

TP de SQL. Premiers pas. Nom : Contrôle qualité : Observations : BTS IRIS MySQL TP 01. Analyse Codage Validation Nom : TP de SQL Premiers pas Contrôle qualité : 3 Conception et Analyse Schéma de la base Normalisation (si vue en cours) Non-normalisation (si vue en cours) Analyse Codage Validation 4 - Vérifications

Plus en détail

MODE OPERATOIRE OPENOFFICE BASE

MODE OPERATOIRE OPENOFFICE BASE MODE OPERATOIRE OPENOFFICE BASE Openoffice Base est un SGBDR : Système de Gestion de Base de Données Relationnelle. L un des principaux atouts de ce logiciel est de pouvoir gérer de façon efficace et rapide

Plus en détail

BD50. TP5 : Développement PL/SQL Avec Oracle SQL Developer. Gestion Commerciale

BD50. TP5 : Développement PL/SQL Avec Oracle SQL Developer. Gestion Commerciale Département Génie Informatique BD50 TP5 : Développement PL/SQL Avec Oracle SQL Developer Gestion Commerciale Françoise HOUBERDON & Christian FISCHER Copyright Avril 2007 Présentation de la gestion commerciale

Plus en détail

SQL Description des données : création, insertion, mise à jour. Définition des données. BD4 A.D., S.B., F.C., N. G. de R.

SQL Description des données : création, insertion, mise à jour. Définition des données. BD4 A.D., S.B., F.C., N. G. de R. SQL Description des données : création, insertion, mise à jour BD4 AD, SB, FC, N G de R Licence MIASHS, Master ISIFAR, Paris-Diderot Mars 2015 BD4 (Licence MIASHS, Master ISIFAR, Paris-Diderot) SQL 1/21

Plus en détail

Formation à l utilisation de PMB, un logiciel libre. Juillet 2007 Cécile Gass

Formation à l utilisation de PMB, un logiciel libre. Juillet 2007 Cécile Gass Université libre de Bruxelles Formation à l utilisation de PMB, un logiciel libre Juillet 2007 Cécile Gass Plan de l exposé PMB et moi! PMB, un logiciel au pays du libre Paramétrisation de PMB Les listes

Plus en détail

Introduction au Système de Gestion de Base de Données et aux Base de Données

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

Kit de survie sur les bases de données

Kit de survie sur les bases de données Kit de survie sur les bases de données Pour gérer un grand nombre de données un seul tableau peut s avérer insuffisant. On représente donc les informations sur différentes tables liées les unes aux autres

Plus en détail

Compte rendu d activité Fiche n 1

Compte rendu d activité Fiche n 1 Compte rendu d activité Fiche n 1 Alexandre K. (http://ploufix.free.fr) Nature de l activité Création d une base de connaissances avec PostgreSQL Contexte : Le responsable technique souhaite la mise en

Plus en détail

SQL (Première partie) Walter RUDAMETKIN

SQL (Première partie) Walter RUDAMETKIN SQL (Première partie) Walter RUDAMETKIN Bureau F011 Walter.Rudametkin@polytech-lille.fr Les commandes de base sous Unix Création d'une base ([] facultatif) : createdb nombase [ -U comptepostgres ] Destruction

Plus en détail

Table des matières PREAMBULE...I 1 L OUTIL SQL*PLUS... 1-1 2 L INTERROGATION DES DONNEES... 2-1 3 LES OPERATEURS LOGIQUES... 3-1

Table des matières PREAMBULE...I 1 L OUTIL SQL*PLUS... 1-1 2 L INTERROGATION DES DONNEES... 2-1 3 LES OPERATEURS LOGIQUES... 3-1 Table des matières PREAMBULE...I 1 L OUTIL SQL*PLUS... 1-1 Le langage SQL... 1-2 Le langage PL/SQL... 1-4 Qu'est-ce que SQL*Plus?... 1-5 Commandes SQL*Plus... 1-7 Variables de substitution... 1-15 La commande

Plus en détail

Document d'aide phpmyadmin et MySQL

Document d'aide phpmyadmin et MySQL Document d'aide phpmyadmin et MySQL GPA775 Base de données École de Technologie Supérieure 23 juin 2009 Ce document sert de guide de base pour travailler avec l'interface phpmyadmin (interface par un navigateur

Plus en détail

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

Université Paris 13 TP Base de données Année 2008-2009 Institut Galilée feuille 2 : requêtes SQL INFO1

Université Paris 13 TP Base de données Année 2008-2009 Institut Galilée feuille 2 : requêtes SQL INFO1 Université Paris 13 TP Base de données Année 2008-2009 Institut Galilée feuille 2 : requêtes SQL INFO1 Exercice 1 : requêtes simples Pour traiter de la vente par correspondance on considère la modélisation

Plus en détail

TP1 POSTG. Géomatique. Session TP1. p. 1

TP1 POSTG. Géomatique. Session TP1. p. 1 Certificatt Universitaire en Urbanisme et Développementt Durable Session Géomatique et Systèmes d Informations Géographique P POSTG GRESQL PO INSTALLATION OSTGIS QUANTUMGIS p. 1 Session Géomatique et Systèmes

Plus en détail

OI40: bases de données, TP 2

OI40: bases de données, TP 2 OI40: bases de données, TP 2 Frédéric Lassabe October 26, 2010 Ce TP requiert d avoir bien compris le TP précédent. 1 Sujet Lors de ce TP, il sera question d améliorer la base de données du TP précédent.

Plus en détail

Chapitre 4 : Partie3 LANGAGE DE MANIPULATION RELATIONNEL : S Q L

Chapitre 4 : Partie3 LANGAGE DE MANIPULATION RELATIONNEL : S Q L Chapitre 4 : Partie3 LANGAGE DE MANIPULATION RELATIONNEL : S Q L SQL (Structured Query Language) est le langage de manipulation des données relationnelles le plus utilisé aujourd hui. Il est devenu un

Plus en détail

NVU, Notepad++ (ou le bloc-note), MySQL, PhpMyAdmin. HTML, PHP, cas d utilisation, maquettage, programmation connaissances en HTML, PHP et SQL

NVU, Notepad++ (ou le bloc-note), MySQL, PhpMyAdmin. HTML, PHP, cas d utilisation, maquettage, programmation connaissances en HTML, PHP et SQL Prise en main de NVU et Notepad++ (conception d application web avec PHP et MySql) Propriétés Intitulé long Formation concernée Matière Présentation Description Conception de pages web dynamiques à l aide

Plus en détail

Techniques d optimisation standard des requêtes

Techniques d optimisation standard des requêtes 6 Techniques d optimisation standard des requêtes L optimisation du SQL est un point très délicat car elle nécessite de pouvoir modifier l applicatif en veillant à ne pas introduire de bogues. 6.1 Réécriture

Plus en détail

Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML

Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML Ce document est publié sous licence Creative Commons CC-by-nc-nd. Il ne peut ni être modifié, ni faire

Plus en détail