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

Documents pareils
CREATION WEB DYNAMIQUE

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

Le Langage De Description De Données(LDD)

SQL Historique

Olivier Mondet

Langage SQL : créer et interroger une base

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

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

Bases de données relationnelles

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

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

I. MySQL : Serveur et SGBD

Création et Gestion des tables

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

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

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

Le langage SQL Rappels

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

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

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

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

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

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

Cours: Administration d'une Base de Données

Les BASES de DONNEES dans WampServer

1 Introduction et installation

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

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

Introduction aux Bases de Données 2004/2005

Encryptions, compression et partitionnement des données

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

FileMaker 13. Guide de référence SQL

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

TP Contraintes - Triggers

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

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

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

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

TP3 : Creation de tables 1 seance

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

Mysql avec EasyPhp. 1 er mars 2006

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

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Le Langage SQL version Oracle

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Gestion de base de données

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Historisation des données

MySQL / SQL EXEMPLES

1. Base de données SQLite

PHP 4 PARTIE : BASE DE DONNEES

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

I4 : Bases de Données

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

Les bases de données

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Pratique et administration des systèmes

1/ Présentation de SQL Server :

Systèmes de Gestion de Bases de Données

Devoir Data WareHouse

Application web de gestion de comptes en banques

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

A QUOI SERVENT LES BASES DE DONNÉES?

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

MySQL - Réplication. Fichiers de relais et de statut de la réplication. Mise en place de la réplication

BTS/CGO P10 SYSTEME INFORMATION Année

1 Position du problème

Présentation Windows Azure Hadoop Big Data - BI

Auto-évaluation Oracle: cours de base

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

A QUOI SERVENT LES BASES DE DONNÉES?

Objectifs du TP : Initiation à Access

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

OpenPaaS Le réseau social d'entreprise

Manuel de référence réduit de mysql (version 4.1.1) + "The MySQL C API" par Paul Dubois Licence Professionnelle Réseaux et Télécommunications Option

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

TP Bases de données réparties

Les déclencheurs. Version 1.0. Grégory CASANOVA

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

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

Compétences Business Objects

Gestion des utilisateurs et de leurs droits

Optimisations des SGBDR. Étude de cas : MySQL

PHP et les Bases de données - Généralités

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

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

Java DataBaseConnectivity

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

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

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

Sybase Adaptive Server Enterprise 15

Transcription:

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 ensembles) entre elles. Chaque table possède plusieurs attributs. Chaque ligne d une table est un ensemble de valeurs pour les mêmes attributs. IFT7 - Introduction à MySQL Exemple de table: Film Exemple de table: Acteur filmid titre Les Boys Cyrano de Bergerac Psycho Singing in the Rain annee 997 990 960 95 Le filmid permet d identifier chaque ligne de façon unique. acteurid 5 6 Nom Depardieu Messier Kelly Perkins Kidman Huard Prenom Gerard Marc Gene Anthony Nicole Patrick Naissance 98--7 97-08-6 9-08- 9-0-0 967-06-0 969-0-0 IFT7 - Introduction à MySQL IFT7 - Introduction à MySQL Exemple de table: Role Contenu de la table Role Cette table fait le lien entre les acteurs et les films. filmid acteurid Personnage Bob Cyrano de Bergerac Norman Bates Don Lockwood 6 Ti-Guy IFT7 - Introduction à MySQL 5 IFT7 - Introduction à MySQL 6

MySQL et MySQL AB MySQL - limitations MySQL est un serveur de base de données produit par MySQL AB qui peut, sous certaines conditions, être utilisé gratuitement (double licence). Nous utiliserons la version. Le site Web de référence est http://www.mysql.com La version. de MySQL dont nous nous servirons comporte plusieurs limitations Aucun subselect n est possible Pas de support pour des foreign key Pas de support pour des transactions Pas de trigger, view, stored procedure IFT7 - Introduction à MySQL 7 IFT7 - Introduction à MySQL 8 Connexion Connexion Le serveur MySQL est installé sur europa.iro.umontreal.ca et ne peut être accédé qu à partir du domaine iro.umontreal.ca. Votre nom d usager MySQL est le même que votre login Unix, le mot de passe initial est celui de la recette Unix initiale. IFT7 - Introduction à MySQL 9 Vous pouvez seulement créer des bases de données dont le nom débute par votre login suivi de _, par exemple dift7_cinema Personne à part vous (et l administrateur du serveur) ne possède de droits (même de consultation) sur vos bases de données. IFT7 - Introduction à MySQL 0 Ligne de commande mysql Connexion avec mysql mysql est le logiciel de prédilection pour interagir avec le serveur MySQL. Il est installé par défaut Il est créé et supporté par MySQL AB Il fonctionne sous tout système d exploitation D autres logiciels incluent PHPMyAdmin, mysqlcc, MySQL Administrator, IFT7 - Introduction à MySQL Afin que le client mysql puisse se connecter au serveur, vous devez lui donner le nom du serveur, votre nom d usager et votre login mysql -h europa.iro.umontreal.ca -u login -p Le système vous demandera alors votre mot de passe. IFT7 - Introduction à MySQL

