Bases de données Cours I

Documents pareils
COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

CREATION WEB DYNAMIQUE

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

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

Les BASES de DONNEES dans WampServer

1 Introduction et installation

Les bases de données

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

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

SQL Historique

Bases de données relationnelles

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

Langage SQL : créer et interroger une base

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

Olivier Mondet

Le langage SQL Rappels

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

Création et Gestion des tables

Rappel sur les bases de données

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

Le Langage De Description De Données(LDD)

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

1. Base de données SQLite

TP3 : Creation de tables 1 seance

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

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

Pratique et administration des systèmes

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

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

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

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

TP Contraintes - Triggers

Le Langage SQL version Oracle

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

I. MySQL : Serveur et SGBD

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

MySQL / SQL EXEMPLES

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Cours: Administration d'une Base de Données

FileMaker 13. Guide de référence SQL

A QUOI SERVENT LES BASES DE DONNÉES?

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Introduction aux Bases de Données 2004/2005

Devoir Data WareHouse

OpenPaaS Le réseau social d'entreprise

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

16H Cours / 18H TD / 20H TP

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

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

Vincent Augusto

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

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

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

Notes de cours : bases de données distribuées et repliquées

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

TD n 10 : Ma première Base de Données

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

Compétences Business Objects

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

Bases de données Outils de gestion

Bases de données élémentaires Maude Manouvrier

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

MODE OPERATOIRE OPENOFFICE BASE

BTS/CGO P10 SYSTEME INFORMATION Année

Bases de Données Avancées

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

Installation d'un serveur FTP géré par une base de données MySQL

PHP. PHP et bases de données

Objectifs du TP : Initiation à Access

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

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

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Cours Bases de données

Cours Bases de données 2ème année IUT

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Mysql avec EasyPhp. 1 er mars 2006

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Information utiles. webpage : Google+ : digiusto/

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

Application web de gestion de comptes en banques

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

Bases de données relationnelles & SQL

1/ Présentation de SQL Server :

Introduction à JDBC. Accès aux bases de données en Java

IFT3030 Base de données. Chapitre 1 Introduction

A QUOI SERVENT LES BASES DE DONNÉES?

Historisation des données

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

I4 : Bases de Données

Java DataBaseConnectivity

Bases de données Cours 4 : Le langage SQL pour ORACLE

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Transcription:

Cours I 2013/2014

Bases de données Architecture clients-serveur Architecture trois tiers Système de gestion de bases de données Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table Définition formelle Projection Sélection Fonction d agrégations

Architecture clients-serveur Architecture trois tiers Système de gestion de bases de données Base de données. Architecture clients-serveur Une base de donnée est le système permettant le stockage des données, de manière structurée, en général sur un serveur (ordinateur relié à un réseau, internet par exemple). Elle est conçue selon une architecture clients-serveurs : Le serveur reçoit des requêtes de clients pour : créer/modifier la base de donnée (seulement les administrateurs) Interroger la base de donnée (tous les utilisateurs autorisés).

Architecture clients-serveur Architecture trois tiers Système de gestion de bases de données Architecture deux-tiers Une base de donnée peut être conçue selon une architecture deux tiers. Le client envoie directement ses requêtes au serveurs qui y répond directement. ( tiers est un anglicisme signifiant niveau ou étage ). Mais pour plus de flexibilité, de sécurité et de performance, on utilise souvent un troisième niveau intermédiaire entre le client et le serveur, contenant l application qui formule au serveur les requêtes pour en retourner le résultat au client.

Architecture clients-serveur Architecture trois tiers Système de gestion de bases de données Architecture trois tiers C est l architecture trois tiers. Constituée des 3 niveaux (tiers) : 1. Le niveau utilisateur : c est la partie interface. Installée sur les ordinateurs clients. Elle permet de formuler les requêtes. L utilisateur n a qu un accès limité à la base de donnée. 2. Le niveau applicatif : c est la partie logicielle qui fait le lien entre les requêtes de l utilisateur client et le serveur de base de donnée. En général sur un serveur d application via un réseau. 3. Le niveau base de données : c est la partie logicielle qui résout les requêtes, gère de façon optimale les données et procède aux modifications. En général sur un autre serveur du réseau. Les 3 installations logicielles sont indépendantes.

