Informatique générale pour l ingénieur

Documents pareils
CREATION WEB DYNAMIQUE

Le langage SQL (première partie) c Olivier Caron

Bases de données relationnelles

Olivier Mondet

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

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

Les bases de données

Bases de Données relationnelles et leurs systèmes de Gestion

Les BASES de DONNEES dans WampServer

Langage SQL : créer et interroger une base

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

I4 : Bases de Données

PHP 5. La base de données MySql. A. Belaïd 1

TP Contraintes - Triggers

Création et Gestion des tables

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

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

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

Le Langage De Description De Données(LDD)

A QUOI SERVENT LES BASES DE DONNÉES?

TP3 : Creation de tables 1 seance

Cours SQL. Base du langage SQL et des bases de données

Bases de données élémentaires Maude Manouvrier

1. Base de données SQLite

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

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

I. MySQL : Serveur et SGBD

Rappel sur les bases de données

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

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

Information utiles. webpage : Google+ : digiusto/

SQL Historique

Objectifs du TP : Initiation à Access

Encryptions, compression et partitionnement des données

NF26 Data warehouse et Outils Décisionnels Printemps 2010

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

MODE OPERATOIRE OPENOFFICE BASE

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

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Bases de données. PTSI Lycée Eiffel. 28 février 2014

1/ Présentation de SQL Server :

16H Cours / 18H TD / 20H TP

A QUOI SERVENT LES BASES DE DONNÉES?

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

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Pratique et administration des systèmes

UML et les Bases de Données

Gestion de base de données

Windows Server 2008 R2

PROJET 1 : BASE DE DONNÉES REPARTIES

Dossier I Découverte de Base d Open Office

Compétences Business Objects

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Bases de données Outils de gestion

Vincent Augusto

Cours Bases de données

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Le Langage SQL version Oracle

Le langage SQL Rappels

Systèmes de Gestion de Bases de Données

Bases de Données Avancées

BTS/CGO P10 SYSTEME INFORMATION Année

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Présentation du module Base de données spatio-temporelles

Cours: Administration d'une Base de Données

Application web de gestion de comptes en banques

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

SQL MAP. Etude d un logiciel SQL Injection

OpenOffice Base Gestionnaire de Base de Données

FileMaker 13. Guide de référence SQL

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Nom de l application

Modélisation et Gestion des bases de données avec mysql workbench

PHP 4 PARTIE : BASE DE DONNEES

Java DataBaseConnectivity

Introduction aux Bases de Données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Structure fonctionnelle d un SGBD

Intégrité des données

BIRT (Business Intelligence and Reporting Tools)

INTRODUCTION : Données structurées et accès simplifié

OpenPaaS Le réseau social d'entreprise

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

MySQL / SQL EXEMPLES

1 Position du problème

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Transcription:

Informatique générale pour l ingénieur Introduction aux bases de données Partie I : Généralités - Organisation du stockage des données Introduction Un annuaire, le système Visiocolle qui gère les notes en CPGE dans notre lycée, ou le répertoire-client d une pizzeria, tous ces systèmes stockent une information riche, multiforme (nom, adresse, note, date...), et non hiérarchisée ( il est aussi important que de savoir que monsieur Gaston habite au 34 rue des boulets que de savoir madame Lucienne a commandé une Quatre fromage) Pour ce genre de situation, le stockage dans un tableur (c'est-à-dire avec une feuille de calcul comme dans Excel) n est pas la bonne façon d organiser les informations. En fait, on va répartir les informations entre différents tableaux (que l on appellera tables) que l on reliera entre eux. Pour gérer le stock d informations de façon transparente pour l utilisateur, on fera appel à un SGBD (Système de gestion de Base de Données). Cet outil est un ensemble de routines informatiques qui permettent d une part de structurer le stockage de l information et d autre part de créer des procédures d interrogation de la base de données. Il existe de nombreux SGBD (SQLite, MySQL, PostgreSQL ) qui, avec quelques nuances, fonctionnent tous sur un langage spécifique adapté aux bases de données le SQL (Structured Query Language). Ces systèmes ne fournissent pour la plupart que des outils rudimentaires pour interagir avec eux (on entre les commandes de manière textuelle en ligne de commande) aussi, pour en faciliter l utilisation, des interfaces graphiques ont été créées. Dans ce cours d introduction, le SGBD choisi sera SQLite et l interface graphique sera au choix soit l outil SQLite manager de Firefox.(version 0.8.0 ou supérieure) soit le petit logiciel Sqliteman. Dans un premier temps, on va s intéresser à l organisation du stockage de données (la structure de données) puis on s intéressera à la façon d interroger, d exploiter la base de données. I. Organisation des données : un peu de théorie a. Premières définitions Une base de données est un ensemble structuré de données informatiques dans lequel : - les données sont enregistrées sur un support permanent - chaque objet ou entité possède un identifiant unique Une base de données relationnelle est une base de données formée d un ensemble de tables. Une table est un ensemble de p-ulplets Les éléments p-ulplets sont appelés des attributs (on dit aussi champs). Chaque attribut est d un type particulier (entier, texte ). Le domaine de l attribut est le domaine de définition de l attribut (exemple pour un entier non nul c est N*) Remarque : Reprise de ces définitions avec un vocabulaire plus mathématiques 1 : 1 Pour ceux qui voudraient lire des mathématiques associées aux bases de données. 1

On appelle schéma S d une relation, l expression qui spécifie la forme du p-uplet : S = (A1,..,Ap) où les attributs Ai sont distincts deux à deux. On pourra noter S = ((A1,dom(A1),..,(Ap,dom(Ap))) pour rappeler les domaines de définition des différents attributs. On appelle relation (= table ) un ensemble fini de p-uplets de dom(a1) x x dom(ap). Les éléments de la relation sont appelées des valeurs de la relation ce qui s appelle aussi des enregistrements dans le vocabulaire des utilisateurs de bases de données. Leur nombre est appelé le cardinal de la relation. b. Exemple Voyons un exemple pour fixer les idées. Fuxendi a ouvert une filiale de vente de pizza à distance Pizzafuxa. On se propose de réaliser sa base de données. La table clients est l annuaire des clients de Pizzafuxa. Table clients numcli nom tel adresse ville codepostal On a, dans cette table, 6 attributs. nom est une chaine de caractère tel, adresse, ville aussi. (remarque : éviter les accents et les caractères spéciaux) codepostal est un entier numcli est par exemple un entier qui donne le numéro du client c. Définitions complémentaires Dans une table on doit pouvoir retrouver facilement un enregistrement à l aide de la valeur d un ou plusieurs de ses attributs. On appelle clé d une relation un sous ensemble minimal d attributs qui donne accès à un et un seul enregistrement de la table. Exemple : le nom du client ne suffit pas pour retrouver un client donné, plusieurs familles de la même ville pouvant avoir le même nom de famille. Le couple nom,prénom, lui, fournit une quasi-clé qui fonctionne dans la plupart des cas. (mais c est pas parfait il reste le cas des homonymes ) S il est nécessaire de combiner plusieurs attributs de la table pour faire une clé on dit que cette clé est composite. C est une situation qu on essaie d éviter. clé primaire : c est une clé choisie parmi tous les clés possibles. (Les clés non primaires sont secondaires) identifiant : une clé primaire formée avec un attribut unique. Il est recommandé de le choisir comme non sémantique c'est-à-dire introduit dans la table au seul fin d être une clé. C est ce qui a été fait avec l attribut numcli. Un autre exemple est votre numéro INSEE. clé étrangère : c est une clé qui fait référence à la clé primaire d une autre table de la base. Par exemple dans notre base Pizzafuxa il y aura une table commandes dont l un des attribut sera le numcli de la table clients ; cet attribut sera pour la table commande une clé étrangère. Une étape importante de la mise en place d une base de données est sa conceptualisation c'est-à-dire la détermination de la façon la plus pertinente de répartir les informations entre plusieurs tables. Il existe des méthodes pour rationnaliser cette conceptualisation mais elles relèvent d un cours avancé et ne seront pas abordées ici. 2

II. Création pratique d une base de données Dans un premier temps, on pourrait travailler en ligne de commande mais ce n est pas convivial et en pratique on travaille avec une interface graphique. Pour nous, nous utiliserons au choix Sqilteman ou SQLite Manager. Les instructions SQL à écrire sont les mêmes quelque soit l interface ce qui change c est juste la présentation des menus et l affichage. A. Travail à travers Sqliteman 1. Création de tables Tout d abord, on crée une base de données pizzafux1.sqlite. par Fichier > Nouveau > puis on crée la base à l endroit voulu. Ici le Bureau. Vocab : les instructions SQL s appelle des requêtes. On va faire ici une requête de création de table. On crée ensuite la table clients en entrant la commande suivante dans la fenêtre SQL CREATE TABLE clients (numcli INTEGER PRIMARY KEY NOT NULL, nom VARCHAR(20), tel VARCHAR(10), adresse TEXT, ville VARCHAR(30), codepostal INTEGER) ; Rem : Si une instruction est trop longue on passe à la ligne par un retour chariot. Autre exemple plus étoffé 2 : CREATE TABLE clients ( id INTEGER PRIMARY KEY NOT NULL, nom VARCHAR (100), prenom VARCHAR(100), email VARCHAR(255), date_naissance DATE, pays VARCHAR(255), ville VARCHAR(255), code_postal VARCHAR(5), ) ; Voici des explications sur les colonnes créées : id : identifiant unique qui est utilisé comme clé primaire et qui n est pas nulle nom : nom de l utilisateur dans une colonne de type VARCHAR avec un maximum de 100 caractères au maximum prenom : idem mais pour le prénom email : adresse email enregistré sous 255 caractères au maximum date_naissance : date de naissance enregistré au format AAAA-MM-JJ (exemple : 1973-11-17) pays : nom du pays de l utilisateur sous 255 caractères au maximum ville : idem pour la ville code_postal : 5 caractères du code postal 2 Récupéré sur le site : http://sql.sh jetez un œil, il ya de bons exemples.. 3

2. Remplissage d une table Apres avoir créé une table, il faut la remplir. L insertion de données dans une table s effectue à l aide de la commande INSERT INTO.. VALUES. Cette commande permet au choix d inclure une seule ligne à la base existante ou plusieurs lignes d un coup. Insertion d une ligne à la fois Pour insérer des données dans une base, il y a 2 syntaxes principales : 1) Insérer une ligne en spécifiant toutes les colonnes La syntaxe pour remplir une ligne avec cette méthode est la suivante : INSERT INTO table VALUES ('valeur 1', 'valeur 2',...) ; Cette syntaxe possède les avantages et inconvénients suivants : Obliger de remplir toutes les données, tout en respectant l ordre des colonnes Il n y a pas le nom de colonne, donc les fautes de frappe sont limitées. Par ailleurs, les colonnes peuvent être renommées sans avoir à changer la requête L ordre des colonnes doit rester identique sinon certaines valeurs prennent le risque d être complétée dans la mauvaise colonne Rentrons par cette méthode le premier client INSERT INTO clients VALUES (1, Guillo', 0612349875, 34 rue des boulets, Paris,75015) ; 2) Insérer une ligne en spécifiant seulement les colonnes souhaitées Cette deuxième solution est très similaire, excepté qu il faut indiquer le nom des colonnes avant «VALUES». La syntaxe est la suivante : INSERT INTO table (nom_colonne_1, nom_colonne_2,... VALUES ('valeur 1', 'valeur 2',...); A noter : il est possible de ne pas renseigner toutes les colonnes. De plus, l ordre des colonnes n est pas important. B. Travail à travers SQLite Manager On peut aussi travailler avec comme interface graphique l outil SQLite Manager que l on lance à partir de Firefox. 4

Insertion de plusieurs lignes à la fois 3 Il est possible d ajouter plusieurs lignes à un tableau avec une seule requête. Pour ce faire, il convient d utiliser la syntaxe illustrée par l exemple suivant qui continue le remplissage de notre table clients. INSERT INTO clients (numcli, nom, tel, adresse, ville, codepostal) VALUES (2, 'Roudier', '0123456789', '22 rue Cauchy', 'Paris',75019), (3, 'Curie', '0123498765', '33 Avenue du Parc', 'Sceaux',92123), (4, 'Zidane', '0199807120', '30 Place du Bresil', 'Paris', 75016), (5, 'Pridieu', '', '1 place Notre Dame', 'Paris', 75001) ; A noter : lorsque le champ à remplir est de type VARCHAR ou TEXT il faut indiquer le texte entre guillemet simple. En revanche, lorsque la colonne est un numérique tel que INTEGER on écrit directement. Ouvrons notre base de données et prenons quelques minutes pour faire le tour des menus. Voila à quoi cela doit ressembler la table clients. En utilisant l interface, on va créer une table menu regroupant les caractéristiques des pizzas vendues. On utilise le menu Table > Créer une table. On adapte les réglages. 3 Cette fonctionnalité ne semble pas encore implémentée avec Sqliteman mais marche avec SQLitemanager et en ligne de commande. 5

La requête SQL est alors automatiquement générée et exécutée après confirmation CREATE TABLE "menu" ("plaid" INTEGER PRIMARY KEY NOT NULL, "nompizza" VARCHAR(30), "desc" TEXT, "prix" REAL); Il n a plus qu à remplir toujours à l aide de l interface. (Une entrée = un enregistrement de la table) Voyons tout d abord l ajout d une entrée unique Là aussi, la requête SQL est alors automatiquement générée et exécutée après confirmation L importation automatique de nombreuses données peut se faire à partir d un fichier texte. En effet, l interface permet de remplir facilement une table en important un fichier csv qui a la bonne structure. C est que nous allons faire. On a un fichier menu.csv qui contient les infos sur les pizzas proposées à la vente. On va successivement : 1. Détruire la table menu que nous venons de créer pour partir de zéro. Avec la commande SQL Ou avec l interface graphique DROP TABLE menu 6

2. Utilisons l Import Wizard (S il n apparait pas faire Base de données> Importer). On utilise le fichier menu.csv qui contient le menu. Les champs y sont séparés par des virgules et les entêtes = nom des attributs ne sont pas données (ce sont dans l ordre : plaid, nompizza, prix, desc). On entre les caractéristiques des attributs. (Attention on a changé l ordre de desc et de prix par rapport à la table menu précédente) Et hop!... c est fait. C. Problème des clés étrangères Voyons cela sur un exemple. On se propose de créer une dernière table : la table commande qui va contenir les commandes de pizzas faite par les clients. Cette table aura pour schéma Table commandes numcom cli piz date Domaine des attributs (= type) numcom : INTEGER clé primaire non null : cli est une clé etrangère qui renvoie à numcli de clients date: DATE le format retenu est le format anglosaxon AAAAMMJJ piz est une clé etrangère qui renvoie à plaid de menu 7

La syntaxe est la suivante : CREATE TABLE commandes ("numcom" INTEGER PRIMARY KEY NOT NULL UNIQUE, "cli" INTEGER, "piz" INTEGER, "date" DATE, FOREIGN KEY(cli) REFERENCES clients(numcli), FOREIGN KEY(piz) REFERENCES menu(platid)) On obtient ainsi le schéma relationnel de la base plaid nompizza desc prix numcom cli piz date numcli nom tel adresse ville codepostal D. Modification des tables 1. Modification de structure La commande ALTER TABLE en SQL permet de modifier une table existante. Il est ainsi possible d ajouter une colonne, d en supprimer une ou de modifier une colonne existante, par exemple pour changer le type. D une manière générale, la commande s utilise de la manière suivante: ALTER TABLE nom_table instruction Le mot-clé «insctruction» ici sert à désigner une commande supplémentaire, qui sera détaillée ci-dessous selon l action que l ont souhaite effectuer : ajouter, supprimer ou modifier une colonne. Exemples : a) L ajout d une peut s effectuer à l aide d une requête ressemblant à ceci: b) La suppression d une colonne dans une table 2. Modification de contenu ALTER TABLE nom_table ADD nom_colonne type_donnees ALTER TABLE nom_table DROP nom_colonne La commande UPDATE permet d effectuer des modifications sur des lignes existantes. Très souvent cette commande est utilisée avec WHERE pour spécifier sur quelles lignes doivent porter la ou les modifications. La syntaxe basique d une requête utilisant UPDATE est la suivante : 8

UPDATE nom_table SET nom_colonne_1 = nouvelle valeur WHERE condition Cette instruction permet d attribuer une nouvelle valeur à la colonne nom_colonne_1 pour les lignes qui respectent la condition stipulé avec WHERE. Il est aussi possible d attribuer la même valeur à la colonne nom_colonne_1 pour toutes les lignes d une table si la condition WHERE n était pas utilisée. A noter, pour spécifier en une seule fois plusieurs modifications, il faut séparer les attributions de valeur par des virgules. Ainsi la syntaxe deviendrait la suivante : UPDATE nom_table SET colonne_1 = valeur 1, colonne_2 = valeur 2, colonne_3 = valeur 3 WHERE condition Exemple : Pour changer les coordonnées de monsieur Roudier qui est parti en vacances. UPDATE clients SET adresse = '49 Rue des Gendarmes',ville='Saint-tropez', codepostal=83990 WHERE nom='roudier' Bilan à la fin de ce poly on doit avoir 3 tables Les tables clients et menu ressemblent à : 9