Lister les bases de données Choisir une base de données show databases permet d afficher la liste de toutes les bases de données du serveur. Il y en a beaucoup donc, afin de trouver les vôtres, il vaut mieux spécifier que le nom de celles que vous cherchez commence par votre login show databases like dift7_% ; Afin de travailler avec une des bases de données, on utilise la commande use use dift7_cinema; La prochaine étape est d obtenir la liste des tables show tables; ou, comme précédemment show tables like %toto% ; IFT7 - Introduction à MySQL IFT7 - Introduction à MySQL La structure d une table Finalement, les données Afin de connaître la liste des colonnes d une table, on peut utiliser la commande describe nomdelatable; Et pour obtenir la commande SQL complète permettant de recréer la structure d une table show create table nomdelatable; La commande SQL SELECT permet d extraire les informations d une ou plusieurs tables. SELECT titre, annee FROM Film; Si on veut obtenir toutes les colonnes SELECT * FROM Film; IFT7 - Introduction à MySQL 5 IFT7 - Introduction à MySQL 6 Avant d aller plus loin Résultats distincts La casse n a pas d importance pour les mots clés SQL. Elle importe pour ce qui est des noms des tables! Les retours à la ligne à l intérieur d une commande ne servent qu à la lisibilité. Afin que le client envoie une commande au serveur, elle doit être terminée par ; (ou par \G) IFT7 - Introduction à MySQL 7 Dans la table Film, plusieurs films peuvent porter le même titre. SELECT titre FROM Film; retournera alors des duplicats. Si on ne souhaite pas obtenir de duplicats, il faut écrire SELECT DISTINCT titre FROM Film; IFT7 - Introduction à MySQL 8

Limiter les résultats de SELECT Ordonner les résultats de SELECT Les résultats retournés par SELECT peuvent être limités en utilisant WHERE SELECT titre, annee FROM Film WHERE annee = 997; SELECT * FROM Film WHERE titre LIKE P% ; ORDER BY ordonne les résultats. Les colonnes du tri n ont pas besoin d être affichées SELECT titre FROM FILM ORDER BY annee ASC; ORDER BY doit être utilisé après WHERE SELECT * FROM FILM WHERE annee=997 ORDER BY titre; IFT7 - Introduction à MySQL 9 IFT7 - Introduction à MySQL 0 Limiter - encore Limiter - exemple De grandes bases de données contiennent des centaines de millions d entrées. Il est inimaginable de toutes les afficher d une seule fois. Souvent, on n a besoin que des 00 premières (selon l ordre choisi). On peut alors utiliser LIMIT. Voici comment afficher les 5 premiers films (en ordre alphabétique) qui ont été tournés en 997 SELECT * FROM Film WHERE annee = 997 ORDER BY titre ASC LIMIT 5; IFT7 - Introduction à MySQL IFT7 - Introduction à MySQL Nombre de lignes Quelques fonctions utiles Si on n est pas vraiment intéressé au résultat d une requête, mais seulement au nombre de lignes qu elle retourne, il vaut mieux utiliser la fonction count (moins de transfert de données). SELECT COUNT(*) AS nombre FROM Film WHERE annee = 997; Afin de manipuler des chaînes de caractères, on peut utiliser (entre autres) LEFT(colonne, nbchr) RIGHT(colonne, nbchr) CONCAT(chaine, chaine) Dans la condition WHERE, on peut utiliser AND, OR, BETWEEN et ISNULL IFT7 - Introduction à MySQL IFT7 - Introduction à MySQL