Architecture clients-serveur Architecture trois tiers Système de gestion de bases de données Système de gestion de bases de données L accès à une base de donnée et sa gestion s effectuent à l aide d un système de gestion de bases de données (en abrégé SGBD). Il résout les requêtes et gère la BdD. La plupart des SGBD utilisent le même langage SQL : Structured Query Language (langage de requête structuré). Notamment : 1. Oracle. Logiciel propriétaire (Oracle corporation). Utilisé dans la gestion des grosses BdD d entreprise. 2. MySQL. Freeware, c est l un des systèmes de gestion de bases de données les plus répandus, notamment pour les sites web. On peut le coupler à PhpMyAdmin pour bénéficier d une interface graphique. Disponible à l adresse : https://www.mysql.fr. Installation(s) un peu laborieuse(s). 3. SQLite. Freeware. Pour la gestion de BdD de tailles limitées. Facile à installer, portable (interface graphique disponible). Parfait pour une utilisation domestique, notamment employé sur les applis smartphones. C est ce dernier SGBD que nous utiliserons.

Architecture clients-serveur Architecture trois tiers Système de gestion de bases de données Utilisation de SQLite Première solution logicielle (avec Interface graphique). Télécharger le logiciel portable DB SQLite browser sur : http://sqlitebrowser.org Deuxième solution utilisant une extension du navigateur internet Firefox (à télécharger ici). 1. Dans Firefox, cliquer sur : Outils/Modules complémentaires, 2. chercher puis installer l extension SQLite Manager. 3. Pour le lancer après installation, cliquer sur : Outils/SQLite Manager. Troisième solution : sous python, utiliser le module sqlite3. >>> import sqlite3 Non graphique, nécessite l utilisation d instructions. Cliquer ici pour accéder à un tutoriel concis. Ici pour l aide en ligne

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table Rappel du vocabulaire des BDD Une Base de donnée Une Table ou Relation Un schéma relationnel Un Attribut Un Enregistrement Une Clé La Clé primaire Une Clé secondaire est constituée de tables, contenant les données organisées selon un schéma relationnel. est un ensemble de données organisées vérifiant un même schéma relationnel. est une suite finie d attributs (colonnes d une table). définit la colonne d une table : nom (identifiant) et type. est un élément d une table (une ligne). est un ou plusieurs attributs donnant accès à un seul élément dans une table. est la clé choisie parmi toutes les clés possibles. est toute clé autre que la clé primaire

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table Théorie : algèbre relationnelle Une BDD est constituée de tables (ou relations) chacune définie par un schéma relationnel. Un schéma relationnel est une suite finie d attributs : S = (A 1, A 2,..., A p). Chaque attribut A i est doté d un type ; en SQL les types peuvent être : NULL, BOOLEAN, INT, INT(N), DECIMAL, DECIMAL(N), DECIMAL(N,M), FLOAT, FLOAT(N), VARCHAR, VARCHAR(N), DATE, YEAR, TIMES, etc... (SQLite comprend ces derniers mais ne stocke que sous les types suivants : NULL, INTEGER, REAL, TEXT, BLOB.) Chaque type définit le Domaine DOM(A i ) de l attribut A i, c est à dire l ensemble des valeurs qu il peut prendre. Une relation R(S) de schéma relationnel S = (A 1, A 2,..., A p), est un sous-ensemble fini du produit cartésien : DOM(A 1) DOM(A 2) DOM(A p) Une relation (ou table) est analogue à un ensemble mathématique à la différence près qu il est possible d avoir répétitions. C est possible grâce l usage d un identifiant clé : R(S) N DOM(A 2) DOM(A p).

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table Théorie : algèbre relationnelle On dit que deux relations ont le même schéma si ils ont même attributs (noms et types). e DOM(A 1) DOM(A 2) DOM(A p) est un enregistrement d une relation R(A 1, A 2,..., A p). Si A k est un attribut, alors e[a k ] désigne la valeur de l attribut A k dans l enregistrement e. Si K = {A 1,... A q} {A 1,... A p} est une sous-famille d attributs, on note e[k] le q-uplet (e[a 1],..., e[a q]) des valeurs dans e des attributs A 1,..., A q. Pour une relation T DOM(A 1) DOM(A 2) DOM(A p), une clé est un ensemble C d attributs, tels que pour tout couple e, e dans T : e[c] = e [C] e = e

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table Commandes SQL de manipulation de tables CREATE TABLE ma table DROP TABLE ma table ALTER TABLE nom... INSERT INTO ma table VALUES (...) DELETE FROM ma table WHERE... UPDATE Ak SET... WHERE... SELECT * FROM ma table SELECT A1,..., Ap FROM ma table SELECT... FROM... WHERE condition SELECT... ORDER BY Ak [DESC] SELECT... LIMIT n SELECT... LIMIT m, n Création d une table dans une BDD Suppression d une table d une BDD modification du schéma Ajout d un enregistrement Suppression d enregistrement Modification d enregistrement Afficher tous les enregistrements de la table ma table Projection : afficher certaines colonnes de la table ma table Sélection : sélectionne les enregistre- -ments vérifiant une condition Ordonner l affichage selon un attribut Limitation aux n premiers éléments Limitation aux éléments de m à n

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table Dans une base de donnée nommée classe : créons une table eleves ayant pour attributs : nom, prénom, adresse, telephone, date de naissance : CREATE TABLE eleves ( nom VARCHAR(20), prenom VARCHAR(18), adresse VARCHAR(50), telephone INT(10), naissance DATE ) Par défaut la valeur de chaque attribut est NULL.

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table On peut modifier la table, rajouter une colonne avec la deuxième langue vivante par exemple, avec ALTER TABLE... ADD... : ALTER TABLE eleves ADD langue VARCHAR(8) Ou rajouter pour clé primaire le couple (nom,prénom) (seulement en SQL) : ALTER TABLE eleves ADD PRIMARY KEY (nom, prenom) ALTER TABLE... avec ADD, MODIFY, DROP et RENAME TO.

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table Ajout d enregistrement Ajoutons des enregistrement à la table : 1. A l aide de l instruction INSERT INTO... VALUES 2. A l aide de l instruction INSERT INTO... SELECT... FROM...

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table On peut alors afficher la table : SELECT * FROM eleves Pour supprimer un enregistrement d une table : DELETE FROM eleves WHERE nom = Charron Pour modifier un attribut d un enregistrement d une table : UPDATE eleves SET naissance = 1994-12-11 WHERE nom = Charron

