Mysql Introduction pratique

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Créer une base de données MySQL Et création de tables, enregistrements, interaction avec PHP.
Conception de Site Webs Interactifs Cours 9 Patrick Reuter
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 10 Patrick Reuter.
Le Modèle Logique de Données
Les fonctions.
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
MySQL pour booster votre site web PHP
LMD: Langage de Manipulation de Données
Développement d’applications web
AYARI Mejdi Formation 2121 * ISD * 1 tructured uery Anguage 2006.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Contrôles d'accès aux données
L’utilisation des bases de données
BASE DE DONNEES RELATIONNELLES
Les bases de données Cours assuré par: Mlle Smii imen
Chap 4 Les bases de données et le modèle relationnel
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
Modèle Logique de Données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
SQL Partie 3 : (LID : Langage d'interrogation de données)
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL PHILIPPE BANCQUART.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
MySQL Création des sites dynamiques
Manipulation des données Requêtes simples
1 CSI 2532 Lab3 6 Février 2012 Programmation avancée SQL.
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Introduction.
Chapitre 5 : Le langage SQL
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Présenté par COMTE Jeremy et DE LAZZARI Thomas Sommaire b Présentation générale b Include b Notion de variables b MySQL.
KIWAPP IS A B2B FULL-STACK APP-MANAGEMENT TOOL KIWAPP EN QUELQUES ETAPES Octobre 2014.
Comment stocke-t-on des données sur un site web ?
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Copyright  Oracle Corporation, All rights reserved. 19 Gestion des Privilèges.
 Requêtes MySQL en PHP Introduction
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Sélection de colonnes (la projection)
Cours SQL.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Les bases de données Séance 8 Jointures.
Séance /10/2004 SGBD - Approches & Principes.
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Cours n°2 Implémentation et exploitation
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
CONCEPTS BD - Synthèse journée 1 :
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
De Arnault Chazareix :
Bases de données : modèlisation et SGBD Séance 3.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Langage de manipulation de données (LMD)
Transcription de la présentation:

Mysql Introduction pratique Un SGBDR Un produit Libre sous GPL de Mysql AB Populaire http://www.mysql.com/

Concepts relationnels MCD Entité Association MLD Relation Attribut MPD Géré par le SGBDR

Algèbre relationnelle L’algèbre relationnelle regroupe toutes les opérations possibles sur les relations. Voici la liste des opérations possibles : Projection : on ne sélectionne qu’un ou plusieurs attributs d’une relation (on ignore les autres). Par exemple n’afficher que les colonnes nom et prénom de la table Personnes. Jointure : on fabrique une nouvelle relation à partir de 2 ou plusieurs autres en prenant comme pivot 1 ou plusieurs attributs. Par exemple, on concatène la table du carnet d’adresse et celle des inscrits à la bibliothèque en fonction du nom de famille (c’es typiquement du recoupement de fichiers). Sélection : on sélectionne tous les tuples ou bien seulement une partie en fonction de critères de sélection qui portent sur les valeurs des attributs. Par exemple n’afficher que les lignes de la table Personnes qui vérifient la condition suivante : le nom ne commence pas par la lettre ‘C’. Cette algèbre est facilement possible avec les commandes de MySQL (SELECT… FROM… WHERE…).

Projection nom prénom adresse téléphone Martin Pierre 7 allée des vers Personnes nom prénom adresse téléphone Martin Pierre 7 allée des vers 0258941236 Dupond Jean 32 allé Poivrot 0526389152 Marc 8 rue de l’octet 0123456789 On projette la table Personnes sur les colonnes nom et prénom. SELECT nom, prénom FROM Personnes nom prénom Martin Pierre Dupond Jean Marc

Jointure nom prénom adresse téléphone Martin Pierre 7 allée des vers Personnes Bibliothèque nom prénom adresse téléphone Martin Pierre 7 allée des vers 0258941236 Dupond Jean 32 allé Poivrot 0526389152 nom Dernierlivre Dupond Robinson Jospin Faust Martin Misère On joint les deux tables, grâce à la colonne nom. Et on combine cette jointure à une projection sur les attributs nom et dernierlivre. Attention à lever toute ambi-guïté sur les noms d’attribut dans le cas où deux tables possèdent des colonnes de même nom. SELECT Personnes.prénom, dernierlivre FROM Personnes, Bibliothèque WHERE Personnes.nom = Bibliothèque.nom prénom Dernierlivre Jean Robinson Pierre Misère

Sélection nom prénom adresse téléphone Martin Pierre 7 allée des vers Personnes nom prénom adresse téléphone Martin Pierre 7 allée des vers 0258941236 Dupond Jean 32 allé Poivrot 0526389152 Marc 8 rue de l’octet 0123456789 On ne sélectionne que les tuples dont l’attribut nom est égale à ‘Dupond’. SELECT * FROM Personnes WHERE nom = ‘’Dupond’’ nom prénom adresse téléphone Dupond Jean 32 allé Poivrot 0526389152 Marc 8 rue de l’octet 0123456789

TP 1 Connecter vous à la base Mysql:// Explorer la configuration Login : Pass : Explorer la configuration

Commandes SQL usuelles Show databases Create database Use base Create table table Show tables Describe table Insert into table values (‘…’, ‘…’)

TP 2 Exécuter les requêtes suivantes Chercher les personnes dont le nom est Dupond Chercher les livres écrits par Lopez Chercher les prénoms des personnes qui ont écrit ‘Titanic’

EasyPHP Environnement de développment incluant : Apache Mysql Php Outils d’administration http://www.easyphp.org/

TP 1 Installer EasyPhp Configurer les comptes Créer la base du projet

Exécution des requêtes sql Les requêtes peuvent être introduites dans l’outil « SQL » Faire attention à la syntaxe Pour afficher les enregistrements utiliser le lien « Afficher » Pour modifier la structure de la base utiliser le lien « Modifier »

TP 2 Charger des données de test dans votre base Tester quelques requêtes dont vous avez besoin pour le projet : Liste des utilisateurs Liste des machines Trouver la machine dont l’ip et xx.xx.xx.xx

Clé primaire (I) C’est l’identifiant de chaque enregistrement. Généralement un entier non signé Non nul NOT NULL pour le forcer à prendre une valeur de son Unique : ne pas permettre que deux enregistrement aient le même identificateur UNIQUE (id) Pour simplifier, on utilisera l’option PRIMARY KEY qui regroupe NOT NULL et UNIQUE en remplacement des deux dernières déclarations. Et pour finir, il faut signifier que cette valeur doit s’incrémenter automatiquement à chaque insertion d’un enregistrement grâce à l’option AUTO_INCREMENT.

Clé primaire (II) CREATE TABLE Personne ( id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, nom VARCHAR(40), ‘prénom’ VARCHAR(40), adresse TINYTEXT, ‘téléphone’ DECIMAL(10,0) ) Personnes Id nom prénom adresse téléphone 1 Dupond Marc 8 rue de l’octet 0123456789

Index (I) Permet de cherche un enregistrement plus rapidement dans la table Si on fait souvent la recherche sur un attribut : Select * from personne where codePostale = ‘75000’ Dans ce cas l’index sera créé sur l’attribut codePostale

Index (II) Syntaxe : INDEX index (liste des attributs) Exemple, pour créer un index sur les 3 premiers caractères seulement de l’attribut nom : INDEX idx_nom (nom(3)) Exemple, pour créer un index sur le couple (nom,’prénom’) : INDEX idx_nom_prenom (‘nom’,’prénom’)

Sélectionner des enregistrements (I) Pour extraire de votre base de données des informations, comme la liste des personnes de votre carnet d’adresse qui vivent à Paris. Syntaxe générale : SELECT [ DISTINCT ] attributs [ INTO OUTFILE fichier ] [ FROM relation ] [ WHERE condition ] [ GROUP BY attributs [ ASC | DESC ] ] [ HAVING condition ] [ ORDER BY attributs ] [ LIMIT [a,] b ] Exemple : SELECT nom,prénom FROM Personnes WHERE adresse LIKE ‘%paris%’

Sélectionner des enregistrements (II) Nom Description SELECT Spécifie les attributs dont on souhaite connaître les valeurs. DISTINCT Permet d’ignorer les doublons de ligne de résultat. INTO OUTFILE Spécifie le fichier sur lequel effectuer la sélection. FROM Spécifie le ou les relations sur lesquelles effectuer la sélection. WHERE Définie le ou les critères de sélection sur des attributs. GROUP BY Permet de grouper les lignes de résultats selon un ou des attributs. HAVING Définie un ou des critères de sélection sur des ensembles de valeurs d’attributs après groupement. ORDER BY Permet de définir l’ordre (ASCendant par défaut ou DESCendant) dans l’envoi des résultats. LIMIT Permet de limiter le nombre de lignes du résultats

Sélectionner des enregistrements (III) Procédons par étapes : Pour sélectionner tous les enregistrements d’une relation : SELECT * FROM relation Pour sélectionner toutes les valeurs d’un seul attribut : SELECT attribut FROM relation Pour éliminer les doublons : SELECT DISTINCT attribut FROM relation Pour trier les valeurs en ordre croissant : SELECT DISTINCT attribut FROM relation ORDER BY attribut ASC Pour se limiter aux num premiers résultats : SELECT DISTINCT attribut FROM relation ORDER BY attribut ASC LIMIT num Pour ne sélectionner que ceux qui satisfont à une condition : SELECT DISTINCT attribut FROM relation WHERE condition ORDER BY attribut ASC LIMIT num

Sélectionner des enregistrements (IV) 1 Relation de départ : SELECT * FROM Gens SELECT Nom FROM Gens Gens Nom Prenom Age Dupond Pierre 24 Martin Marc 48 Dupont Jean 51 Paul 36 Lionel 68 Chirac Jacques 70 2 Gens Nom Dupond Martin Dupont Chirac Gens Nom Dupond Martin Dupont Chirac 3 SELECT DISTINCT Nom FROM Gens

Sélectionner des enregistrements (V) 4 SELECT DISTINCT Nom FROM Gens ORDER BY Nom ASC Gens Nom Chirac Dupond Dupont Martin SELECT DISTINCT Nom FROM Gens ORDER BY Nom ASC LIMIT 2 Gens Nom Chirac Dupond 5 6 SELECT DISTINCT Nom FROM Gens WHERE Nom <> ‘Chirac’ ORDER BY Nom ASC LIMIT 2 Gens Nom Dupond

Requêtes de mise à jour Ajouter des enregistrements INSERT INTO table (liste des attributs) VALUES(liste des valeurs) Modifier un enregistrement UPDATE [ LOW_PRORITY ] table SET attribut=valeur, … [ WHERE condition ] [ LIMIT a ] Supprimer un enregistrement DELETE [ LOW_PRIORITY ] FROM table [ WHERE condition ] [ LIMIT a ] Supprimer une table DROP TABLE table Vider une table DELETE FROM table

Insertion La commande insert Syntax : INSERT INTO relation VALUES (liste complète et ordonnée des valeurs) Insérer plusieurs tuples à la fois INSERT INTO relation VALUES (liste valeurs), (liste valeurs), … Insérer des tuples en donnant les noms des attributs INSERT INTO relation (nom des attributs) VALUES (liste valeurs), (liste valeurs), … Exemple : INSERT INTO PERSONNES (nom, prenom) VALUES (‘Dupond’, ‘Julien’)

Modification UPDATE relation SET attribut=valeur, … [ WHERE condition ] [ LIMIT a ] Valeur est la nouvelle valeur Where : condition d’application LIMIT a : n’appliquer qu’aux a premiers tuples Exemple : UPDATE PERSONNE SET age=age+1 where nom=‘dupond’ limit 1

Supprimer DELETE FROM relation [ WHERE condition ] [ LIMIT a ] Supprimer les tuples qui vérifient la condition DELETE FROM Personnes supprime le contenu de la table personnes

Quelques fonctions http://dev.mysql.com/doc/refman/5.0/fr/index.html les opérateurs arithmétiques (+, -, *, /, %), les opérateurs binaires (<, << , >, >>, |, &), les opérateurs logiques qui retournent 0 (faux) ou 1 (vrai) (AND, OR, NOT, BETWEEN, IN), les opérateurs relationnels (<, <=, =, >, >=, <>). Les opérateurs et les fonctions peuvent êtres composés entre eux pour donner des expressions très complexes. Référence : reportez vous au manuel du SGBD http://dev.mysql.com/doc/refman/5.0/fr/index.html http://dev.mysql.com/doc/refman/5.0/fr/functions.html

Exemples SELECT nom FROM produits WHERE prix <= 100.5 SELECT nom,prénom FROM élèves WHERE age BETWEEN 12 AND 16 SELECT modèle FROM voitures WHERE couleur IN (‘rouge’, ‘blanc’, ’noir’) WHERE couleur NOT IN (‘rose’, ‘violet’)

Recherche avec motif Le mot clé LIKE permet de comparer deux chaînes. Le caractère ‘%’ est spécial et signifie : 0 ou plusieurs caractères. Le caractère ‘_’ est spécial et signifie : 1 seul caractère, n’importe lequel. L’exemple suivant permet de rechercher tous les clients sont le prénom commence par ‘Jean’, cela peut être ‘Jean-Pierre’, etc… : SELECT nom FROM clients WHERE prénom LIKE ‘Jean%’ Pour utiliser les caractères spéciaux ci-dessus en leur enlevant leur fonction spéciale, il faut les faire précéder de l’antislash : ‘\’. Exemple, pour lister les produit dont le code commence par la chaîne ‘_XE’ : SELECT * FROM produit WHERE code LIKE ‘\_XE%’

Fonctions mathématiques Description ABS(x) Valeur absolue de X. SIGN(x) Signe de X, retourne -1, 0 ou 1. FLOOR(x) Arrondi à l’entier inférieur. CEILING(x) Arrondi à l’entier supérieur. ROUND(x) Arrondi à l’entier le plus proche. EXP(x), LOG(x), SIN(x), COS(x), TAN(x), PI() Bon, là c’est les fonctions de maths de base… POW(x,y) Retourne X à la puissance Y. RAND(), RAND(x) Retourne un nombre aléatoire entre 0 et 1.0 Si x est spécifié, entre 0 et X TRUNCATE(x,y) Tronque le nombre X à la Yème décimale. SELECT nom FROM filiales WHERE SIGN(ca) = -1 ORDER BY RAND() Cet exemple affiche dans un ordre aléatoire le nom des filiales dont le chiffre d’affaire est négatif. A noter que : SIGN(ca) = -1  ca < 0

Fonctions de chaînes Fonction Description TRIM(x) Supprime les espaces de début et de fin de chaîne. LOWER(x) Converti en minuscules. UPPER(x) Converti en majuscules. LONGUEUR(x) Retourne la taille de la chaîne. LOCATE(x,y) Retourne la position de la dernière occurrence de x dans y. Retourne 0 si x n’est pas trouvé dans y. CONCAT(x,y,…) Concatène ses arguments. SUBSTRING(s,i,n) Retourne les n derniers caractères de s en commençant à partir de la position i.

Fonctions de dates et heures Description NOW() Retourne la date et heure du jour. TO_DAYS(x) Conversion de la date X en nombre de jours depuis le 1er janvier 1970. DAYOFWEEK(x) Retourne le jour de la semaine de la date x sous la forme d’un index qui commence à 1 (1=dimanche, 2=lundi…) DAYOFMONTH(x) Retourne le jour du mois (entre 1 et 31). DAYOFYEAR(x) Retourne le jour de l’année (entre 1 et 366). SECOND(x), MINUTE(x), HOUR(x), MONTH(x), YEAR(x), WEEK(x) Retournent respectivement les secondes, minutes, heures, mois, année et semaine de la date. SELECT titre FROM article WHERE (TO_DAYS(NOW()) – TO_DAYS(parution)) < 30 Cet exemple affiche le titre des articles parus il y a moins de 30 jours.

Fonctions à utiliser dans les GROUP BY Description COUNT([DISTINCT]x,y,…) Décompte des tuples du résultat par projection sur le ou les attributs spécifiés (ou tous avec ‘*’). L’option DISTINCT élimine les doublons. MIN(x), MAX(x), AVG(x), SUM(x) Calculent respectivement le minimum, le maximum, la moyenne et la somme des valeurs de l’attribut X. SELECT DISTINCT model FROM voiture GROUP BY model HAVING COUNT(couleur) > 10 Ici on affiche le palmarès des models de voitures qui proposent un choix de plus de 10 couleurs. Affichage de tous les clients. SELECT COUNT(*) FROM client SELECT DISTINCT produit.nom, SUM(vente.qt * produit.prix) AS total FROM produit, vente WHERE produit.id = vente.produit_idx GROUP BY produit.nom ORDER BY total Classement des produits par la valeur totale vendue.

Administration L’administration contient : La gestion des utilisateurs La gestion de groupes La gestion des droits par ressources et tables La gestion des connexions à distance + quelques aspects avancés

Gestion des utilisateurs Avec MysqlAdmin Fonction : Privilèges Fonctions de gestion : Ajouter un utilisateur Attribuer/modifier un mot de passe …

Comment gérer les utilisateurs et les droits Avec un outils automatique Graphique (EasyPhp, ..) Avec la commande mysqladmin Avec les commandes GRANT et REVOKE En manipulant la base mysql (plus délicat)

GRANT exemples du manuel mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost’ IDENTIFIED BY 'un_mot_de_passe' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%‘ IDENTIFIED BY 'un_mot_de_passe' WITH GRANT OPTION; mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost'; mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';

REVOKE REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON {tbl_name | * | *.* | db_name.*} FROM user [, user] ... REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...

TP Ajouter un utilisateur Lui donner un mot de passe

Connexion à distance Avec la commande mysql qui se trouve dans c:\Program Files\EasyPHP\mysql\bin\ Exemple mysql –unomutilisateur -p

Documentation http://dev.mysql.com/doc/refman/5.0/fr/adding-users.html (regarder le lien sur la PFP)