Plusieurs tables dans une requête Plusieurs tables - suite Le FROM d une requête peut contenir plusieurs tables, séparées par des virgules. SELECT * FROM Acteur, Role Le résultat de la requête est alors le produit cartésien des deux tables. La plupart du temps, on ne veut obtenir que les lignes «reliées» des deux tables, et non pas le produit cartésien au grand complet. Il faut alors spécifier la relation dans le WHERE. SELECT * FROM Acteur, Role WHERE Acteur.acteurID=Role.acteurID; IFT7 - Introduction à MySQL 5 IFT7 - Introduction à MySQL 6 Plusieurs tables - ce n est pas fini Plusieurs tables - LEFT JOIN Dans certains cas, seulement les lignes reliées entre deux tables ne sont pas non plus le résultat souhaité. Que faire s il faut obtenir tous les éléments d une première table qui ne possèdent pas d entrée dans une autre, par exemple tous les acteurs qui n ont encore eu aucun role? La clause LEFT JOIN permet de retourner toutes les entrées d une première table avec, s il y a correspondance, les entrées d une deuxième, et NULL dans toutes les colonnes réservées à la deuxième table s il n y a pas de correspondance. IFT7 - Introduction à MySQL 7 IFT7 - Introduction à MySQL 8 LEFT JOIN - exemple Sauvegarde SELECT Acteur.* FROM Acteur LEFT JOIN Role ON Acteur.acteurID = Role.acteurID WHERE isnull(role.acteurid); Un LEFT JOIN est beaucoup plus lent à exécuter qu un lien direct. À n utiliser qu en cas de besoin. Avant de modifier les données dans les tables, mieux vaut savoir créer une sauvegarde! Le logiciel mysqldump est l utilitaire nécessaire. Il prend les mêmes arguments que le client mysql; de plus, on doit aussi spécifier le nom de la base de données à sauvegarder. IFT7 - Introduction à MySQL 9 IFT7 - Introduction à MySQL 0 5

Sauvegarde - côté pratique Insérer de nouvelles données La sauvegarde créée par mysqldump contient toutes les instructions SQL afin de recréer la base de données. mysqldump -h europa -u dift7 -p dift7_cinema > cinema.sql Pour restaurer mysql -h europa -u dift7 -p dift7_cinema < cinema.sql La commande INSERT permet d insérer de nouvelles données dans une table. On peut spécifier les valeurs à insérer ou utiliser le résultat d une requête. INSERT INTO Film(titre, annee) VALUES ( LES Boys, 997); INSERT INTO Film(titre, annee) SELECT titre, annee FROM Table; IFT7 - Introduction à MySQL IFT7 - Introduction à MySQL Effacer des données Modifier les données La commande DELETE sert à effacer des données. N oubliez pas le WHERE, sinon, la table est vide instantanément! Il n y a pas de poubelle, ni de undo DELETE FROM Acteur WHERE acteurid = ; On peut modifier les entrées d une table avec la commande UPDATE. De nouveau, mieux vaut ne pas oublier le WHERE UPDATE Acteur SET prenom = Gaston, naissance = 950-- WHERE acteurid = ; IFT7 - Introduction à MySQL IFT7 - Introduction à MySQL Créer la structure d une table Type de colonnes On crée la structure d une table avec la commande CREATE TABLE Il faut spécifier Le nom de la table Pour chaque colonne, son nom et le type de données Les clés (indices) IFT7 - Introduction à MySQL 5 Les types de colonnes les plus usuels VARCHAR(lon) chaîne de caractères de longueur variable INT un entier entre -7868 et 7867 SMALLINT un entier entre -768 and 767 DATE une date en format AAAA-MM-JJ IFT7 - Introduction à MySQL 6 6

Clés et indices Clés - suite Clé et indice sont des synonymes pour MySQL On se sert des clés pour Empêcher des duplicats Accélérer les recherches Il existe trois clés: clé primaire (primary key), clé unique (unique key) et la clé (key). IFT7 - Introduction à MySQL 7 Une table ne peut posséder qu une seule clé primaire. Une clé primaire est une clé unique particulière: la différence se situe au niveau du traitement des valeurs nulles. Une clé unique empêche les duplicats. Une clé sert à accélérer les recherches. IFT7 - Introduction à MySQL 8 Clés - quand les utiliser Création d une table - exemple Chaque table devrait avoir une clé primaire. Une colonne qui est souvent utilisée dans un WHERE devrait avoir une clé. Les clés utilisent de l espace disque et ralentissent les insertions (et parfois les modifications) il ne faut donc pas exagérer. IFT7 - Introduction à MySQL 9 CREATE TABLE Acteur ( acteurid INT(5) UNSIGNED NOT NULL AUTO_INCREMENT, nom varchar(0) NOT NULL, prenom varchar(0) NOT NULL, naissance DATE NOT NULL, PRIMARY KEY(acteurID), KEY nom(nom) ); IFT7 - Introduction à MySQL 0 Modifications de la structure Modifications de la structure On peut aussi modifier la structure d une table une fois qu elle a été créée Les commandes sont de la forme Effacer une colonne DROP COLUMN nomcolonne; Ajouter une clé ADD key(nomcol, nomcol); Ajouter une colonne ADD COLUMN nomcol VARCHAR(0) AFTER autrecol; IFT7 - Introduction à MySQL IFT7 - Introduction à MySQL 7