Rappel du vocabulaire des BDD Algèbre relationnelle Commandes SQL de manipulation de tables Création/modification d une table Pour changer le nom d une table : ALTER TABLE... RENAME TO... ALTER TABLE eleves RENAME TO liste eleves Pour ajouter une colonne à la table : ALTER TABLE... ADD... [AFTER] ALTER TABLE eleves ADD sexe VARCHAR(1) AFTER prenom ajoute une colonne d attribut sexe, d un caractère, après (AFTER) l attribut prenom. Pour modifier le nom d une colonne de type INT(10) (renommage) : ALTER TABLE eleves CHANGE telephone tel INT(10) Pour changer le type d une colonne : ALTER TABLE eleves MODIFY tel VARCHAR(10) Pour supprimer une colonne : ALTER TABLE eleves DROP COLUMN attribut

Définition formelle Projection Sélection Fonction d agrégations Opérateurs unaires : projection et sélection Soit une relation (table) r(a 1, A 2,..., A p). Projection suivant un sous-ensemble d attribut : Soit X {A 1, A 2,..., A p} un sous-ensemble des attributs. La projection de la relation r suivant X est : π X (r) = {e[x ]; e r} On demande aussi à la projection d effacer les doublons. Sélection par une propriété : Si on se donne une propriété (ou prédicat) P, la sélection (ou restriction) de la relation r par la propriété P est : σ P (r) = {e r ; e satisfait P} Projection et sélection retournent une relation! Ce qui autorise les requêtes composées : SELECT... FROM (SELECT... FROM...)... Renommage : changer le nom d un attribut.

Définition formelle Projection Sélection Fonction d agrégations Projection : Pour projeter : SELECT DISTINCT attributs FROM SELECT DISTINCT nom, prénom FROM eleves projette la table eleves suivant les attributs nom, prénom. pour sauvegarder les résultats dans une table en ordonnant par nom : CREATE TABLE t (nom VARCHAR(20), prénom VARCHAR(18)) ; INSERT INTO t SELECT nom, prénom FROM eleves ORDER BY nom

Définition formelle Projection Sélection Fonction d agrégations Sélection : Pour sélectionner : SELECT... FROM... WHERE... SELECT * FROM eleves WHERE anniversaire > 1995-01-01 Sélection de toutes les lignes des élèves nés au plus tôt en 1995. SELECT nom, prenom FROM eleves WHERE naissance > 1995-01-01 AND nom LIKE C% Sélection des noms et prénoms des élèves nés après 1995 dont le nom commence par un C.

Définition formelle Projection Sélection Fonction d agrégations Sélection : Pour sélectionner : SELECT attributs FROM table WHERE conditions Les conditions peuvent être constituées : 1. Opérateurs de comparaison : =, <, >, <=, etc... 2. Connecteurs logiques : AND, OR, NOT, XOR et parenthèses. 3. Prédicat ensemblistes : EXISTS(), IN() 4. Expressions régulières : LIKE chaine de caractère, avec : 4.1 remplace n importe quel caractère 4.2 % remplace n importe quelle chaîne de caractère 5. Expressions régulières étendues : RLIKE chaine de caractère, avec : 5.1. remplace n importe quel caractère 5.2 x* remplace n importe quel nombre de fois le caractère x ;.* remplace n importe quelle chaîne de caractères. 5.3 [abc] remplace l un des caractères entre crochets ; [a-z] remplace n importe quelle lettre minuscule ; [0-9] remplace n importe quel chiffre. On peut aussi ajouter : ORDER BY attribut [DESC] ou LIMIT [m,] n en fin de commande pour ordonner/limiter les résultats.

Définition formelle Projection Sélection Fonction d agrégations Fonctions d agrégations Les principales fonctions d agrégation : COUNT AVG MIN MAX SUM pour compter le nombre d enregistrements distincts d une table valeur moyenne d une colonne de type numérique d une table valeur minimale d une colonne de type numérique d une table valeur maximale d une colonne de type numérique d une table somme d une colonne de type numérique d une table Exemple : Compter les élèves (en paramètre les attributs à compter, les NULL ne sont pas comptabilisés) SELECT COUNT(*) FROM eleves

Définition formelle Projection Sélection Fonction d agrégations Fonctions d agrégations Avec l opération d agrégation obtenu par la commande GROUP BY réunissant toutes les lignes ayant un même attribut : SELECT COUNT(naissance) FROM eleves GROUP BY YEAR(naissance) (la commande YEAR extrait l année d une date), on compte le nombre d élèves par année de naissance. SELECT YEAR(naissance), COUNT(naissance) FROM eleves GROUP BY YEAR(naissance) donne un résultat plus lisible : En SQLite il faut remplacer YEAR(naissance) par : strftime( %Y, naissance)

Définition formelle Projection Sélection Fonction d agrégations Créons une nouvelle table dans notre BDD contenant les notes des élèves : CREATE TABLE notes(nom VARCHAR(20), prenom VARCHAR(18), math INT(2), physique INT(2), francais INT(2), anglais INT(2)) Que l on remplit ensuite. La moyenne en maths s obtient par la requête : SELECT AVG(math) FROM notes La moyenne générale de la classe s obtient par la requête : SELECT (AVG(math)+AVG(physique)+AVG(francais)+AVG(anglais)) / 4 FROM notes

Définition formelle Projection Sélection Fonction d agrégations On affiche la moyenne générale d un élève par : SELECT nom, (math+physique+francais+anglais)/4 FROM notes WHERE nom = Dumas Et la moyenne générale des élèves par la requête : SELECT nom, (math+physique+francais+anglais)/4 FROM notes Ou encore, pour un résultat plus esthétique : SELECT nom, (math+physique+francais+anglais)/4 AS moyenne FROM notes

Définition formelle Projection Sélection Fonction d agrégations A l aide des tables eleves et notes et d une requête composée retourner le nom et numéro de téléphone des élèves n ayant pas la moyenne générale : SELECT nom, telephone FROM eleves WHERE nom IN (SELECT nom FROM notes WHERE (math+physique+francais+anglais)/4 < 10) Retourner le nom et numéro de téléphone des élèves ayant au moins une note inférieure à la moyenne : SELECT nom, telephone FROM eleves WHERE NOT(nom IN (SELECT nom FROM notes WHERE math>= 10 AND physique >= 10 AND francais >= 10 AND anglais >=10))

Utilisation du module sqlite3 sous python Création/connection d une BdD : import sqlite3 # Connection à une base de donnée (ou création d une nouvelle bdd): bdd = sqlite3.connect( ma Base De Donnee.sqlite ) # Ou création dans la RAM : bdd = sqlite3.connect( :memory: ) Requêtes SQL : b = bdd.cursor() # Création d un curseur b.execute("select * FROM ma table WHERE nom = dubois ") b.fetchone() # retourne UN résultat b.execute("select * FROM ma table") b.fetchall() # Retourne la liste de TOUS les résultats. Exécution d un script SQL (suite de requêtes) : # requ^ete SQL b.executescript(""" SELECT * FROM ma table WHERE nom = dupond ; SELECT * FROM ma table WHERE nom = durand ; """)

Utilisation du module sqlite3 sous python Pour une exécution automatique : b.execute("create TABLE table2 (prénom TEXT, nom TEXT, age INT)") enregistrements = [ ( paul, durand, 23), ( andré, durand, 44)] b.executemany("insert INTO table2 VALUES (?,?,?)", enregistrements) Pour enregistrer les modifications apportées : # Première solution : bdd.commit() # Deuxième solution : insérer les requ^etes dans : with bdd: b.executemany("insert INTO table2 VALUES (?,?,?)", enregistrements) Fermeture de la base : bdd.close() Avec tout ça, il est facile de programmer une petite interface utilisateur plus conviviale pour SQLite en python où l utilisateur saisit directement ses requêtes au prompt (avec quelques macro-commandes pour le chargement et l arrêt)...